基于USB接口和智能卡的PKI 客户端设计
通过命令的方式实现的。实际上是通过命令对IC卡内文件的操作。增加功能即是增加文件,所以,下面着重就文件系统进行说明。
a.文件的空间结构
COS整个的文件空间划分如下:◆当建立完.MF之后,COS自动将整个EEPROM空间都分配给它。MF的文件头长度为13字节十文件名长度(5~16字节)。
◆每个DF所占空间=DF文件头空间(等同于MF)+DF下所有的文件空间之和。
◆二进制结构文件的空间=文件头空间(13字节)+EF所申请的空间。
◆定长记录和循环定长记录文件的空间=文件头空间(13字节)+记录数×记录长度。
◆变长记录结构文件的空间=文件头空间(13字节)+建立时申请的空间。
◆安全基本文件的空间一文件头空间(13字节)+密钥个数×(25字节)。
b.KEY文件及其文件中的密钥
每个DF或MF下有且只有一个KEY文件,在任何情况下密钥均无法读出。在KEY文件中可存放多个密钥,每个密钥为一条定长记录。记录中规定了其标识、版本、算法、属性及密钥本身等相关内容。
在满足KEY文件的增加权限时,可用Write KEY命令增加一条记录。只有在满足某个密钥的使用权限时才可以使用该密钥,在满足某个密钥的修改权限时才可以修改该密钥。
每种密钥具有其独立性,用于一种特定功能的密钥不可作为它用。本设计支持以下几种密钥:个人密码(PIN)、外部认证密钥、内部认证密钥、(Crypt密钥、PIN解锁密钥、PIN重装密钥、应用维护密钥等。
③ 安全体系。主要是对所传送的信息进行安全性的检查和处理,防止非法的窃听或侵入。安全体系包括3部分:安全状态、安全属性和安全机制。安全状态是指当前智能卡所处的一种系统状态,这种安全状态是在智能卡完成复位应答或完成某个命令后得到的;安全属性是智能卡执行特定的命令所需要的安全条件,只有满足了这个安全条件,命令才能执行;安全机制是指安全状态实现转移所采取的方法和手段,它是与安全状态和安全属性相联系的。
④ 命令解释。根据接收到的命令检查各项参数是否正确,执行相应的操作。
IC卡通过USB接口与终端之间使用命令与应答的通信机制,即终端,把命令送到1C卡,IC卡接收并处理后发送响应给终端。这种机制包括两种应用协议数据单元(APDU)——命令应用数据单元与响应应用数据单元。CLA字节代表命令的类型。
INS字节表示命令编码,P1和P2为具体命令参数。Lc字节表示数据的长度,只有一个字节表示,取值范围为1~115。如果Lc为0,表示没有数据域。
Le表示期望卡返回的数据长度,由单字节表示,取值范围为1~115。
响应应用数据单元也包括两部分:可能存在的响应数据体(应答体)和两个状态字节(应答尾部),其内容为
基于保密的原因,具体的命令代码和状态字节(SWl、SW2)的编码略。
(2)算法库的实现
算法库是一个根据不同需要可扩展的函数库。目前,算法库里有:
◆对称加密算法——DES算法、3DES算法、RC2、RC4算法;
◆摘要(散列值)算法——SHA一1算法、MD5算法;
◆非对称加密算法——RSA算法、DSA算法、ECC算法。
以上算法全部在设备内实现。
2.2.2 USB接口层的软件设计
USB接口层软件主要完成计算机主机和客户端设备之间的数据传输,完成主机与IC卡之间交互的命令及响应。一方面将主机来的USB信息包转换成符合IS07816--4标准的智能卡可识别的命令,另一方面,根据IS07816--4标准,将智能卡的响应数据转化成USB数据包,上传给主机。
在USB的初始化中,完成终端设备USB的自举过程。考虑到设备与计算机之间的数据交换具有数量少、传输速度不要求很高的特点,因而将其配置为HID类设备,实现在WIN2000、Win Me等环境下免安装驱动程序的特点。本设备使用了3个端点:端点0用于控制信息的传输,端点1用于接收主机发来的数据,端点3用于向主机发送数据。
USB的消息处理过程是:USB发出中断请求,单片机响应中断,首先查看各中断寄存器,找出产生中断的事件,然后处理。程序的设计主要集中在中断处理服务程序上。
上述2.2.1节和2.2.2节软件设计为PKI终端设备内软件设计,整个软件采用了Keil C51语言编写。与汇编相比,C语言在功能、结构、可读性、可维护性上有明显的优势。Keil C51提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。最后生成标准的HEX文件,以直接写入程序存储器,如Flash中。
2.2.3应用层软件设计
应用层(计算机主机)软件开发主要是提供底层API库函数,在此基础上实现CSP[4](Cryptographic Service Provider,加密服务提供者)软件设计,为用户提供符合微软加密服务要求的中间件。
应用程序不能直接与CSP进行通信。取而代之,应用程序通过调用由Advapi32.d11和
- 基于引言DSP平台的USB接口设计(11-30)
- 低成本USB接口密钥的设计方法(12-21)
- USB接口类型(12-15)
- C#实现USB接口的程序代码(12-14)
- USB接口的基础理论知识(12-14)
- USB接口标准及常用USB接口(12-13)