基于混沌映射的智能卡信道加密方案
文章出處:http://m.compasssalessolutions.com 作者:王潔冉,馬秀榮,張佳明 人氣: 發(fā)表時間:2011年09月30日
1 概述
由于ISO 7816-3的限制,智能卡I/O線上的數據基本上沒有封裝,因此利用PC機上的RS232串口很容易就能截獲I/O線上的數據。對于一些敏感數據的傳輸、私有密鑰的外部認證等,必須將數據加密以保證信道安全。傳統(tǒng)方法將私有密鑰在卡片個人化階段寫入卡片NVM(Non Volatile Memory),其認證流程如下:(1)利用取隨機數指令從卡中取出8 Byte(16 Byte)隨機數。(2)利用私有密鑰將隨機數作DES(3DES)]加密生成密文。(3)將密文利用外部認證指令送入卡中。(4)COS(Card Operation System)利用私有密鑰將密文解密,并與流程(I)所生成的隨機數做比較,完成外部認證。可見, 上述認證過程(密文交換過程)很容易受到明文攻擊,而且認證的安全性依賴于固化在NVM 上的密鑰以及隨機數的質量,對于像CIU51G128這樣沒有真隨機數發(fā)生器的低成本卡片來講,上述機制毫無意義。
Logistic序列具有對初值敏感、類隨機和可重現等特性,進入混沌狀態(tài)后,具有分布均勻、迭代公式簡單、易于數字實現等優(yōu)點。本文討論并實現了利用Logistic混沌映射來同步動態(tài)生成服務器端和卡端密鑰,提高了報文交換的安全性。
2 Logistic混沌映射理論及其特性
混沌現象是非線性動力系統(tǒng)中一種確定的、類似隨機的過程。由于混沌動力系氣初始條件的極端敏感性,能產生大量的非周期、連續(xù)寬帶頻譜、類似噪聲且確定可再生的混沌信號。Logistic混沌映射是人們普遍研究的一種混沌映射,其表達式為
其中,0<Xn<1;1≤ μ≤4, 稱為分形參數,圖1是Xo=0.5,迭代300次時,μ的取值對X的影響,當3.57≤ μ≤4時,系統(tǒng)呈現混沌狀態(tài)。
圖2為當Xo取0.663 489 000,0.663 489 001,μ=3.99時2個不同初值的混沌序列差值的情況。
可見,2個初值僅相差0.000 000 001,在最開始20多次迭代,兩者的差很小,近似為0,但隨著迭代次數的增加,2個序列的值顯示出一種無規(guī)律的情形,兩者相差也比較明顯了。因此,可以看出該系統(tǒng)對初值的變化十分敏感而且具有雪崩效應。
(1)Logistic混沌序列的概率密度分布函數為
(2)Logistic混沌序列的均值為
(3)Logistic的自相關和互相關性
設a(1) ,a(2) 分別表示長度為N的2個不同的Logistic混沌映射序列,n 表示a?在i時刻的狀態(tài)。當N→∞時,序列的自相關和互相關函數分別為
其中,表示ai (1)的復共軛??梢奓ogistic混沌映射序列具有良好的自相關和互相關特性。
(4)Logistic混沌序列的李雅普諾夫(Lyapunov)指數
李雅普諾夫指數是對非線性映射產生的運動軌道相互間趨近或分離的整體效果進行的定量刻畫。對混沌系統(tǒng)而言,正的李雅普諾夫指數表明軌線在每個局部都不穩(wěn)定,相鄰軌道按指數分離。同時正的李雅普諾夫指數也表示相鄰點信息量的丟失,其值越大,信息量丟失越嚴重,混沌程度越高。
在一維動力系統(tǒng)X n+1 =F(X n)中,李稚普諾夫指數為
其中,λ與初值的選取沒有關系。對于Logistic映射,考慮參數3.4≤ μ≤4,若P<P ∞=3.569 9,則λ<0對應周期運動。若μ>μ∞=3.569 9,則λ>0對應混沌運動。
3 基于混沌映射的動態(tài)3DES加密方案
3.1 密文交換流程設計
DES算法是一種公認的良好加密算法,已經成為貿易、金融,通信等行業(yè)的事實標準。但是DES算法是一種公開算法,其安全性完全依賴于對密鑰的保護,必須有可靠的信道來分發(fā)密鑰,而且單DES算法密鑰過短,僅有8 Byte。
為了彌補這一缺點,人們設計了三重DES(3DES)。即使用3次單DES算法,每次采用加密、解密和不同的密鑰的組合來強化DES算法。目前常用的3DES算法模型有:
(1)DES—EEE2:雙密鑰加密方法。采用加密-加密-加密的流程,其中,第1加密過程和第3加密過程使用相同的密鑰。
(2)DES—EDE2:雙密鑰加密方法。采用加密-加密-加密的流程,其中,第1加密過程和第3加密過程使用相同的密鑰。
(3)DES—EEE3:三密鑰加密法。采用加密-加密-加密的流程,每個加密過程使用一個不同的密鑰。
(4)DES—EDE3:三密鑰加密法。采用加加密-加密-加密的流程,每個加密、解密過程使用一個不同的密鑰。
為了增強安全性本文采用方案,即每輪單DES運算采用一個不同的密鑰,這樣即使其中某一輪的密鑰被攻破,密文也不會被破解,其中每一輪的密鑰由配置不同分形參數的Logistic混沌序列來產生。
為了解決密鑰分發(fā)問題,采用卡端與服務器端同步生成密鑰的方案,即在卡片預個人化階段, 由服務器隨機生成3個分型參數 μI, μ2, μ3和初始值 X0,Y0,z0,并和每張卡片的序列號(ICCID:Integrate Circuit Card Identifier)對應,然后將3個分型參數和初始值寫入卡中NVM,同時服務器將3個分型參數和初始值存入數據庫,這樣相當于服務器端和卡端2個混沌系統(tǒng)具有相同的初始值和參數配置。只要在每次外部認證或密文傳遞時,服務器端和卡端的迭代次數相同,就能保證2端使用的密鑰是相同的,這樣就解決了密鑰分發(fā)的問題。同時,卡端和服務器端將本次迭代結果保存并作為下一次迭代的初始值。這樣就實現了一次一密的動態(tài)加密,有效地防止了明文攻擊和暴力破解。
3.2 Logistic混沌序列的算法設計
由于8 bit 51核CPU字長有限,因此得到的序列僅可能是理論值的逼近而且序列必然呈現周期性,但是從工程角度來看,只要保證周期足夠長,序列足夠復雜即可。結合以上因素,考慮到存儲空間、運算效率、序列復雜度和DES運算對密鑰長度的要求,采用double型變量來存儲分型參數和初始值,即每個參數占用8 Byte的存儲空問。
為了使用通用浮點數表示,采用IEEE Std 754—1985所規(guī)定的浮點數表示法,由于Logisic混沌序列的X n∈(0,1),因此將X寫成二進制形式,即
在式(9)中,(2L-Xn )相當于對XK求補碼,(2L-Xn )和XK均為L比特,乘積為2L bit,再與Lbit的 μ相乘,得到3L bit的乘積,然后除以2L就是把乘積右移L bit,取高L bif作為輸出結果,如圖3所示。
4 Logistic混沌映射的數字算法的實現
上述算法的實現采用中電華大的CIU51G128智能卡芯片,IDE(Integrated Development Environment)采用Keilvision2。Flash一般劃分為代碼區(qū)和數據區(qū),采用64 KB代碼,64 KB數據的規(guī)劃方式,數據區(qū)分為系統(tǒng)區(qū)、用戶數據區(qū)和備份區(qū)。其中,系統(tǒng)區(qū)主要存放自由指針、卡片狀態(tài)、MF(Master File)地址和算法常量等重要數據,故整個系統(tǒng)區(qū)
一般采用異或校驗或CRC 校驗來保證數據的一致性和正確性。系統(tǒng)區(qū)洋細規(guī)劃見表1。
注:物理地址=0x l 0000+邏輯地址
利用服務器生成的分型參數 μI, μ2, μ3和初始值X0,Y0,z0見表2,在卡片上采用Big Endian方式存儲生成的浮點數。
圖4為利用仿真器查看到的FLASH上系統(tǒng)區(qū)的內容,由于采用了Bank機制,代碼區(qū)占用了Bank 0和Bank 1,數據區(qū)占用了Bank 2和Bank 3,每個Bank的地址空間為0x8000~0xFFFF共32 KB 空間,因此數據區(qū)的邏輯地址0x0000對應于Bank 2的0x8000。
經過200次迭代后,X200,Y200和Z200見表3。
例如,加密的數據明文為{0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88},則采用前述3DES算法,第1輪加密使用密鑰X200,第2輪解密使用密鑰Y200,第3輪加密使用密鑰Z200,最后密文結果為{0xE3,0x1D,0x61,0xEF,0x68,0x9D,0xFB,0x72}。當服務器端收到密文后,根據卡片的ICCID 查找到對應的分型參數和初始值,同樣迭代200次后生成密鑰,第1輪解密使用密鑰 200,第2輪加密使用密鑰Y200,第3輪解密使用密鑰:Z200, 得到明文{0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88},這樣就完成了一次報文交換。
5 結束語
本文提出的動態(tài)信道加密方案具有速度快、代碼小、成本低和安全性好等優(yōu)點,適用于外部認證和敏感數據的傳輸。隨著智能卡應用領域的不斷擴大,該方案在遠程身份認證和金融交易等對安全性要求較高的場合具有較為廣闊的應用前景。
(文/天津理工大學光纖通信實驗室,王潔冉,馬秀榮,張佳明)