APP下载

基于单片机的DUKPT密钥管理系统

2014-09-06陈章余

电子器件 2014年6期
关键词:加密算法计数器寄存器

陈章余

(南京工程高等职业学校电子工程系,南京 211135)



基于单片机的DUKPT密钥管理系统

陈章余*

(南京工程高等职业学校电子工程系,南京 211135)

密钥是加密系统中的核心,也是最薄弱的环节,密钥管理在加密系统尤其是金融加密系统中具有极为重要的地位。在51单片机平台上用C语言完成了符合ANS X9.24金融标准规范的DUKPT对称密钥管理系统的软件设计,具有前向安全性,保证了交易的安全。同时设计验证方案,模拟交易1048575次,将密钥派生结果与标准测试数据比对,数据完全正确。结果表明,本设计运行结果完全符合ANS X9.24金融标准规范,对于各种金融终端信息加密具有非常重要实用意义。

对称密钥管理;DUKPT;8051单片机;ANS X9.24

随着电子商务的兴起,金融加密安全性越来越受到挑战与重视。密钥管理在加密系统尤其是金融交易加密系统中具有极为重要的地位。每笔交易使用不同派生密钥(DUKPT)是一种非常安全的对称密钥管理方式,它基于一次一密的加密思想[2-3],具有前向安全性[4],抵抗针对加密系统的攻击[5-7],主要应用于金融终端加密(如手机银行、手机刷卡器等新型支付终端)。对于DUKPT密钥管理系统的理论分析、设计和实现具有非常重要的现实意义。

1 DUKPT密钥管理系统

图1 DUKPT与对称加密算法

DUKPT是一种非常安全的对称密钥管理方式[8-9],在加密系统中,负责对加密密钥进行有效的管理,能确保信息的安全性。常见的对称加密标准有3DES[10-12]、AES、IDEA等。如图1所示,DUKPT和对称加密算法的关系,二者不止是密钥层面的联系,在DUKPT密钥派生机制中,还用到3DES加密算法进行密钥派生。对称加密算法使用该当前交易密钥进行数据加密。因为DUKPT独特的算法机制,加密时每次使用的密钥都是不同的,从而保证了加密系统的安全性。

图2是常用加密系统模型图,两端分别为客户端(Client)与服务器端(Server),典型应用如银行PIN码输入设备向主机传送客户输入的PIN码或MAC码。金融终端交易过程中,经过3DES或AES加密后的交易数据信息和加密密钥信息将构成安全管理信息数据(SMID),在Server和Client端进行传输。通常一个Server服务器要与多个Client终端进行交易,这就是使区分多个Sever的密钥管理方式变得更为重要。

图2 DUKPT密钥管理系统系统模型构架图

2 DUKPT算法设计

2.1 DUKPT密钥管理算法设计

DUKPT密钥管理技术为每次交易提供一个独特的密钥,将前一次使用密钥从存储区内擦除,在Client端(如PIN输入设备)中不会存留任何前一次交易的密钥信息。DUKPT派生密钥系统中,请求方Server的安全模块可以根据交易中的安全管理信息数据(SMID),确定任意进行过或将要进行的交易的任意密钥。在本文中,SMID具体来说,包含有:基础派生密钥(BDK),初始化加密密钥(IK),初始化密钥序列号(IKSN)以及包含有加密计数器(Encryption Counter)的密钥序列号(KSN)等。

2.2.1 初始密钥的产生

一个服务器S与多个终端Ci相连,在所有交易进行之前,S需对所有Ci进行初始化,注入IKi和IKSNi,因为Ci设备序列号的互异性,IKSNi和IKi都具有唯一性,这方便了S对Ci的管理。如前所述,IKi是由BDK根据IKSNi派生出来的:

IKi=F(BDK,i)

(1)

(2)

(3)

其中C为已知常数,为当前交易KSN的左64bit,其中包含有加密计数器。C′为固定常数,在ANSX9.24中C′=0000 0000 0000 00FF0000 0000 0000 00FFHex。

如图3所示为初始密钥产生、注入过程示意图,S端安全模块TRSM为一种特殊的安全屏障,不易被破坏,并有相应的断电及其他异常情况反映机制,能保证其中的数据绝对安全不被窃取。

