发明内容
本发明的目的是提供一种实现智能卡高速、安全通讯的方法。该方法通过特定的数据传输模式,可以实现在智能卡内部对离散化的大数据量进行高速、安全的加/解密处理操作。
为实现上述的发明目的,本发明采用下述的技术方案:
一种实现智能卡高速安全通讯的方法,用在智能卡与终端之间,其特征在于:
在所述智能卡内的通讯协议中增加数据处理控制字;
在所述智能卡初始化时,根据所述初始化命令中包含的数据处理控制字内容判断是否由所述智能卡本身执行数据加/解密处理;
如果是,则所述智能卡通过自身的微处理器执行数据的加/解密处理,并将处理后的数据传送给所述终端。
其中,
初始化时,初始化命令中的数据存储到智能卡的存储器中,并反馈数据通知终端;完成数据处理后,终端向智能卡再次发送初始化命令,释放原存储在智能卡存储器中的数据。
初始化时,首先提取通道的工作方式,然后再提取通道的算法标识,从而取出通道的密钥。
所述智能卡根据初始化时提取的通道密钥,调用与之相关的加/解密算法进行数据的加/解密处理。
所述加/解密算法包括但不限于DES、3DES、RSA和SSF33。
所述智能卡初始化和加/解密运算的过程中,通过响应报文数据域回送的状态码判断有关进程是否顺利完成。
所述数据处理控制字包括但不限于CLA和INS。
由通讯协议中的P2代码控制所述智能卡的数据通道的开闭。
所述智能卡与所述终端通过通用串行总线进行通讯。
或者,所述智能卡通过ISO7816方式与所述终端进行通讯。
本发明所述的实现智能卡高速、安全通讯的方法采用智能卡为加密载体,利用智能卡上自带的微处理器完成对需要加/解密的数据的加/解密计算,有效地提高了智能卡对大数据量的处理能力,同时本发明提供了灵活、快捷的通信方法,大大方便了用户的使用。本发明可广泛应用于智能卡与终端设备的通讯上,特别是在网络上信息传递和终端硬盘数据的加密存储或移动保护,如银行、证券、保险、公安、国防等对数据安全性要求较高的应用系统中。
具体实施方式
本发明所述的实现智能卡高速、安全通讯的方法主要适用于如图1所示的具有USB接口的智能卡芯片。作为一个优选的实施例,智能卡芯片最好是一个基于32位或以上的精简指令及计算机(RISC)处理器的高安全芯上系统(SOC)芯片,具备高处理能力、高安全性、低功耗、低成本等特点。该芯片的关键特性如下所示:
一、处理器性能
微处理器为专门定制的高安全CPU核,它是32位或以上的RISC,采用5级流水线,频率可变,主频可工作在100MHz以上,硬件有乘法协处理器;微处理器采用整体安全概念,具有优异的安全性能和处理能力;它采用高性能的高速缓冲存储器(CACHE),包括1K字节指令CACHE和1K字节数据CACHE;存储管理和保护单元(MMU)可以配置关闭,关闭后支持段管理模式,最大支持空间为128MB,面向应用的存储分区,支持可变页长,采用多级查找结构,支持虚拟存储空间管理,支持硬件安全访问控制,外围组件访问受控。
二、芯上存储单元
电可擦出只读存储器(EEROM)为32KB,用于数据和程序的存储空间,可进行单字节的读、擦除、写,可进行单字节或多字节最大为64字节的擦除、写,最少擦写次数30万次,室温下数据保持时间最少10年,在擦写性能方面,单字节写时间为20微秒(us),页擦除时间为4毫秒(ms),EEPROM的编程电压在芯片内产生。FLASH为128KB,用于存储、函数库以及设备驱动存储空间,128字节页的擦除、写,最少檫写次数2万次,室温下数据保持时间最少10年,擦写性能为单字节写时间20us,页擦除时间4ms,其静态存储器大小为8KB。
三、外围组件
外围组件包括:1、硬件纠错码(ECC)协处理器。2、硬件数据加密标准(DES)协处理器。硬件数据加密标准(DES)协处理器支持DES、包括2KEY和3KEY的3DES算法的加密解密,支持电子密本方式(EBC)和链式块处理方式(CBC)的加密和解密,优化的数据传送通道,端口数据加/解密速度双向达到3Mbps。3、高速真随机数发生器。其随机数发生码率为2Mbps。4、USB接口。它支持USB1.1协议全速率或更高,支持三端点,每一个端点支持双缓冲器(Buffer),端口利用率高,有1个串行接口,符合ISO7816-3标准,时钟最大支持5MHz,速率最高支持310Kbps,1个GPIO接口,2个32位定时器,内置振荡控制器和相同步逻辑(PLL),可外部接4MHz晶体,支持上电复位。
四、安全特性
具有硬件存储管理和保护、高低电压检测、高低频率检测、防止差分能量分析/静态能量分析(DPA/SPA)攻击、存储区域加密、总线加扰、时钟和复位信号脉冲过滤、安全优化布线功能,每一个芯片唯一序列号。
五、电气特性
整个芯片的功耗小于200mw(5V情况下),3级低功耗模式控制,即维持模式、休眠模式、掉电模式。电源有ISO模式:2.7-5.5V和USB模式:3.6V-5.5V。防静电技术指标(ESD)保护在4000V以上。芯片管脚导线接出(Bond)位置符合ISO7816-2规范。
下面,详细介绍本发明所提供的实现智能卡高速、安全通讯方法的实现过程。
图2所示为本实施例中的智能卡与终端之间进行通讯的原理示意图。这里所说的终端包括但不限于有线终端、无线终端,手持终端、手机等。在图2所示的实施例中,智能卡通过USB接口与终端进行数据信息的交互。但需强调的是,本发明所述的方法并不只限于采用USB接口进行通讯一种情况,采用ISO7816方式进行通讯也是适用的。
本发明所述方法的核心就在于通过新设的数据处理控制字,扩展了原有的智能卡通讯协议。这一新的智能卡通讯协议如图3所示,位于终端驱动层,即嵌入智能卡的驱动程序中。这样,智能卡就可以按照新的控制字提供的内容,充分发挥自身数据处理的能力,实现数据的高速、安全传输。
作为本发明所述方法的第一步,首先要在对上述的智能卡进行初始化操作。这里的初始化操作的目的是在智能卡开辟对应的空间,保存用户需要的各项设置,并利用这些设置进行以后的数据处理操作。需要进行的设置包括加/解密模式的设置、加/解密算法的选择、密钥保护信息、密钥值的确定等。
初始化操作是通过如表1所示的初始化数据流加/解密通道(Initialstream channel)命令来实现的。表1为该初始化数据流加/解密通道命令的报文编码及功能说明。
Lc |
00HXXH |
00H表示关闭对应通道,释放RAM空间Data域数据长度。 |
Data |
---- |
见文件控制信息说明(表2) |
Le |
00H或02H |
02H表示需要返回当前设备中分配的可用的通道标识;00H表示关闭此通道 |
表1
表2所示为表1中的文件控制信息的说明。
数据域 |
密钥控制信息 |
数据流加/解密钥标识 |
对数据流加/解密钥进行保护所采用算法信息 |
密钥值(+MAC) |
密钥类型 |
密钥标识 |
长度(byte) | 1 | 1 | 1 | 1 |
8/16(+MAC)/128 |
值(HEX)与代表含义 | 见表3中的密钥控制信息说明 | 01H;(DES)02H;(SSF33)其余暂时保留 |
30H;(DES加密密钥)32H;(DESMAC密钥)FOH;(SFF33加密密钥)F1H;(SFF33MAC密钥) | XX | 8/16(+MAC) |
F2H;(RSA加密)F3H;(ECC加密) |
XX(私钥文件标识符) | 128 |
表2
密钥控制信息的说明参见表3所示:
b7 |
B6 |
b5 |
b4 |
b3 |
b2 |
b1 |
b0 |
描述 |
X |
X |
X |
X |
X |
X |
X |
0 |
数据域中的密钥值为明文 |
X |
X |
X |
X |
X |
X |
X |
1 |
数据域中的密钥值为密文 |
X |
X |
X |
X |
X |
X |
0 |
X |
数据域中的密钥值不计算MAC |
X |
X |
X |
X |
X |
X |
1 |
X |
数据域中的密钥值计算MAC |
X |
X |
X |
0 |
X |
X |
X |
X |
当前通道进行流加密操作 |
X |
X |
X |
1 |
X |
X |
X |
X |
当前通道进行流解密操作 |
表3
在智能卡每次上电复位后,准备进行大数据量加/解密处理之前,用户都应该对智能卡进行初始化操作。在初始化操作命令中,本发明新增加定义了智能卡操作所需要的数据处理控制字CLA和INS。这两个控制字的作用是区分用户是在使用符合现有的ISO7816规范的基本智能卡命令操作设备还是使用本发明新增加的数据流加/解密命令对智能卡进行操作。
参见图4所示,智能卡初始化工作的基本流程包括如下的步骤:首先是确认是否需要打开通讯通道,如果需要则进一步判断是否有空闲通道,如果存在空闲通道的话,则进一步取得该通道的初始化信息,并从初始化信息中提取通道的工作方式信息和有关的算法标识,这样,智能卡内的微处理器就可以根据与该算法配套的密钥进行加/解密运算。获得密钥之后,保存该通道的信息。如果没有需要打开的通道或者不存在空闲通道的情况下,直接结束初始化流程。
在表1中,标识位P2表示需要设置或关闭的加/解密通道数量。在本实施例中,P2为8位,因此该实施例中可支持逻辑通道最多可以是256个。通过P2的设置,可以对256个通道分别进行初始化,智能卡会独立保存256个通道的信息。这样,用户的应用程序可以分时使用256个通道处理数据流。
通道的工作状态可以通过响应报文数据来显示。表4为响应报文数据域的示例。其可能回送的代码及其含义如下所示:
9000 |
命令成功执行 |
6700 |
错误的长度 |
6A86 |
参数P1P2错误 |
6985 |
使用条件不满足 |
6982 |
不满足安全状态 |
6A81 |
功能不支持 |
9400 |
通道已满 |
9403 |
密钥未找到 |
表4
响应报文数据域显示的是当前设备中所分配的可用的通道,这些可用的通道按照用户的要求(是使用基本智能卡命令操作设备还是使用数据流加/解密命令对智能卡进行操作)进行初始化设置。
智能卡初始化工作完成后,就可以通过数据流加/解密命令对智能卡进行操作,进而可以利用智能卡内部的数据处理能力,在智能卡内部对以数据包形式出现的大数据量的数据进行高速、安全的加/解密处理。具体而言,终端将所需要处理的数据送入智能卡中进行数据处理。智能卡根据已保存在智能卡存储器中的初始化信息选择对应的通道、工作模式。智能卡中的微处理器判断数据包中是否包含加/解密命令控制字,不是则按照ISO7816的基本处理方式处理数据,是则根据加解密设备存储器中的密钥调用对称或非对称算法加/解密函数对数据进行加/解密处理,完成后将数据回送终端。
下面,结合图5对智能卡执行加/解密处理的过程作一说明。如图4所示,智能卡在通过图4所示的步骤提取通道信息之后,进一步调用有关的加/解密算法,如DES、3DES、RSA、SSF33等进行加密/解密运算,完成后通过该通道向终端回送加/解密运算结果。
前面已经提到,本发明在智能卡数据流加/解密命令中定义了智能卡操作所需要的数据处理控制字(CLA和INS),此控制字的作用是区分用户是在使用基本的智能卡命令操作设备还是在使用数据流加/解密命令对智能卡进行操作,基本智能卡命令是ISO7816规范已经规定的,而数据流加/解密命令在现有的ISO7816规范中没有规定。
在智能卡进行数据加/解密处理的过程中,有关的数据流加/解密命令的报文编码与前述的初始化过程有所不同。其具体的内容参见表5所示。
表5
而在数据加/解密处理的过程中,响应报文数据域也与初始化过程时有所不同,其可能回送的状态码如表6所示:
SW1 SW2 |
意义 |
9000 |
命令成功执行 |
6700 |
错误的长度 |
6A86 |
参数P1P2错误 |
6985 |
使用条件不满足 |
6982 |
不满足安全状态 |
6A81 |
功能不支持 |
9401 |
通道尚未打开 |
表6
如图6所示,基于本发明所示方法实现的智能卡高速、安全通讯的过程包括如下的步骤:首先由主机准备需要智能卡进行处理的数据流数据,然后,主机通过获取设备handle(句柄)的方式,并经过密钥认证取得对智能卡的控制权。一旦取得了智能卡的控制权,就向其发送初始化数据流加/解密通道命令,如果智能卡返回的状态码是9000(含义是“命令成功执行”),则进一步向其发送加/解密数据流命令,如果智能卡返回数据,并且返回的状态码是9000的话,表示数据已经在智能卡中处理完毕,接下来就是主机向智能卡发送关闭加/解密数据流命令,并将有关数据处理的情况通知有关应用程序。
以上对本发明的具体实施方式进行了详细的解说。对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。