彭乾,李增局,史汝輝
(國家金融IC卡安全檢測(cè)中心,北京 100070)
EMV 應(yīng)用密文的差分錯(cuò)誤注入分析
彭乾,李增局,史汝輝
(國家金融IC卡安全檢測(cè)中心,北京 100070)
研究了EMV規(guī)范中應(yīng)用密文的生成過程,發(fā)現(xiàn)過程密鑰存在部分冗余位,結(jié)合DES算法S盒的壓縮特性,利用基于碰撞的safe-error攻擊實(shí)現(xiàn)對(duì)EMV規(guī)范中應(yīng)用密文主密鑰的破解。提出了針對(duì)應(yīng)用密文生成的差分錯(cuò)誤注入的物理模型和實(shí)施步驟,深入分析了影響攻擊效果的2個(gè)關(guān)鍵因素(密鑰錯(cuò)誤產(chǎn)生概率和碰撞概率),尤其是對(duì)不同錯(cuò)誤模型進(jìn)行了理論數(shù)據(jù)分析。實(shí)驗(yàn)分析表明,實(shí)際攻擊中,只要不同密鑰的碰撞概率差大于0.003 5即可區(qū)分,結(jié)果表明,過程密鑰的冗余位提高了碰撞概率,有利于對(duì)正確密鑰的區(qū)分。最后,針對(duì)該攻擊方法,提出了幾種防御方案。
EMV;應(yīng)用密文;碰撞攻擊;safe-error
EMV規(guī)范是由國際三大信用卡組織Europay、MasterCard、Visa聯(lián)合制定的,其中,金融集成電路卡支付標(biāo)準(zhǔn)是目前國際上絕大多數(shù)銀行卡使用的標(biāo)準(zhǔn)。我國的PBOC3.0規(guī)范也是基于EMV規(guī)范建立的,并根據(jù)特定需求,在EMV規(guī)范框架上進(jìn)行了細(xì)微的調(diào)整。
在EMV規(guī)范中,標(biāo)識(shí)金融IC卡不可抵賴性有對(duì)稱密鑰體系和非對(duì)稱密鑰體系。對(duì)稱密鑰體系主要是完成金融IC卡的聯(lián)機(jī)交易,基于該對(duì)稱密鑰的應(yīng)用密文和MAC等機(jī)制保證了IC卡交易的不可抵賴性和可信性。非對(duì)稱密鑰體系主要是基于三級(jí)密鑰證書體系保證金融 IC卡在脫機(jī)交易中的可信性和不可抵賴性。如果能破解金融IC卡的對(duì)稱密鑰,則完成了卡片復(fù)制,甚至進(jìn)行部分發(fā)卡行數(shù)據(jù)的改寫,完成偽卡交易。
目前,EMV規(guī)范[1]中主要用對(duì)稱密碼算法3DES,密鑰長度為128位,實(shí)際有效長度為112位。3DES的差分錯(cuò)誤注入分析在1997年已經(jīng)被提出。經(jīng)過多年的發(fā)展,有很多關(guān)于3DES的差分錯(cuò)誤注入分析模型[2~5]。隨著錯(cuò)誤注入的發(fā)展,針對(duì)EMV規(guī)范中RSA簽名算法的攻擊方式成果也很多。Coron等[6]提出了針對(duì)EMV規(guī)范簽名機(jī)制的攻擊。但是,到目前為止,還沒有針對(duì)EMV規(guī)范中3DES的分析,主要原因是在EMV規(guī)范中使用的加密算法協(xié)議,明密文不斷變化,無法對(duì)同一明密文進(jìn)行差分錯(cuò)誤注入分析。因此,本文首先提出了針對(duì)EMV規(guī)范中3DES的差分錯(cuò)誤注入的分析。
2.1EMV應(yīng)用密文
EMV規(guī)范中對(duì)應(yīng)用密文[1]的定義為:在交易過程中,由IC卡將相關(guān)交易數(shù)據(jù)(如交易金額、交易貨幣代碼、終端國家代碼、終端驗(yàn)證結(jié)果、交易日期、交易類型、隨機(jī)數(shù)、卡片應(yīng)用交互特征以及卡片驗(yàn)證結(jié)果等)經(jīng)3DES(CBC模式、雙倍長密鑰)加密生成的密文。終端收到卡片應(yīng)用密文,直接送到后臺(tái),后臺(tái)可以將應(yīng)用密文的有效性返回給終端,終端發(fā)送給卡片,確定該應(yīng)用密文是否有效。
應(yīng)用密文生成時(shí)使用的3DES加密密鑰為過程密鑰,由IC卡使用應(yīng)用密文主密鑰對(duì)交易計(jì)數(shù)器(ATC)進(jìn)行3DES加密生成。ATC為2個(gè)字節(jié)長度,初始為1,每筆交易后自動(dòng)加1,上限為65 535,因此過程密鑰為一次一密,每筆交易都不同。應(yīng)用密文的過程密鑰產(chǎn)生過程如下。
算法1過程密鑰生成算法
如果用雙長度DES密鑰生成,步驟如下。
1)生成過程密鑰的卡片密鑰為:數(shù)據(jù)加密3DES密鑰A和B(ENC UDK)。
2)將兩字節(jié)的ATC右對(duì)齊,前面補(bǔ)6個(gè)字節(jié)00,使用數(shù)據(jù)加密3DES密鑰A和B加密生成過程密鑰KA。
3)將兩字節(jié)的ATC取反后右對(duì)齊,前面補(bǔ)6個(gè)字節(jié)00,使用數(shù)據(jù)加密3DES密鑰A和B加密生成過程密鑰KB。
上述1)中使用的DES密鑰A和B是每張卡片唯一的應(yīng)用密文主密鑰。
應(yīng)用密文產(chǎn)生過程如下。
算法2應(yīng)用密文生成算法
1)將交易數(shù)據(jù)塊分成8字節(jié)一組:D1、D2、D3…。
2)如果最后一塊數(shù)據(jù)塊的長度為8個(gè)字節(jié),后面補(bǔ)8個(gè)字節(jié)數(shù)據(jù)塊:80 00 00 00 00 00 00 00。
如果最后一塊數(shù)據(jù)塊的長度小于8個(gè)字節(jié),后面補(bǔ)一個(gè)字節(jié)80,如果仍然不夠8個(gè)字節(jié),補(bǔ)00直到8個(gè)字節(jié)。
3)使用算法 1產(chǎn)生的過程密鑰用對(duì)稱密鑰算法生成應(yīng)用密文。
圖1是使用過程密鑰KA和KB生成應(yīng)用密文的流程。其中,I=輸入;D=數(shù)據(jù)塊;DEA(a)=數(shù)據(jù)加密算法(加密模式);KA=密鑰A;DEA(d)=數(shù)據(jù)加密算法(加密模式);KB=密鑰B;O=輸出;+=異或。
2.2碰撞攻擊
碰撞攻擊算法最早是出現(xiàn)在散列算法中[7]。碰撞攻擊要求算法的映射函數(shù)是多對(duì)一映射,只有滿足該條件才有可能產(chǎn)生碰撞。而 DES算法Sbox映射是64輸入對(duì)應(yīng)16輸出,因此,它具有碰撞攻擊的可行性。隨著功耗分析、差分錯(cuò)誤分析的提出,研究者逐漸關(guān)注DES的碰撞性質(zhì),并利用碰撞性質(zhì)得到密鑰[3,4]。在功耗分析技術(shù)中,攻擊者主要利用碰撞性質(zhì)及其功耗特征來確定碰撞行為是否發(fā)生。如果發(fā)生了碰撞,則可以通過建立方程或增加密鑰約束條件的方法縮小 DES密鑰的搜索空間。
碰撞攻擊比差分功耗分析或相關(guān)性功耗分析等方法普適性要差一些,主要原因有3點(diǎn):1)較難建立合適的碰撞模型;2)由于噪聲的存在,使通過功耗分析確定碰撞發(fā)生有一定難度,而差分錯(cuò)誤分析、錯(cuò)誤注入發(fā)生概率的問題,使碰撞分析難度加大;3)通過碰撞直接得到密鑰的難度很大。
2.3Safe-error
Safe-error攻擊是差分錯(cuò)誤分析發(fā)展過程中最簡便易行的一種攻擊手段。Safe-error攻擊可以分為操作性safe-error[8]和數(shù)據(jù)性safe-error[9]。最初,RSA算法為了防御簡單功耗分析和時(shí)間分析,會(huì)在實(shí)現(xiàn)過程中插入冗余運(yùn)算。Safe-error不需要關(guān)注錯(cuò)誤的結(jié)果,而只是通過判斷最終的結(jié)果正確與否來獲得信息。如果冗余操作與密鑰位有關(guān)系,比如密鑰位為 1,則不加入冗余操作;而密鑰位為 0,則加入冗余操作,通過對(duì)操作注入錯(cuò)誤,比較最終結(jié)果,如果最終結(jié)果出現(xiàn)錯(cuò)誤,則操作不是冗余的,得到的密鑰位為 1;反之,則操作是冗余的,得到密鑰位為 0。通過結(jié)果的正確與否,即可以判斷密鑰信息。這種攻擊過程屬于操作性的safe-error。
在DES運(yùn)算過程中,有一種錯(cuò)誤模型,無論其原始值是多少,能將DES任意密鑰比特置為1。因此,針對(duì)某個(gè)DES密鑰比特進(jìn)行操作,如果加密結(jié)果正確,說明DES原始密鑰比特為1,反之,則說明DES該比特為0。依次對(duì)不同密鑰進(jìn)行這種實(shí)驗(yàn),就可以逐個(gè)比特得到DES密鑰。這種方法就是屬于數(shù)據(jù)性safe-error。
3.1錯(cuò)誤模型及碰撞位置
根據(jù)錯(cuò)誤注入發(fā)生錯(cuò)誤的模型分類,可分為固定值錯(cuò)誤、固定翻轉(zhuǎn)錯(cuò)誤、隨機(jī)翻轉(zhuǎn)錯(cuò)誤、部分比特固定錯(cuò)誤等類型。本文研究3種錯(cuò)誤模型:目標(biāo)數(shù)據(jù)只發(fā)生0->1翻轉(zhuǎn)錯(cuò)誤、目標(biāo)數(shù)據(jù)只發(fā)生1->0翻轉(zhuǎn)錯(cuò)誤、目標(biāo)數(shù)據(jù)發(fā)生隨機(jī)翻轉(zhuǎn)錯(cuò)誤。
本文假設(shè)目標(biāo)數(shù)據(jù)的比特位之間是相互獨(dú)立的,且每個(gè)比特產(chǎn)生錯(cuò)誤的概率是相同的。目標(biāo)數(shù)據(jù)的多個(gè)比特的錯(cuò)誤概率可以使用二項(xiàng)分布的模型來計(jì)算。
本文采用碰撞攻擊的方法,DES運(yùn)算中的Sbox變換為6進(jìn)4出的非線性運(yùn)算,因此,存在碰撞的可能性。Sbox變換式為
本文研究對(duì)象為式(1)中的k,對(duì)k注入錯(cuò)誤得到k’。因此,對(duì)于明文輸入datain,從0~63遍歷,計(jì)算每一個(gè)明文分別對(duì)應(yīng)k和k’的Sboxout的值,如果兩者相等,則存在碰撞。
攻擊的目標(biāo)操作為DES或3DES運(yùn)算的最后一輪的Sbox運(yùn)算,3.2節(jié)會(huì)詳細(xì)分析選擇最后一輪作為攻擊目標(biāo)的原因。
圖1 用雙長度DES密鑰生成應(yīng)用密文
3.2攻擊模型
在生成應(yīng)用密文過程密鑰的過程中,如果應(yīng)用密文主密鑰加密ATC生成的密文結(jié)果(即應(yīng)用密文過程密鑰)每個(gè)字節(jié)的最低位(奇偶校驗(yàn)位)產(chǎn)生錯(cuò)誤,卡片仍然能生成正確的應(yīng)用密文,因?yàn)閷?duì)應(yīng)的這些奇偶校驗(yàn)位作為密鑰時(shí)不參與DES加密運(yùn)算,不會(huì)影響3DES的結(jié)果,定義為冗余位。因此,根據(jù)銀行后臺(tái)對(duì)應(yīng)用密文校驗(yàn)的結(jié)果,可以判斷應(yīng)用密文是否正確,從而形成safe-error攻擊。本節(jié)將詳細(xì)分析過程密鑰的8個(gè)冗余位帶來的碰撞和 Sbox自身碰撞的性質(zhì)是否有利于破解卡片的應(yīng)用密文主密鑰。
DES/3DES最后一輪的運(yùn)算如圖2所示。其中,L和R分別是DES的左寄存器和右寄存器,F(xiàn)是DES和S盒置換,P是32位置換表,IP-1是DES的最后置換。
圖2 DES/3DES最后兩輪運(yùn)算流程
根據(jù)DES運(yùn)算的流程可知,主密鑰加密結(jié)果中有 8位冗余位,即應(yīng)用密文過程密鑰的 8位校驗(yàn)位,分別為第8、16、24、32、40、48、56、64位,這些比特不參與應(yīng)用密文的加密運(yùn)算。DES的末尾逆置如圖3所示,該置換是一個(gè)一一映射的置換,通過數(shù)據(jù)變化增強(qiáng)了數(shù)據(jù)的混淆程序。
圖3 IP-1置換
根據(jù)圖2的算法流程可知,第16輪的L||R經(jīng)過了IP-1置換得到最終結(jié)果,因此,密鑰的8為校驗(yàn)位在IP-1置換前分別為第32、31、30、29、28、27、26、25位,即為第16輪L寄存器結(jié)果的最后一個(gè)字節(jié)。圖4是DES每輪中使用的置換,通過置換和Sbox的非線性效應(yīng),達(dá)到了混淆和置亂的目的,使密碼算法具有雪崩效應(yīng)。
圖4 P置換
根據(jù)圖2的算法流程可知,第16輪的L寄存器結(jié)果是由Sbox輸出經(jīng)P置換得到,因此,L寄存器的最后一個(gè)字節(jié)分別對(duì)應(yīng) Sbox輸出的第19、13、30、6、22、11、4、25位,即Sbox5的第3位、Sbox4的第1位、Sbox8的第2位、Sbox2的第2位、Sbox6的第2位、Sbox3的第3位、Sbox1的第4位、Sbox7的第1位。
3.1節(jié)中的模型對(duì)一般的碰撞定義為
在增加了8位冗余位之后,碰撞的定義需要將冗余位考慮進(jìn)去,對(duì)于 Sbox1,冗余位為第 4位,因此只需要考慮前3位,新的碰撞定義為
對(duì)比式(2)、式(3)可知,式(3)的解包含了式(2)的解。因此,使用3.1節(jié)的攻擊模型,同時(shí)引入8位冗余位的信息,理論上可以提高Sbox碰撞的概率,增加密鑰的區(qū)分度。其他Sbox的碰撞方程變化原理與Sbox1類似。
考慮到應(yīng)用過程密鑰產(chǎn)生時(shí)使用 ATC,對(duì)3DES進(jìn)行加密,攻擊3DES第48輪時(shí),可以認(rèn)為每個(gè)Sbox的輸入明文具有充分的統(tǒng)計(jì)隨機(jī)性,因此,對(duì)于DES Sbox的2個(gè)密鑰k和k'的碰撞概率,本文定義為數(shù)據(jù)datain從0~63遍歷,然后觀察式(3)成立的個(gè)數(shù)。如果個(gè)數(shù)越多,說明碰撞概率越大。
由于應(yīng)用密文過程生成過程為雙倍長密鑰的3DES加密,使用3.1節(jié)中的攻擊模型只能對(duì)3DES的最后一輪進(jìn)行攻擊,因此只能攻擊3DES的第一個(gè)密鑰,第二個(gè)密鑰需要暴力破解。對(duì)單個(gè)DES密鑰的破解不在本文的討論范圍內(nèi)。
由于應(yīng)用密文的產(chǎn)生過程是受ATC控制的,正常交易ATC是2個(gè)字節(jié)長度,即最大值為65 536。由2.1節(jié)描述可知,應(yīng)用密文產(chǎn)生過程中兩部分過程密鑰存在聯(lián)系,一次交易過程中產(chǎn)生兩次應(yīng)用密文和一次外部認(rèn)證,其中一次應(yīng)用密文和一次外部認(rèn)證的DES運(yùn)算結(jié)果是否正確可以得知。綜上,使用應(yīng)用密文主密鑰進(jìn)行的有效DES運(yùn)算約130 000(65 536×2)次,并且這些運(yùn)算的結(jié)果是否正確都可得知??紤]到實(shí)際中錯(cuò)誤注入會(huì)存在概率,在有限執(zhí)行次數(shù)中需要一定概率差值才能區(qū)分不同的密鑰。
3.3影響攻擊的關(guān)鍵因素
在有限次運(yùn)算中,如果在對(duì)Sbox子密鑰進(jìn)行錯(cuò)誤注入后,不同的Sbox子密鑰產(chǎn)生碰撞概率的差異足夠大,那么就可以通過密文的正確率來區(qū)分不同的子密鑰。設(shè)為錯(cuò)誤注入導(dǎo)致子密鑰產(chǎn)生錯(cuò)誤的概率,為因子密鑰發(fā)生錯(cuò)誤而產(chǎn)生碰撞的概率,則密文的正確率為
因此,影響應(yīng)用密文正確率的因素有2個(gè):一是密鑰錯(cuò)誤產(chǎn)生概率二是碰撞概率
3.3.1密鑰錯(cuò)誤產(chǎn)生概率
對(duì)于錯(cuò)誤發(fā)生概率,假設(shè)單比特錯(cuò)誤發(fā)生概率為P,在0->1翻轉(zhuǎn)錯(cuò)誤模型下,設(shè)6比特Sbox子密鑰中0的比特個(gè)數(shù)為m,則二階近似模型的錯(cuò)誤發(fā)生概率為
以子密鑰數(shù)據(jù)為0x1為例,m=5,則2個(gè)比特發(fā)生錯(cuò)誤概率為,不發(fā)生錯(cuò)誤的概率為發(fā)生一個(gè)比特錯(cuò)誤概率為
實(shí)際中錯(cuò)誤發(fā)生概率較小時(shí),如 P=0.2,在0->1翻轉(zhuǎn)模型下,若m<3,不可能發(fā)生3比特以上錯(cuò)誤;若m=3,發(fā)生3比特錯(cuò)誤概率比發(fā)生2個(gè)比特錯(cuò)誤概率小很多;若m=4,發(fā)生3比特以上錯(cuò)誤概率(0.027)比發(fā)生2比特錯(cuò)誤概率小很多;若m=5,發(fā)生3比特以上錯(cuò)誤概率(0.062 1)比發(fā)生2個(gè)比特錯(cuò)誤概率(0.205)小很多;若m=6,則發(fā)生3個(gè)比特以上錯(cuò)誤概率(0.1)比發(fā)生2個(gè)比特錯(cuò)誤概率(0.246)小很多。并且隨著P減小,2比特錯(cuò)誤概率要高于3比特以上錯(cuò)誤發(fā)生概率。
對(duì)于0->1的錯(cuò)誤模型和1->0的錯(cuò)誤模型,不同密鑰數(shù)據(jù)的錯(cuò)誤概率是不同的,而對(duì)于隨機(jī)錯(cuò)誤模型來說,密鑰數(shù)據(jù)的錯(cuò)誤概率是相同的。例如b000001和b111110對(duì)于0->1和1->0的錯(cuò)誤模型的錯(cuò)誤概率是完全不同的,但是對(duì)于隨機(jī)錯(cuò)誤模型則是相同的。
3.3.2碰撞概率
計(jì)算Sbox1的碰撞概率,根據(jù)式(3),其他Sbox的碰撞概率表都參考實(shí)現(xiàn)。這里,首先計(jì)算Sbox1的不同密鑰碰撞概率表。碰撞概率計(jì)算方式根據(jù)式(3)進(jìn)行,使用算法是算法3。
根據(jù)算法3計(jì)算Sbox1的碰撞概率表,錯(cuò)誤模型采用2.1節(jié)中描述的3種模型。
假設(shè)Sbox1密鑰每個(gè)比特獨(dú)立同分布,將錯(cuò)誤模型細(xì)分為一階碰撞、二階碰撞和高階碰撞。一階碰撞為密鑰key翻轉(zhuǎn)任意1比特產(chǎn)生的碰撞。二階碰撞為翻轉(zhuǎn)任意2比特產(chǎn)生的碰撞。高階碰撞則為翻轉(zhuǎn)任意3比特以上的碰撞。
由于DES Sbox具有良好的非線性性質(zhì),輸入改變?nèi)?比特,輸出至少改變2個(gè)比特,因此,由式(3)可知,不存在一階碰撞的可能性。而由3.3.1節(jié)分析可知,高階碰撞的錯(cuò)誤概率要遠(yuǎn)小于二階碰撞的錯(cuò)誤概率,因此只研究二階碰撞。
由于隨機(jī)錯(cuò)誤模型包含 0->1錯(cuò)誤模型和1->0的錯(cuò)誤模型,因此將二階隨機(jī)模型重新定義為:翻轉(zhuǎn)的2比特中0->1和1->0同時(shí)發(fā)生。
表1為Sbox1的二階碰撞概率。由表1可知,0->1錯(cuò)誤模型和 1->0的錯(cuò)誤模型對(duì)于互補(bǔ)的數(shù)據(jù)碰撞概率是相同的;隨機(jī)翻轉(zhuǎn)的碰撞概率較其他模型變化較小,這主要是由于隨機(jī)模型的二階翻轉(zhuǎn)變化較少。
表1 Sbox1二階碰撞概率
4.1仿真環(huán)境
本仿真實(shí)驗(yàn)平臺(tái)為PC一臺(tái),配置如下。
操作系統(tǒng)Windows XP Professional
CPUIntel Pentium(雙核2.7 G)
內(nèi)存2 GB
仿真工具M(jìn)icrosoft Visual Studio 2005
編程語言C
4.2實(shí)驗(yàn)步驟
參數(shù)說明:N為DES隨機(jī)密鑰(K)的個(gè)數(shù),K_R16為DES第16輪的子密鑰,DES_15()為DES的前15輪運(yùn)算,Sbox()為DES的Sbox置換運(yùn)算。
1)i=0;
2)判斷i是否小于N,若是,執(zhí)行3),否則執(zhí)行12);
3)ATC=1,生成DES算法64 bit隨機(jī)密鑰K;
4)使用KEY生成DES16輪子密鑰K_R16;
5)以P1、P2、P3、P4、P5的概率對(duì)K_R16進(jìn)行錯(cuò)誤注入(采用 A、B、C 3種模型)得到K_R16';
6)判斷ATC是否小于65 536,若是執(zhí)行7),否則執(zhí)行11);
7)計(jì)算R_15=DES_15(K,ATC),
Sboxout_16=Sbox(R_15,K_R16),
Sboxout_16'=Sbox(R_15,K_R16');
8)分別在考慮冗余位和不考慮冗余位的情況下,判斷Sboxout_16和Sboxout_16'是否碰撞,若是,執(zhí)行9),否則執(zhí)行10);
9)將發(fā)生碰撞所對(duì)應(yīng) Sbox子密鑰計(jì)數(shù)器加1;
10)ATC加1,執(zhí)行6);
11)將KEY_R16對(duì)應(yīng)的8個(gè)Sbox的密鑰計(jì)數(shù)器加1,i加1,執(zhí)行2);
12)計(jì)算碰撞發(fā)生的概率。
4.3仿真結(jié)果分析
圖 7為 Sbox1在 0->1模型下的正確率對(duì)比,虛線為考慮冗余位的概率曲線,實(shí)線為未考慮冗余位,即僅 Sbox自身性質(zhì)導(dǎo)致的。由圖可知,虛實(shí)線在相同的P的情況下,趨勢(shì)一致。但是隨著P的增大,虛線與實(shí)線的差距越來越大,說明隨著P的增大,冗余位導(dǎo)致的影響越來越大。
圖5 0->1翻轉(zhuǎn)模型下不同錯(cuò)誤概率的Sbox1正確率
圖6 隨機(jī)翻轉(zhuǎn)模型下不同錯(cuò)誤概率的Sbox1正確率
圖7 0->1模型下的Sbox1正確率對(duì)比
1)反向校驗(yàn)
根據(jù)應(yīng)用密文攻擊原理分析,本文提出了一種簡單有效的防御策略:應(yīng)用密文過程密鑰生成后,進(jìn)行反向運(yùn)算(3DES解密運(yùn)算),然后比較驗(yàn)證加密的輸入與解密的輸出是否一致,如果一致,說明未受到錯(cuò)誤注入,輸出結(jié)果;否則,觸發(fā)警報(bào),停止運(yùn)算,清除敏感數(shù)據(jù)。使用反向校驗(yàn)措施,可以校驗(yàn)8個(gè)冗余比特是否正確,從而降低碰撞概率。
2)使用替代算法
由2.1節(jié)的分析可知,冗余位是應(yīng)用密文生成過程中的弱點(diǎn),提高了碰撞的概率,因此可以考慮讓冗余位參與到實(shí)際的運(yùn)算中,冗余位的改變會(huì)使最后的應(yīng)用密文改變,那么也可以避免該漏洞。從現(xiàn)行 EMV規(guī)范看,使用 AES或者SMS4(PBOC 3.0)算法,可以避免類似的碰撞攻擊。
3)數(shù)據(jù)校驗(yàn)算法
在數(shù)字電路設(shè)計(jì)中,可以使用CRC等算法對(duì)數(shù)據(jù)過程結(jié)果進(jìn)行實(shí)時(shí)保護(hù)計(jì)算,保證數(shù)據(jù)運(yùn)算正確性,這樣冗余的比特可以通過類似校驗(yàn)算法進(jìn)行保護(hù),因此可以抵抗本文提出的攻擊方法。
本文通過研究發(fā)現(xiàn),在EMV規(guī)范中3DES算法產(chǎn)生應(yīng)用密文的過程中,存在部分過程密鑰的冗余。攻擊者可以利用這種冗余產(chǎn)生碰撞性攻擊,并利用safe-error方法判斷碰撞攻擊是否存在。通過統(tǒng)計(jì)結(jié)果的正確性,可以獲取很多比特的密鑰信息,從而對(duì)卡片的密鑰信息造成損害?;谶@種攻擊方法的原理,本文給出了幾種建議的防御方案,以提高卡片防御類似攻擊手段的能力。
[1]EMV. Integrated circuit card specifications for payment systems,book 2: security and key management,version4.2[EB/OL]. http://www.emvco.com.
[2]BIHAM E,SHAMIR A. Differential fault analysis of secret key cryptosystems[J]. Lncs,1999,1294:513-525.
[3]SCHRAMM K,WOLLINGER T,PAAR C. A new class of collision attacks and its application to DES[C]//International Conference Fast Software Encryption(FSE). c2003: 206-222.
[4]RIVAIN M. Differential fault analysis on DES middle rounds[J]. Lecture Notes in Computer Science,2009,5747: 457-469.
[5]LEE C. A new approach of differential fault analysis on block ciphers with S-box[J]. International Journal on Information,2013(16): 1915-1928.
[6]CORON J S,NACCACHE D,TIBOUCHI M. Fault attacks against EMV signatures[C]//International Conference Topics in Cryptology. c2010: 208-220.
[7]CONTINI S,YIN Y L. Forgery and partial key-recovery attacks on HMAC and NMAC using hash collisions[M]//Advances in Cryptology. Berlin Heidelberg: Springer,2006:37-53.
[8]YEN S M,KIM S,LIM S,et al. A countermeasure against one physical cryptanalysis may benefit another attack[C]//International Conference Information Security and Cryptology. c2002: 414-427.
[9]YEN S M,JOYE M. Checking before output may not be enough against fault-based cryptanalysis[J]. IEEE Transactions on Computers,2002,49(9): 967-97.
Differential fault analysis on EMV application cryptogram
PENG Qian,LI Zeng-ju,SHI Ru-hui
(National Financial IC Card Test Center,Beijing 100070,China)
The process of application cryptogram in EMV was researched and dummy bits in session key were found. Based on the session key's dummy bits and compressive property of DES's Sbox,much information of the application cryptogram master key was got by using safe-error attack. The differential fault attack model and steps to implement the attack were proposed,two key factors(the probability of generating wrong key and the probability of collision happening)affecting an attacking result were analyzed. The theoretical result and simulation of the attack were given. The experiment results show that the two keys could be distinguished in a real attacking when the difference of two key's collision probability was bigger than 0.003 5. The dummy bits in the key will increase the difference and make distinguishing easier. Finally,several countermeasures against the attack were proposed.
EMV,application cryptogram,collision attack,safe-error
National Science and Technology Major Project(No.2014ZX01032401)
TP309.7
A
10.11959/j.issn.2096-109x.2016.00044
2016-01-14;
2016-03-27。通信作者:李增局,liecas@sina.com
國家科技重大專項(xiàng)基金資助項(xiàng)目(No.2014ZX01032401)
彭乾(1982-),男,蒙古族,內(nèi)蒙赤峰人,碩士,國家金融IC卡安全檢測(cè)中心工程師,主要研究方向?yàn)榻鹑贗C卡、金融Pos機(jī)安全技術(shù)。
李增局(1982-),男,山東莘縣人,碩士,國家金融IC卡安全檢測(cè)中心工程師,主要研究方向?yàn)閭?cè)信道、錯(cuò)誤注入、密碼學(xué)工程實(shí)現(xiàn)以及借貸記交易安全性等。
史汝輝(1985-),男,山東煙臺(tái)人,碩士,國家金融IC卡安全檢測(cè)中心工程師,主要研究方向?yàn)閭?cè)信道、錯(cuò)誤注入、密碼學(xué)工程實(shí)現(xiàn)以及借貸記交易安全性等。