图3 初始密钥产生、注入过程示意图

IKi和IKSNi是被注入到各个Ci设备中的。S端根据不同设备的BDK和KSN重新派生出Ci的初始化加密密钥IKi,并根据KSN右21位加密计数器值进行独立DUKPT运算,推出当前密钥,对加密数据进行解密。下文的讨论只考虑一个Server S和一个Client C,初始化加密密钥为IK。

2.2.2 密钥的派生

DUKPT密钥的派生,在Client端和Server端独立进行,密钥的同步是依赖于传输的KSN的,KSN中包含Client相关的设备序列号,以及加密计数器,在ANS X9.24中为21 bit。Client端每次交易使用当前密钥,交易完成后,加密计数器值加1,派生出新密钥存储后,擦除已用密钥。

Client端使用的初始派生密钥IK是经Server注入的,IK在Server端产生:

IK=F(BDK)

(4)

Client端的密钥派生也是采用F派生函数,使用当前密钥加密当前KSN左64 bit即可获得。

派生机制具有前向安全特性,派生函数F输入为当前密钥和当前KSN状态,输出为将用密钥,第j个密钥由第j-1个密钥产生:

Kj=F(Kj-1,j)

(5)

图4 多元有向密钥树

本文用多元密钥树来表征密钥派生过程,如图4所示,是多元有向密钥树,“根”为IK,以下“分支点”和“叶”均为派生密钥。K1,K2,K3,K4,K5组成密钥数第1层,均是IK的子密钥,IK为其父密钥,它们距IK的距离D1=D2=D4=D8=D16=1,表示只需一次F派生运算即可得到。同理,第2层密钥距离D=2,图4所示密钥树最大层数为5,表示最大加密周期N=5。密钥树的有向性是由派生函数F的不可逆性决定的。

计数器Counter值的作用是标志密钥的位置与顺序,给定Counter值有特定的密钥与其对应。在Client端,密钥使用为横向顺序,按照红色虚线所示,按照Counter值按照00001,00010,00011,……,11110,11111,顺序使用。在Server端,当前交易密钥的推算为纵向顺序,是按照蓝色断续线所示,按Counter值中“1”bit位由左往右顺序,从IK推演,经过K8,K12,K14派生出当前交易密钥K15,最大加密周期为N=5,避免了Counter值较大时造成的Server端冗杂运算,使密钥管理算法实用有效。

密钥的派生按照密钥树框架,按Counter最右“1”bit位所在位置,将派生密钥存入到将用密钥寄存器中,在图4所示密钥派生系统中,密钥寄存器R=5组,分别是R1、R2、R3、R4和R5。

2.2.3 符合ANS X9.24的DUKPT密钥派生机制

DUKPT加密系统中,21 bit加密寄存器值表示为cnt,它表示为KSN的最右21 bit,在Client与Server之间进行传输,起到密钥信息的同步作用。在第j次交易中加密计数器值为cnt=j,则cnt=j对应的密钥就在本次交易中被使用。初始化加密密钥IK为j=0时的密钥。

(6)

至此或许会产生一个疑问,加密计数器cnt为何为21bit?若产生百万个加密密钥,只需20bit足够(因为20bit对应密钥个数220-1=1048575)。关键问题在于,应用20bit计数器,交易过程中将用上全部的220-1个密钥,这将使最大加密周期变为N=20,增加了运行时间和降低了系统运行效率。使用21bit加密计数器时,当最大加密周期为N=10时,也能获得百万个加密密钥,在运行中,跳过Nob(cnt)>10 的cnt,只保留‘1’bit个数小于等于10的cnt。所以,DUKPT能产生的最大密钥数量为:

(7)

2.3 DUKPT的单片机软件设计

下面从Server端和Client端说明DUKPT单片机实现算法的设计。

2.3.1Server端密钥派生机制

服务器S接收到用户C发送的当前交易KSN,从中取出21bit加密计数器cnt,S只需在纵向进行Nob(cnt)次F派生运算,即可推演出当前交易密钥,其中Nob(cnt)<=N=10,具体步骤为:

