陳章余
(南京工程高等職業學校電子工程系,南京 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與對稱加密算法
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.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.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密鑰管理系統有較好的應用適應性。
本文在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