肖 娟,伍 娟
(1.武汉工业学院电气与电子工程学院,湖北武汉 430023;2.武汉天喻信息产业股份有限公司研发中心,湖北武汉 430223)
随着智能卡技术的发展,智能卡目前已在通信、交通管理、企事业内部管理、税务、公用事业收费、金融领域等方面得到了广泛的应用。为了防止数据在传输的过程中被非法窃听、截取、篡改或破坏,智能卡操作系统使用密码算法来保证数据的安全[1]。目前密码算法主要分为两类:对称密钥算法(DES、AES等),非对称密钥算法(RSA、ECC等)。对称密钥算法的计算过程非常简单,并且密钥的长度不够长,很容易被攻破[2]。为了数据安全的需要,智能卡操作系统需要支持功能更强大的非对称密钥算法。RSA算法数学原理简单、在工程应用中比较易于实现,但它的单位安全强度相对较低。椭圆曲线加密(ECC)算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高。ECC算法的单位安全强度高于RSA算法,也就是说,要达到同样的安全强度,ECC算法所需的密钥长度远比RSA算法低[2]。这就有效地解决了为了提高安全强度必须增加密钥长度所带来的工程实现难度的问题。我国基于国家商业密码安全等原因,国家密码管理局于2010年12月17日发布了SM2椭圆曲线公钥密码算法(属于ECC算法的一种),并下达通知:自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2椭圆曲线密码算法。本文以同方THD86芯片为硬件平台,实现了支持SM2算法的智能卡系统以满足商用的需要,并对SM2算法和RSA算法在智能卡系统上的性能进行了比较和分析。
SM2算法是一种新的国产非对称算法,全称为SM2椭圆曲线公钥密码算法。SM2算法采用的椭圆曲线方程为:y2=x3+ax+b,在SM2算法标准中,通过指定a、b系数,确定了唯一的标准曲线[3]。
SM2算法作为公钥算法,可以完成签名、密钥交换以及加密应用。SM2算法标准确定了标准过程:签名、验签计算过程;加密、解密计算过程;密钥协商计算过程。
相对于RSA算法,SM2算法具有以下优点:①安全性高,192位的SM2密码强度已经比RSA 2048位密码强度要高。②存储空间小,SM2算法的密码一般使用192-256位,RSA算法密码一般需要使用1024-4096位。③签名速度快,SM2在私钥运算上,速度远比RSA快得多。④国产算法,无国外可利用的后门[4]。
COS的全称是Chip Operating System(片内操作系统),通常指带有CPU智能卡的操作系统[5]。安全机制的实现是COS安全体系中极为重要的一个方面。没有安全机制,COS就无法进行任何操作。COS的安全机制实现如下三个功能:签名与验证,数据加密与解密,文件访问的安全控制[6]。SM2算法既可以对数据进行签名和验证,又可以对数据进行加密解密,其不易攻破的特点更好的保证了COS的安全性[7]。
本次设计的COS所运行的硬件平台为同方THD86芯片,THD86芯片是一种带有CPU的智能卡芯片,该芯片是国内首款32位双界面CPU卡芯片,具有独立运算、加解密和存储能力,其安全性较磁条卡有相当大的提高,具备防护各种芯片攻击的能力,以防止个人或机构对金融IC智能卡的攻击和破解[8]。
THD86芯片与一般的CPU智能卡不同的是,该芯片具有丰富的密码学算法资源,通过COS对这些资源的合理调用,可以实现对外来数据的安全性处理,THD86芯片是COS的硬件载体,COS是THD86芯片的软件基础。
同方THD86芯片为COS的硬件平台,芯片的结构框图如图1所示。
图1 同方THD86芯片功能框图
2.2.1 CPU
为系统提供运行、计算以及和各个模块进行通信,型号为32位ARM Coretex-M0。
CPU工作时钟频率可配置为1—16 MHz。
2.2.2 存储器
ROM:存储卡片操作系统,56 kB。
FLASH:提供boot启动程序、内核映像、文件系统,256-400 kB。
EEPROM:用户存储器,16 -32 kB。
RAM:CPU数据区10 kB,加密缓冲区(加密协处理器数据,也作CPU数据区)24 kB,RF通信区256 B。
2.2.3 通用加密协处理器CCP
支持RSA/ECC/SM2等非对称算法。
2.2.4 通信接口
非接触界面,兼容IOS/IEC 14443 Type-A和Type-B。
接触界面,兼容IOS/IEC 7815-3协议。
THD86的协处理器CCP提供了SM2接口API函数,包括 SM2密钥对的生成、SM2加/解密、SM2签名/验证和SM2密钥协商。API函数的功能如下:
ccpSM2KeyPairGen:生成密钥对。
ccpSM2Encrypt:SM2加密函数,加密后密文长度=明文长度+96字节。
ccpSM2Decrypt:SM2解密函数,解密后明文长度=密文长度-96字节。
ccpSetUserMessageData:根据用户的ID和待签名的message数据计算签名的摘要E,长度为32字节。
ccpSM2Sign:根据摘要E和私钥产生message数据的64字节签名,成功返回0,不成功返回1。
ccpSM2Verify:根据摘要 E和公钥来验证message数据的签名是否正确,正确返回0,不正确返回1。
COS直接运行于THD86芯片平台上,是智能卡内软件的核心部分,也是卡片所支持全部应用的基础。COS的主要任务是从智能卡传出和传入数据、控制命令的执行、管理文件、维护内存空间、管理和执行加密算法、执行应用代码[6]。因此可以将COS系统的软件设计由上而下可以分为3个部分:应用层(API)、内核层(kernel)和硬件抽象层(HAL),系统的结构图如图2所示。
图2 COS软件设计框图
应用层是应用程序(如Applet应用,web应用等)与COS的接口,是COS软件设计的关键部分,该层提供了PKI应用的API接口函数,部分函数原型及功能如表1所示。当上层的应用程序调用API接口函数时,API函数通过内核层调用HAL层的CCP的库函数实现加/解密和签名等运算。图3和图4为函数SM2Calc和SM2Sign的流程图。
表1 COS提供的SM2算法API接口函数
图3 应用层SM2Calc加解密函数流程
内核层kernel负责组织、管理和维护智能卡内存储的所有的数据,同时对智能卡内数据提供安全保障,内核层负责解析API应用层与硬件抽象层之间交互的信息指令,并作相应的处理。
硬件抽象层HAL是THD86的协处理器CCP的算法接口的库函数定义(2.3函数的库文件),供kernel层调用,例如SM2公私密钥对的产生、SM2签名功能、SM2验证功能、SM2加密功能、SM2解密功能、SM2密钥交换功能等。
通过通信接口在COS中下载了一个Applet应用并安装成功,用来测试SM2算法的加密、解密、签名和验签,分为以下几个步骤。
图4 应用层SM2Sign签名函数流程图
步骤一:生成 SM2密钥对,64字节公钥sm2pubkey,32 字节私钥 sm2prikey。
步骤二:用公钥对明文Message进行了SM2加密,得到长度为128字节密文Crypto。
步骤三:用私钥对密文Crypto进行解密,得到长度为32字节明文 MessageAfter Decrypt,与明文Message相同。
步骤四:用公钥和用户ID(usID)将Message转换为长度为32字节的数据E。
步骤五:用私钥对 E进行签名运算,得到Message的签名。
步骤六:用公钥对Message的签名的签名进行验证,返回签名正确。
实验数据表明,该COS系统支持的SM2算法在加密、解密、签名、验签的计算结果正确,符合商用的标准,以上步骤的具体数据如表2所示。
表2 SM2算法加/解密和签名结果
本文还在THD86芯片上对SM2算法和RSA算法的性能进行了测试,测试的通信模式采用接触式,工作频率为系统时钟16 M、协处理器32 M,实验结果见表3。
表3 SM2和RSA算法的性能比较
运行的数据表明SM2算法在存储空间和签名加密上较RSA算法有很大的优势。SM2算法比RSA算法签名速度快,验签速度比RSA算法慢,SM2算法加密速度比RSA算法快,但解密速度比RSA算法慢。表3中可以看出:SM2算法的密钥长度为256位,远远小于RSA算法的1024位,说明SM2算法需要的存储空间远远小于RSA算法。
本文以同方THD86为硬件平台,在COS中实现了SM2算法,并对SM2算法相对与RSA的优势进行了证明。通过多个APPLET应用的测试,COS系统能正确对输入数据进行SM2加密和解密,以及签名和验签,能满足商用的要求。SM2算法效率高、破解难度大,随着信息安全发展,国家密码管理局已经指定SM2算法取代RSA算法,在今后的应用中会有更大的发展空间。
[1]王振.用SM2算法芯片实现嵌入式系统的安全设计[J].单片机与嵌入式系统应用,2012(4):75-76.
[2]胡振宇,蒋建春.密码学基础与安全应用[M].北京:北京邮电大学出版社,2008:33-36.
[3]国家密码管理局.SM2椭圆曲线公钥密码算法[EB/OL].(2010 -12 -22).http://www.oscca.gov.cn/UpFile/2010122214822692.pdf.
[4]天卓软件.关于SM2椭圆曲线密码算法[EB/OL].(2012 - 08 - 17).http://www.gztzsoft.com/fangan.asp?id=14.
[5]韦小刚,黄宜彬,杨维永.一种基于ISO/IEC7816的COS的设计与实现[J].计算机技术与发展,2012,22(3):230 -231.
[6]郭鸿志,李代平.智能卡芯片操作系统的研究与实现[J].计算机工程与设计,2010,31(19):4186-4189.
[7]LaiJyu-Yuan, Huang Chih-Tsun. A highly efficient cipher processor for dual-field elliptic curve cryptography[J].IEEE Trans.on Circuits and Systems-Ⅱ:Express Briefs,2009,56(5):394 -398.
[8]同方微电子.同方微电子3S理念护航金融IC卡[EB/OL].(2011 - 11 - 09).http://www.tsinghuaic. com/article/article. asp? id =483177&bid=8572.