USBKEY全解析---概要介绍
前言USBKey简单的理解就是数字证书的容器,如果用杯子和水的关系就是:USBKEY是杯子、数字证书是水,USBKEY大部分人都见过,以前银行发的比较多,虽然名字各不相同:工行的叫u盾,农行称:K宝,样子都大差不差,例如下图:最近几年随着支付宝和微信的支付习惯,用户都不习惯带硬件产品(去介质化),银行端USBKEY使用人群越来越VIP化,...
前言
USBKey简单的理解就是数字证书的容器,如果用杯子和水的关系就是:USBKEY是杯子、数字证书是水,USBKEY大部分人都见过,以前银行发的比较多,虽然名字各不相同:工行的叫u盾,农行称:K宝,样子都大差不差,例如下图:
最近几年随着支付宝和微信的支付习惯,用户都不习惯带硬件产品(去介质化),银行端USBKEY使用人群越来越VIP化,因为VIP有大资金安全需求,个人端使用量逐年下滑;但在企业端USBKEY还有各种应用,不过中小企业使用UBSKEY面临如下的问题:
下面就开始我们的学习(唠嗑),所有的产品都是因为需求才诞生,那我们先了解哪些场景会用USBKEY:
USBKEY--使用场景
企业里面账户跟密码很容易就被别人记住,定期改密码又会增加记忆难度;用USBKEY增加双因子认证,USBKEY由使用人自行控制,安全性大大提高。但是,”常言”道:安全和便捷是孪生兄弟,相互依存又相互抵触,场景有了,让我们细化:
服务器登录普通用户接触比较少,一般都是服务器管理员使用,本地或远程插实现登录服务端,windows下用的是:智能卡登录,Linux、MAC用:PAM模块。
● 低安全登录需求(不涉及资金、合同)
也可以不用USBKEY,选择令牌、FIDO、甚至是“谷歌验证器”(毕竟币圈最爱)。
● 高安全登录需求(资金、合同)
涉及钱和法律的事,还是建议使用证书体系,毕竟这个是USBKEY最擅长的领域,也是最安全的体系(PKI公钥基础设施),有兴趣的同学自行研究。
最早使用的算法都是外国发明的,密码关系国家信息安全;所以中国建立了自己的专用SM算法,简称国密算法,由国密局推动,USBKEY作为安全代表自然也有对应的应用标准。
数据签名是USBKEY最核心的应用,这块的崛起源于2004国家建立的《电子签名法》,名字看起高大上,其实类似纸上签字画押,到了数字时代点击按钮确认有效,形式转换了性质没变,更简单有效。背后支撑的体系前面也提到了叫PKI,底层是一系列的密码原理和规范。
有了高大上的数据签名,中国的思想里面都是“认章不认人”,把红章加在电子合同里面成了领导们理所当然的需求,厂商也顺势推出各种高难度盖章形式:骑缝章,由此衍生出产业链,涉及:印章生产、印章管理、合同存证、法律援助等。
USBKEY核心是签名,附带应用是加解密;签名的数据本身是原文,比如签了一份电子合同,原文还是能被别人看到,有些敏感数据无法隐藏;敏感数据隐藏用加密,不过如果USBKEY丢了,解不开就抓瞎了;当然这么硬核的功能肯定有行业应用,应用最多的在招投标,招投标开标之前的金额等信息最为敏感,必须加密。
专利权有先申请原则,同样的专利先申请先获得,由此看出版本时间的重要性,由此衍生出时间戳应用,时间戳其实就是在签名内加上一个可信的时间,至于怎么证明自己的时间是可信的,这个需要厂家各显神通了。
这个应用场景,一般是两台或者多台服务器之间有交互,无需人员干预,但是又要保证SSL或者数据的安全,例如:银企直连,企业端在银行前置机插上USBKEY,实现跟银行安全通讯的同时还能保证重要资金签名,成本低的同时又比较安全。
总结:通过上面的场景启发,希望同学们能够找到适合自己的应用,基于密码的应用当前最有钱景的当属区块链,不过区块链的应用真的是一言难尽。
有了应用场景,下面就是选择哪一款产品的问题,了解产品之前,先看一下USB厂家为什么搞出这么多的产品线。
USBKEY--协议
协议本质就是双方约定的一种交互模式,USBKEY使用的时候,交互过程如下:
● 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实现
https://detail.tmall.com/item.htm?id=43707701734
https://detail.tmall.com/item.htm?id=43722580737
参考:https://blog.csdn.net/liujoi/article/details/106149928
参考:https://blog.csdn.net/liujoi/article/details/106158471
参考:https://blog.csdn.net/liujoi/article/details/106097071
4)时间戳
参考:https://blog.csdn.net/liujoi/article/details/106158501
参考:https://blog.csdn.net/liujoi/article/details/106158535
6)CRL
更多推荐
所有评论(0)