(1)S根据BDK获取C的初始化加密密钥IK,IK=F(BDK);

(2)S根据cnt最高有效‘1’位置p1,ctemp=2p1,Ktemp=F(IK,ctemp);

(3)S据cnt第2最高有效‘1’位置p2,ctemp=ctemp+2p2,Ktemp=F(Ktemp,ctemp);

(4)继续c)步骤,直到最低有效‘1’位,此时ctemp=cnt,Ktemp=F(Ktemp,ctemp);

(5)最终的Ktemp为当前交易加密密钥。

图5 Client端当前交易密钥产生示意图

2.3.2Client端密钥派生机制

Client端的密钥派生机制为纵向多元派生,密钥的使用按照横向顺序,即按照cnt递增顺序。首先,Client的21个将用密钥寄存器,初始化存入密钥为:F(IK,2r-1),其中r={1,…,R},每个密钥寄存器r存入密钥K2r-1,然后IK被从Client存储区内擦除,这个R=21个密钥实质上是所有将用密钥的父密钥。Client端的每次当前交易如图5所示,对于第1次交易j=1,对应加密计数器cnt=(21′b0…00001),对应的交易密钥K1=F(IK,1)存于第1个密钥寄存器r=1中,交易结束后,K1被直接从存储区擦除。因为K1并无可派生子密钥,所以它的重要性不很明显,可以随意擦除。j=2时,使用r=2中的密钥K2,K2是K3的父密钥,所以交易结束后,擦除K2之前,需要先派生K3=F(K2,3)存于寄存器r=1中。继续执行此过程,直到一百万次密钥用尽。前向安全特性的一个重要保证是,在Client中,每一个密钥的父密钥都已经不存在于寄存器中,派生函数不可逆。在派生过程中,所有使用密钥对应的cnt值中‘1’bit的个数都不超过10,即Nob(cnt)≤10,超过10的cnt将被跳过。

3 单片机软件实现与验证

3.1 DUKPT密钥管理系统软件实现

DUKPT软件代码编写采用51单片机C语言,因为作为密钥管理系统,要具备更高的灵活性,所以本文选则51单片机平台,采用SiliconLabs公司的C8051F340单片机。按照ANSX9.24的DUKPT算法规范,需将理论算法用C语言表达出,在软件平台实现,本文定义了派生流程函数,设计了软件构架,并用流程图形式表达出来。

如图6是软件构架的流程图,实际为前文所设计算法单片机软件实现,所有流程函数按流程进行调用,即可实现DUKPT密钥使用、派生、销毁等操作。详细流程步骤,限于篇幅,本文不再赘述。在系统中,密钥存储是放在非易失性存储器中的,本文设计存储空间为51单片机内部FLASH。

3.2 DUKPT密钥管理系统软件的验证

通过使用SiliconLabs公司C8051F系列单片机仿真器U-EC5对程序运行进行在线仿真,进行仿真验证。平台验证使用的是两台C8051F340单片机组成的Server-Client交易平台,模拟真实加密系统进行DUKPT密钥管理系统验证.平台组成框图如图7所示,实物如图8所示。使用SPI协议进行Server-Client端数据传输,Server端单片机通过使用U-EC5仿真器在线观察系统运行结果。

图6 DUKPT算法流程图

图7 验证平台组成框图

图8 单片机验证平台实物图

进行Server-Client端进行模拟交易,将Server解密出的明文与Client端直接传输的原文明文做比对。交易次数为1048575次,完成百万次密钥的全部派生、验证。通过记录,实际正常交易次数,加解密错误次数行进单片机验证的结果如表1所示。

表1 百万次交易错误统计表

最大派生密钥数量理论值为1048575,但实际验证中,加密数据的原文验证错误次数为0,说明系统能正确运行。即使密文传输有错误,在交易中通过单片机软件的纵向冗余校验(LRC)机制,即可鉴别、排除错误,保证交易安全。

经验证,本文设计的DUKPT密钥管理系统可以正确工作,且经过硬件验证,系统符合ANS X9.24标准中关于DUKPT的规范。

经KELL C51μVision4对Client端软件代码编译,所占用单片机资源报告如表2所示。

