精锐5 身份认证“组件”(Virbox WebServer),是一个运行在用户计算机的本地 Web 服务(不需要访问互联网),提供 Web 接口访问精锐5加密锁,B/S 架构的 Web 应用只需在网页代码中嵌入调用接口(跨域访问)的代码即可访问加密锁、获取加密锁信息,实现身份认证功能。
不同于 COM 组件访问加密锁的方式,本产品提供的 Web 接口可用 JavaScript 调用,开发者不需要学习额外的技能即可完成功能集成,兼容市面主流的浏览器(IE、Chrome、360、Firefox 等)。
B/S 服务端:开发者 B/S 架构应用程序(网站)服务端,向用户提供服务。
浏览器(客户端):用户通过浏览器访问指定域名的网站,包括主流的浏览器:IE、Chrome、360安全浏览器、360极速浏览器、猎豹浏览器等。
Virbox WebServer:身份认证核心组件,提供访问加密锁的 Web 接口。
Virbox 用户工具:访问精锐5加密锁、云锁、软锁,提供抽象访问锁(含硬件锁、云锁、软锁)接口。
精锐5加密锁:身份认证的物理介质,锁内存有唯一的设备私钥,提供不可伪造的设备签名。每一把精锐5加密锁在出厂前由锁内安全芯片生成全球唯一密钥和证书,硬件具有不可复制、密钥不可导出的安全特性,让伪造认证变得更加困难。
注意:Virbox WebServer 无法直接与精锐5加密锁通信,需要通过 Virbox 用户工具间接访问加密锁,所以在软件运行环境部署时需要安装 Virbox WebServer (下载地址)和 Virbox 用户工具(下载地址)。
精锐5 身份认证的加密方案以加密锁设备唯一的私钥不可篡改、不可克隆为基础,使用加密锁私钥签名、加密锁公钥验签的方式进行验证。
B/S 服务端已保存发售的加密锁信息(外壳号、芯片号、设备证书)
当某一台客户端通过浏览器网页访问 B/S 服务端时,服务端首先校验客户端的合法性。
1.服务端记录客户端会话GUID
2.根据会话GUID + 随机数 + 当前的UTC时间组合生成验证数据,使用 Hash 算法计算验证数据的哈希结果,用于验证客户端的合法性。
3.服务端将校验数据返回给客户端,等待客户端使用本地的加密锁的私钥对验证数据的 Hash 结果进行签名,并将加密锁信息和验证签名结果返回给服务端。
4.服务端校验加密锁合法性。服务端检查客户端上传的加密锁信息(外壳号、芯片号)与数据库内容对比是否一致,验证加密锁的合法性。
5.服务端校验验证数据的合法性。服务端在确认加密锁合法后,使用加密锁的设备公钥验签私钥签名的合法性,只有当签名结果与验证数据完全一致时,表示当前客户端的加密锁有效。
用户通过客户端的浏览器网页访问 B/S 服务端某些业务功能,当 B/S 服务端需要验证客户端的合法性时,客户端需要将服务端返回的数据交给本地的精锐5硬件锁进行签名,然后将签名结果返回给服务端进行验证。
1.客户端通过 Virbox WebServer 接口获取加密锁信息(外壳号、芯片号、设备证书)。
2.客户端通过 Virbox WebServer 接口对服务端返回的认证数据进行加密锁私钥签名。
3.客户端将加密锁信息和加密锁私钥签名后的数据一起发给服务端进行校验审核。
在实现基础方案的基础上,B/S 服务端可以同时采用 用户名、密码 登录认证的方式,对客户端用户进行账号认证,与硬件加密锁认证结合实现双重认证。
当客户端需要进行某些特殊操作时,进行加密锁认证,认证通过后允许客户端执行业务功能。
精锐5身份认证的安全性由加密方案和精锐5硬件加密锁硬件两方面保证。
从上文中可以了解到 Virbox 身份认证,由服务端针对每一个客户端生成唯一、不可重放的认证数据,再通过网络交给客户端,客户端使用加密锁私钥对认证数据进行签名,最后客户端再将认证提交给 B/S 服务端在服务端进行认证检查。
认证数据的生成和签名结果校验在服务端完成,客户端使用加密锁私钥签名后的认证数据具有不可伪造的特性,无论 B/S 服务端与客户端通信使用 HTTPS 或 HTTP 协议,传输数据是明文或者密文,都不影响认证数据的安全性。
开发者只需保证 B/S 服务端生成的认证数据以下两个特点:
唯一性。每个客户端应该具有唯一的认证数据。
抗重放。认证数据只有单次有效,过期作废,验证完毕即刻清除,防止数据被重复利用。
开发者参照示例(web_server_test.html)将调用 Virbox WebServer 的 JS 代码集成到业务功能的网页中,并根据业务流程在适当的情况下触发相关接口调用即可。
深思向开发者提供 Virbox WebServer 和 用户工具的安装包,以及 Virbox WebServer 接口文档、示例代码(C#、Java)。
开发者需要参照深思提供的示例程序完成以下工作:
1.B/S 服务端生成认证数据,调用标准密码学接口实现公钥验签功能。
2.B/S 服务端根据加密方案提供数据存储和校验逻辑。
1)服务端需要实现账号密码登录功能和相关数据存储。
2)服务端需要记录正式发布的加密锁信息
3)客户端调用 Virbox WebServer 接口获取加密锁信息,提交给服务端。
1)服务端实现检查客户端加密锁数据有效性检查功能。
安装组件
在用户计算机需要安装以下组件
Virbox 用户工具 (身份认证)定制版,下载地址:点我下载。
部署验证
在用户计算机插入精锐5硬件锁
使用浏览器打开测试用例(web_server_test.html),点击 “查询 WebServer 版本号” ,返回当前认证服务版本号,如果未返回结果或提示错误,请根据常见问题进行排查。
浏览器 | 是否支持 | 备注 |
IE | 支持 | 支持版本:IE8、IE9、 |
Edge | 支持 | |
Chrome | 支持 | |
QQ浏览器 | 支持 | |
firefox | 支持 | HTTPS需要将证书加入信任列表 |
360 | 支持 | 360极速浏览器、360安全浏览器 |