谈到USBkey工作原理,一般的USBkey的基本工作方式为:从上位主机接受一条命令,处理后将响应回送给上位主机。其处理过程为:传输管理、命令解释、核心功能、然后再由核心功能到命令解释再到传输管理。每条命令的处理都要经过上述模块,如果其中的任意一个模块再处理中发现错误都将返回相应的出错信息。以USB接口的USBkey为例,上位主机给设备上电之后,首先发送一条特定命令取走该设备的复位应答信息,然后发送命令来启动处理过程。
第一步:复位响应。每当接到上位主机发送的复位命令时,USBkey回送ATR。ATR中含有标识数据,如I/O缓冲区的大小、通信速率转换因子等信息,上位取走ATR后即可获知USBkey的操作特性,以此进行后续的数据通信。
第二步:数据收发。根据预定的传输协议,对数据进行解码。如出现异常,则回送报错信息。
第三步:链接模式传输管理。鉴于某些命令的长度可能超过数据收发缓冲区的大小,还进行分块传输的相关处理。
第四步:传输检查。通过检查某一块的数据包格式,发现传输错误并通知接口设备。在这种情况下,接口设备将重发错误数据。反之,若接口设备通知密码钥匙数据发送出错,密码钥匙将执行数据重发操作。
第五步:数据传输。若经过上面的步骤后数据正确接受,将所接收的数据传递给下一层面进行后续处理,反之亦然。
第六步:传输结束处理。若正确传输后无任何其他动作,将转入待机方式以节省功耗。反之,向终端发送有关数据信息,也将执行以上若干类似步骤的操作。
命令处理流程如下:
检查命令中的必备字段是否完整,数据字段是否格式正确。
解析命令,检查是否在预定的命令集范围内,是否符合命令定义等。如果命令是用了ISO/IEC7816-4所定义的安全报文,则对其进行解密、校验完整性等处理。
上述检查均通过,执行命令。
根据命令执行以及上述步骤的处理情况,组织相应报文并回送。