表2 单片机消耗资源统计表

可见,一般性能单片机或其他CPU均能满足该存储空间的要求。因此该DUKPT密钥管理系统有较好的应用适应性。

4 结束语

本文在51单片机平台上用C语言完成了符合ANS X9.24金融标准规范的DUKPT对称密钥管理系统的软件设计,能派生百万个密钥用于加密,具有前向安全性,保证了交易的安全。并设计验证方案,将密钥派生结果与标准测试数据比对,结果表明,本文设计DUKPT密钥管理系统运行结果完全符合ANS X9.24金融标准规范,对于各种金融终端(如手机银行、手机刷卡器等新型支付终端)信息加密具有非常重要实用意义。

[1]Smid M E,Branstad D K. Data Encryption Standard:Past and Future[J]. Proceedings of the IEEE,1988,76(5):550-559.

[2]焦占亚,曾永莹,刘海峰. 一次一密的密码算法研究[J]. 西安科技大学学报,2005,25(4):477-480.

[3]王伟,郭锡泉. 一次一密DES算法的设计[J]. 计算机安全,2006,5:9.

[4]Canetti R,Halevi S,Katz J. A Forward-Secure Public-Key Encryption Scheme[C]//Advances in Cryptology—Eurocrypt 2003. Springer Berlin Heidelberg,2003:255-271.

[5]Kocher P C. Timing Attacks on Implementations of Diffie-Hellman,RSA,DSS,and Other Systems[C]//Advances in Cryptology—CRYPTO’96. Springer Berlin Heidelberg,1996:104-113.

[6]Kocher P,Jaffe J,Jun B. Differential Power Analysis[C]//Advances in Cryptology—CRYPTO’99. Springer Berlin Heidelberg,1999:388-397.

[7]Quisquater J J,Samyde D. Electromagnetic Analysis(ema):Measures and Counter-Measures for Smart Cards[C]//Smart Card Programming and Security. Springer Berlin Heidelberg,2001:200-210.

[8]王五一,唐刚. 谈信息加密及对称密钥加密技术[J]. 计算机应用研究,1999,16(12):26-27.

[9]高品均,陈荣良. 加密算法与密钥管理[J]. 计算机世界,2000.

[10]Barker W C. Recommendation for the Triple Data Encryption Algorithm(TDEA)Block Cipher[M]. US Department of Commerce,Technology Administration,National Institute of Standards and Technology,2004:10-12.

[11]应君,朱俊达,陈抗生. DES加密算法在低成本FPGA上的实现[J]. 电子器件,2006,29(3):895-897.

[12]张萌,曹建峰,胡晨. 一种混合加密算法DESR的探讨[J]. 电子器件,2001,24(4):6.

陈章余(1981-),男,江苏新沂人,讲师,硕士,研究方向为嵌入式系统。

DUKPTKeyManagementSystemBasedonSCM

CHENZhangyu*

(Department of Electronic Engineering;Nanjing Engineering Vocational College,Nanjing 211135,China)

The encryption key is the core but the weakest link of encryption system. Therefore,the key management plays an important part in an encryption system,especially in the financial transaction encryption system. In this paper,the software design of the DUKPT defined in ANS X9.24 standard is finished on the 51 single-chip platform,by using C language. This system is designed to ensure the security of transactions with forward-security. Additionally,the validation scheme is designed. After checking the operating results with the standard test data for 1048575 times,we conclude that the designed DUKPT key management system runs correctly and is fully compliant with ANS X9.24 financial standards. And the design has a very important practical significance to the information encryption of the financial terminal.

DUKPT;SCM;Symmetric key management;ANS X9.24

2013-11-05修改日期:2013-12-25

TP368.2

:A

:1005-9490(2014)06-1177-06

10.3969/j.issn.1005-9490.2014.06.034

猜你喜欢

加密算法计数器寄存器
采用虚拟计数器的电子式膜式燃气表
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
HES:一种更小公钥的同态加密算法
算盘是个“小气鬼”
基于小波变换和混沌映射的图像加密算法
对称加密算法RC5的架构设计与电路实现
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法
基于单片机的仰卧起坐计数器
基于EWB的N 进制计数器仿真设计