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