根据 GM/T 0016-2012,每一个 Ukey 都被视为一个设备(device),在该设备内部可以包含多个应用(Application),在每个应用中,又可以包含多个容器(container)(注意:这里的容器是一个智能密码钥匙硬件中的特有概念,与 Docker 容器是两码事)。在每个容器中,可以存放两对公钥,一对用于加解密,另一对用于签名和验签。容器中还可以存放加密密钥对对应的加密数字证书、签名密钥对对应的签名数字证书。Ukey的内部结构可以用下面的示意图表示:
每当拿到一个 Ukey 后,总是希望知道这个 Ukey 内部信息,比如设备名是什么、包含哪些应用、每个应用中又包含哪些容器、容器的类型是什么。为此我用 C 语言写了一个命令行工具——智能密码钥匙查看器 UkeyViewer,使用它可以看到这个 Ukey 的内部信息。下载地址是:http://download.csdn.net/detail/henter/9752483 。由于下载的 zip 压缩文件中包含 exe 文件,作者也不能保证文件在上传后不会在服务器端遭到篡改,所以建议用户下载后先将 zip 文件上传到 http://www.virscan.org/ 上扫描一下,确认没有问题再运行。
在运行 UkeyViewer 之前,用户需要先手动配置 ukey_type_info.xml 文件,在其中填入当前计算机能支持的 Ukey 类型个数、每种类型 Ukey 的生产厂商名、驱动程序 dll 文件名。如果不知道驱动程序 dll 文件名,可以向 Ukey 生产厂商的技术人员咨询。目前程序中自带了一个 ukey_type_info.xml 示例文件。在该文件中,支持 3 种类型的 Ukey,并写明了每种 Ukey 的生产厂商名(当前以拼音表示)、驱动程序名。在一般情况下,用户不能直接使用这个示例文件,而是应先了解示例文件的内容极其含义,然后修改它,根据自己的实际情况填写 ukey_type_info.xml 文件中各项的值。
该程序运行后的结果示例如下:
1. 未插入 Ukey 时:
2. 插入一个 Ukey 时:
3. 插入两个 Ukey 时:
附加说明:
在 2 月 4 日发布这个小程序之后,近日又拿到了一个桃红色的文鼎创新型 Ukey,试验后发现其容器名长度超出了原先 32 个字节的上限。这说明原先设定的上限值太小,为了能让 UkeyViewer 也能够识别这种 Ukey,我对原来的程序做了一点小调整,把原先设置的一些上限修改如下:
1. Ukey 设备名长度不能超过 63 个字节;
2. 一个 Ukey 中最多只能包含 8 个应用;
3. Ukey 中的应用名长度不能超过 63 个字节;
4. 一个应用中最多只能包含 8 个容器;
5. 应用中的容器名长度不能超过 63 个字节。
这样就可以正确识别这种类型的 Ukey 了。我请 CSDN 网站管理员删除了原来资源的下载链接,重新上传了修改后的程序,并对博客内容也进行了更新。插入一个文鼎创新型 Ukey 后,用 UKeyViewer 查看的结果类似于下图: