前言

     USBKey简单的理解就是数字证书的容器,如果用杯子和水的关系就是:USBKEY是杯子、数字证书是水,USBKEY大部分人都见过,以前银行发的比较多,虽然名字各不相同:工行的叫u盾,农行称:K宝,样子都大差不差,例如下图:

     最近几年随着支付宝和微信的支付习惯,用户都不习惯带硬件产品(去介质化),银行端USBKEY使用人群越来越VIP化,因为VIP有大资金安全需求,个人端使用量逐年下滑;但在企业端USBKEY还有各种应用,不过中小企业使用UBSKEY面临如下的问题:

1   缺乏USBKEY和证书基本知识

2   预算不是很充足

3   项目周期较短

4   USBKEY使用量小

   希望通过本文通俗的讲解,解答客户如下的疑问:

        1) USBKEY适用在哪些业务?

        2)  项目周期多长?

        3)  费用高不高?

下面就开始我们的学习(唠嗑),所有的产品都是因为需求才诞生,那我们先了解哪些场景会用USBKEY:

                                          USBKEY--使用场景

1   登录

       企业里面账户跟密码很容易就被别人记住,定期改密码又会增加记忆难度;用USBKEY增加双因子认证,USBKEY由使用人自行控制,安全性大大提高。但是,”常言”道:安全和便捷是孪生兄弟,相互依存又相互抵触,场景有了,让我们细化:

1)登录用应用端?还是服务器上?

 应用端,用户打开应用,插上USBKEY登录,比较常见;

 服务器登录普通用户接触比较少,一般都是服务器管理员使用,本地或远程插实现登录服务端,windows下用的是:智能卡登录,Linux、MAC用:PAM模块。

                                                                                    (智能卡登录)

2)安全要求高不高?

   安全级别越高越复杂,请参考"常言",两种情况:

    ●  低安全登录需求(不涉及资金、合同)

     可以使用USBKEY私有算法实现,开发简单方便;

     也可以不用USBKEY,选择令牌、FIDO、甚至是“谷歌验证器”(毕竟币圈最爱)。

     ●  高安全登录需求(资金、合同)

    涉及钱和法律的事,还是建议使用证书体系,毕竟这个是USBKEY最擅长的领域,也是最安全的体系(PKI公钥基础设施),有兴趣的同学自行研究。

3)国密还是非国密?

    最早使用的算法都是外国发明的,密码关系国家信息安全;所以中国建立了自己的专用SM算法,简称国密算法,由国密局推动,USBKEY作为安全代表自然也有对应的应用标准。  

2     数据签名

       数据签名是USBKEY最核心的应用,这块的崛起源于2004国家建立的《电子签名法》,名字看起高大上,其实类似纸上签字画押,到了数字时代点击按钮确认有效,形式转换了性质没变,更简单有效。背后支撑的体系前面也提到了叫PKI,底层是一系列的密码原理和规范。

3    签章

      有了高大上的数据签名,中国的思想里面都是“认章不认人”,把红章加在电子合同里面成了领导们理所当然的需求,厂商也顺势推出各种高难度盖章形式:骑缝章,由此衍生出产业链,涉及:印章生产、印章管理、合同存证、法律援助等。

4    文档加密

     USBKEY核心是签名,附带应用是加解密;签名的数据本身是原文,比如签了一份电子合同,原文还是能被别人看到,有些敏感数据无法隐藏;敏感数据隐藏用加密,不过如果USBKEY丢了,解不开就抓瞎了;当然这么硬核的功能肯定有行业应用,应用最多的在招投标,招投标开标之前的金额等信息最为敏感,必须加密。

5    时间戳

     专利权有先申请原则,同样的专利先申请先获得,由此看出版本时间的重要性,由此衍生出时间戳应用,时间戳其实就是在签名内加上一个可信的时间,至于怎么证明自己的时间是可信的,这个需要厂家各显神通了。

6    服务端应用

    这个应用场景,一般是两台或者多台服务器之间有交互,无需人员干预,但是又要保证SSL或者数据的安全,例如:银企直连,企业端在银行前置机插上USBKEY,实现跟银行安全通讯的同时还能保证重要资金签名,成本低的同时又比较安全。

总结:通过上面的场景启发,希望同学们能够找到适合自己的应用,基于密码的应用当前最有钱景的当属区块链,不过区块链的应用真的是一言难尽。

 有了应用场景,下面就是选择哪一款产品的问题,了解产品之前,先看一下USB厂家为什么搞出这么多的产品线。

                                       USBKEY--协议

     协议本质就是双方约定的一种交互模式,USBKEY使用的时候,交互过程如下:

涉及2个协议:

1)USB传输协议:

             常见的USB协议优缺点:

       ●  hid :

              即插即用的,兼容性好、低速

       ●  pc/sc :

              微软自定义,单独安装驱动,适配智能卡登陆

       ●  ccid :

               新版本协议高速,兼容性略差,适配智能卡登陆           

        ●  scsi:

              光驱设备,自带安装程序

2)密码应用协议: 

       ●  CryptoAPI

              微软自定义一套协议,因为windows占有率很高,所以USBKEY都支持这个协议  

        ● PKCS#11

              linux和mac上用的,主要是服务端的应用场景,例如服务端交互 

         ●  SKF

              国家为了安全,启用SM系统算法,对应的制定了USBKEY使用国密规范

         ●  自定义

               有些行业,可能有更高的安全性考虑,定制了一套自定义规范,例如人社、税务等;底层的实现基于以上3个协议。

因为存在这么多的新老协议,每种协议优缺点不同,场景应用也不相同,厂家不可能在同一USBKEY实现所有USB协议和应用接口,所以厂家针对性的分类了产品,飞天诚信典型产品如下:

序号

产品

USB协议

应用协议

优点

1.          

ePass1000ND

HID

私有协议、其他不推荐

开发简单、兼容性好、免驱

2.          

ePass2000AUTO

SCSI

CryptoAPI、PKCS#11

自带管理工具、免驱

3

ePass3000

PCSC

CryptoAPI、PKCS#11

支持智能卡登录、高速

4

ePass3003

HID

CryptoAPI、PKCS#11

用户空间大、免驱、高速

5

ePass3000GM

SCSI

CryptoAPI、SKF

支持国密、高速

看到这里应该对USBKEY有了基本的认识,证书方面因本人对java比较熟悉,所以选择java实现证书的操作,java密码实现使用的是JCE框架,比较著名的开源包是BouncyCastle,补充很多JCE里面没有的加解密算法,这里就不在啰嗦了,下面将进入紧张刺激的实战环节。

                                        USBKEY--JAVA实现

开始之前让我们先准备一下环境:

1  准备USBKEY

         ●   epass1000ND 用于测试私有协议:

           https://detail.tmall.com/item.htm?id=43707701734

         ●   epass3003  用于测试证书功能:

           https://detail.tmall.com/item.htm?id=43722580737

2  准备java环境

3  测试内容:

    1)私有用法

          参考:https://blog.csdn.net/liujoi/article/details/106149928

    2)生产证书

          参考:https://blog.csdn.net/liujoi/article/details/106158471

    3)导入证书\签名\验证

           参考:https://blog.csdn.net/liujoi/article/details/106097071

    4)时间戳

          参考:https://blog.csdn.net/liujoi/article/details/106158501

    5)PDF签名

          参考:https://blog.csdn.net/liujoi/article/details/106158535

     6)CRL

           参考:https://blog.csdn.net/liujoi/article/details/106158571

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