姜久興,厚嬌,黃海,趙玉迎,馮新新
(1. 哈爾濱理工大學(xué)理學(xué)院,黑龍江 哈爾濱 150080;2. 哈爾濱理工大學(xué)軟件與微電子學(xué)院,黑龍江 哈爾濱 150080;3. 哈爾濱理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150080)
高級(jí)加密標(biāo)準(zhǔn)(AES, advanced encryption standard)算法因安全性、效率、靈活性等方面具有良好的性能,因此被廣泛地應(yīng)用在實(shí)踐中。側(cè)信道攻擊(SCA, side-channel attack)技術(shù)[1]的出現(xiàn)對(duì)加密芯片的安全性構(gòu)成了很大的威脅,典型的SCA包括時(shí)間分析攻擊、電磁輻射攻擊、功耗分析攻擊[2]等,其中差分功耗攻擊(DPA, differential power attack)[3],尤其是高階DPA,對(duì)芯片的硬件安全的威脅最大,采用掩碼方案是抵御DPA最有效的方法。AES加密算法的安全性將隨著掩碼階數(shù)的增加而提高,但掩碼階數(shù)的增加會(huì)帶來硬件成本成倍的增加。目前,掩碼方案主要有查找表掩碼[4-5]、加法鏈掩碼[6]和復(fù)合域掩碼[7]這3種,相較于后2種方案,查找表掩碼方案具有實(shí)現(xiàn)速度快、易于實(shí)現(xiàn)等特點(diǎn),但存在存儲(chǔ)空間大的不足,難以應(yīng)用到資源受限的設(shè)備中。針對(duì)這一問題,Nassar等[8]提出了一種循環(huán)移位S盒掩碼(RSM, rotating S-box masking)方案,該方案能夠有效地降低面積復(fù)雜度,是一種安全性和性能的折中方案,能夠抵抗一階和二階 SCA。然而,對(duì)于一些面積受限的設(shè)備,例如智能卡、物聯(lián)網(wǎng)終端設(shè)備等,RSM仍不能滿足實(shí)際的應(yīng)用需求[9]。
本文在RSM方案的基礎(chǔ)上,分析了RSM方案掩碼值的特點(diǎn),提出了一種基于S盒共用的方案,所提方案能使面積復(fù)雜度進(jìn)一步降低,并針對(duì)AES進(jìn)行了掩碼方案架構(gòu)設(shè)計(jì)與硬件實(shí)現(xiàn),對(duì)整體架構(gòu)進(jìn)行了流水線的設(shè)計(jì)。所提方案與RSM方案相比,大幅度降低了面積復(fù)雜度,從理論上和實(shí)驗(yàn)上證明了具有更高的安全性和更好的性能。所提方案在滿足性能和安全性的前提下,能夠有效地節(jié)約硬件資源,降低實(shí)現(xiàn)成本,對(duì)資源受限的設(shè)備和民用小型服務(wù)器具有重要的意義。
AES加密算法的掩碼方案中,基于查找表的掩碼方案通過采用S盒重計(jì)算技術(shù)增加攻擊難度來抵御SCA。1999年,Chari等[10]首次提出了隨機(jī)查找表方案,對(duì)S盒進(jìn)行了T(u)=S(u⊕r)⊕s的隨機(jī)化處理,其中,u是明文,r是輸入掩碼,s是輸出掩碼。但是該方案沒有對(duì)AES的所有輪都添加掩碼,因此僅能抵御一階DPA。文獻(xiàn)[11]對(duì)文獻(xiàn)[10]中所提方案采用中間輪攻擊操作,得到了正確的密鑰。2001年,Itoh等[12]采用固定值掩碼方案抵御中間輪攻擊,但所有輪操作都采用同一掩碼值。該方案著重考慮AES加密算法的加密速度,將隨機(jī)掩碼和根據(jù)隨機(jī)掩碼計(jì)算得到的S盒存儲(chǔ)在ROM中,減少了 RAM 的空間。但是該方案只能抵御一階SCA,不能抵抗二階及以上的SCA,因?yàn)橥ㄟ^對(duì)2個(gè)經(jīng)過掩碼的中間結(jié)果進(jìn)行異或處理,就可以去掉掩碼值。
Nassar等[8]提出了RSM方案,采用了低熵掩碼設(shè)計(jì),利用16個(gè)不同的S盒,解決了固定值掩碼方案難以抵抗二階SCA攻擊的問題。RSM掩碼原理如式(1)所示。
其中,SB表示128位數(shù)據(jù)的字節(jié)替代操作,X表示需要掩碼的 128位數(shù)據(jù)j的選取在第一輪,之后每輪都是固定值(即掩碼值循環(huán)左移),因此掩碼值的選取共有 16種可能。在每輪加密操作結(jié)束后需要進(jìn)行掩碼補(bǔ)償,即去掉上次的掩碼,添加新的掩碼。為了提高 AES加密算法的計(jì)算速度,使用重計(jì)算的16個(gè)S盒存儲(chǔ)在ROM中。
RSM 方案的優(yōu)點(diǎn)在于以犧牲少量面積和性能為代價(jià),達(dá)到抵御一階SCA攻擊、二階SCA攻擊、零值攻擊等攻擊,有效地提高了 AES的安全性。2014年,Yamashita等[13]公布了一種變種的RSM方案 vRSM(variant RSM),該方案去掉了中間輪的重新掩碼操作(這些操作對(duì)于 RSM 方案是不可或缺的),在不影響安全性的前提下,進(jìn)一步降低掩碼的復(fù)雜度,其面積開銷為RSM方案的90%,但該方案的輸出掩碼值是由輸入掩碼值決定的。2015年,徐佩[14]提出了改進(jìn)的RSM方案,該方案充分考慮了掩碼值的漢明質(zhì)量,對(duì)隨機(jī)掩碼的選取進(jìn)行了優(yōu)化設(shè)計(jì),同時(shí)對(duì)S盒循環(huán)移位的次數(shù)進(jìn)行了隨機(jī)化設(shè)計(jì),能夠抵抗基于一階偏移量的相關(guān)性功耗分析(CPA, correlation power analysis),這是RSM方案不具備的。為了增加算法的加密速度,文獻(xiàn)[14]對(duì)AES的前兩輪和最后兩輪采用隨機(jī)掩碼的方式,其他中間輪采用固定值掩碼的方式,這樣中間輪能夠采用相同的掩碼S盒,減少計(jì)算掩碼S盒數(shù)量,提高速度??梢钥闯?,文獻(xiàn)[14]提出的方案是RSM方案的改進(jìn)方案,但存在不能抵御中間輪的攻擊和面積相對(duì)于其他方案面積有所增加的缺點(diǎn),從安全性方面看,仍不是一個(gè)最優(yōu)的方案。
綜上,現(xiàn)有的基于查找表掩碼的掩碼方案難以兼顧安全性和復(fù)雜度。本文在分析 RSM 方案掩碼值特點(diǎn)的基礎(chǔ)上,提出了一種低熵掩碼方案,通過S盒共用思想減少掩碼S盒的數(shù)量,從而進(jìn)一步降低RSM方案的面積復(fù)雜度。
根據(jù)文獻(xiàn)[15]可知,RSM方案的掩碼值必須是正交的,這樣才能確保算法的安全性。因此,本文掩碼值的選擇方法采用文獻(xiàn)[16]中的方法,具體如下。假設(shè)正交矩陣的維度是Q,列數(shù)是N,行數(shù)是Q^J,J的選取需滿足,首先利用置換方法獲得正交矩陣[16],其中,Q=2,N=15,J=4,生成的正交矩陣A有 15列,如式(2)所示。這 15列的值分別為00ff、0f0f、0ff0、3333、33cc、3cc3、3c3c、5555、55aa、5a5a、5aa5、6666、6699、6969、6996,然后從正交矩陣A中隨機(jī)選擇8列構(gòu)造滿足約束條件的16個(gè)掩碼值。通過分析矩陣A能夠看出,每一列中的4個(gè)十六進(jìn)制數(shù)的要么相同,要么取反,這也是本文設(shè)計(jì)S盒共用掩碼方案能夠?qū)崿F(xiàn)的基礎(chǔ)。
S盒共用掩碼方案是一個(gè)通用方案,適用于掩碼值滿足正交向量要求的任意掩碼方案。以隨機(jī)選取{0x00 0x0f 0x36 0x39 0x53 0x5c 0x65 0x6a 0x95 0x9a 0xa3 0xac 0xc6 0xc9 0xf0 0xff }為例,對(duì)該方案進(jìn)行詳細(xì)說明。能夠看出隨機(jī)選取的 16位掩碼值中,高4位和低4位不是相同就是互補(bǔ)。根據(jù)這一特征,進(jìn)行如下分組,用Mt表示,t∈[1,4]。
在每組掩碼分組中選用的掩碼值滿足如式(7)所示的條件。
其中,x是無掩碼的8位數(shù)據(jù),Mtr為第t個(gè)掩碼分組中的第r個(gè)掩碼值,是S盒的輸入掩碼,Mt(r+1)mod4是S盒的輸出掩碼,S代表S盒操作,Sm代表帶掩碼的S盒操作。
全部128位明文的掩碼滿足
其中,P、Q、H、N∈t,表示在上述掩碼分組中挑選任意一組;p,q,j,n∈[1,4],表示從每組中選擇第幾個(gè)值為掩碼分組的第一個(gè)掩碼值。上述的掩碼分組中能夠隨機(jī)挑選一組作為共用S盒,假設(shè)在第t組中可選共用的S盒輸入掩碼為mt2,輸出掩碼為mt3。例如在M2中,選擇“39”為輸入掩碼,則“c6”為輸出掩碼,表示為Sbox_M22_M23,第t組的共用S盒表示為Sbox_Mtr_Mt(r+1)mod4。S盒共用掩碼方案原理如圖1所示。
圖1 S盒共用掩碼方案原理
在每組掩碼分組中,首先根據(jù)選擇的輸入輸出掩碼計(jì)算得到共用S盒,剩余的3組掩碼值與所選擇的輸入輸出掩碼存在固定關(guān)系,即掩碼值的高低位不是相同,就是互補(bǔ)。按照這個(gè)規(guī)律,利用S盒共用掩碼方案可以有效地降低掩碼 S盒的數(shù)量,具體過程如下。當(dāng)32位的中間值異或一組掩碼值時(shí),能夠通過判斷該組掩碼值的輸入掩碼和共用 S盒輸入掩碼高低位關(guān)系來選擇地址;如果值相同,那么S盒的地址不變,否則,S盒的地址取反;同樣能夠通過判斷該組掩碼值的輸出掩碼和該組共用S盒的輸出掩碼的高低位關(guān)系來選擇輸出;如果值相同,那么S盒的輸出不變,否則,S盒輸出取反。因此,每組就能夠利用同一個(gè)S盒(8位)來實(shí)現(xiàn)字節(jié)替代操作。
4.1.1 線性操作的掩碼實(shí)現(xiàn)
1) XOR掩碼——密鑰加操作
XOR(exclusive-OR)操作將輪密鑰與輸入數(shù)據(jù)進(jìn)行異或操作,其結(jié)果進(jìn)行字節(jié)替代操作,該中間結(jié)果和密鑰有很強(qiáng)的關(guān)系,所以一定要對(duì) XOR操作進(jìn)行掩碼。密鑰加是線性操作,能夠利用異或操作實(shí)現(xiàn)掩碼,但必須注意和掩碼值異或的順序,一定要確保所有中間值都是經(jīng)過掩碼的,不能存在某個(gè)中間值沒有進(jìn)行掩碼就直接進(jìn)行某個(gè)變換,這樣才能夠保證XOR操作不泄露任何的中間結(jié)果。
2) SR掩碼——行移位操作
SR(shift row)操作在字節(jié)替代變換之后,由式(7)可以看出,經(jīng)過字節(jié)替代操作的中間值仍受掩碼保護(hù),所以不需要再添加新的掩碼值。
3) MC掩碼——列混合操作
SR之后進(jìn)行MC(mix column)操作,與SR類似,該操作的中間值也是具有掩碼的,因此不需要再添加新的掩碼值。
4.1.2 掩碼補(bǔ)償
本文方案的掩碼補(bǔ)償發(fā)生在每輪加密結(jié)束時(shí),通過異或操作去掉原掩碼值,增加新掩碼來實(shí)現(xiàn)掩碼更新。為了得到正確的密文,最后一輪僅需去除現(xiàn)在的掩碼值,不需要添加新掩碼。進(jìn)行字節(jié)替代操作之后,中間值是具有掩碼的,根據(jù)式(7)~式(9),把掩碼值按照矩陣形式進(jìn)行排列,其每輪的行變換關(guān)系如圖2所示。
圖2 掩碼值每輪的行變換關(guān)系
對(duì)非最后一輪的輸入掩碼依次進(jìn)行行變換(LT,line transformation)操作、SR掩碼、MC掩碼和添加新的掩碼操作,而最后一輪僅需對(duì)輸入掩碼進(jìn)行LT操作和SR操作。為了保證算法的安全性,在每輪 XOR操作結(jié)束時(shí),需要進(jìn)行掩碼補(bǔ)償操作,即先添加新掩碼然后去掉之前的掩碼,具體操作如圖3所示。
圖3 掩碼補(bǔ)償操作
AES算法中字節(jié)替代是唯一的非線性操作,為了滿足掩碼的基本原則,設(shè)計(jì)的式(7)能夠滿足對(duì)字節(jié)替代操作的掩碼,在進(jìn)行字節(jié)替代時(shí)要通過重新計(jì)獲得新的S盒。在4個(gè)掩碼值分組中,分別計(jì)算4個(gè)掩碼分組中每組內(nèi)的共用S盒,該組內(nèi)共用S盒的選擇有4種情況,能夠隨機(jī)挑選任意一個(gè)作為共用的掩碼S盒,所以需要4個(gè)共用S盒。
S盒共用掩碼方案在進(jìn)行字節(jié)替代操作時(shí),輸入值為32位,32位的數(shù)據(jù)被分為4組,每一組為8位。進(jìn)行字節(jié)替代操作時(shí),根據(jù)輪操作中間值的掩碼值,選擇相應(yīng)的共用S盒完成操作。在進(jìn)行字節(jié)替代操作時(shí),這4組數(shù)據(jù)是并行執(zhí)行的。S盒共用掩碼方案字節(jié)替代模塊的原理如圖4所示。首先32位明文被分為4組,每組8位,這4組數(shù)據(jù)分別與MP、MQ、MH和MN進(jìn)行異或操作,然后進(jìn)行字節(jié)替代操作,最后把這4組字節(jié)替代后的值組合成32位的數(shù)據(jù)。
AES的密鑰擴(kuò)展是把初始的128位密鑰平均分為4組,進(jìn)行密鑰擴(kuò)展操作,共產(chǎn)生44組密鑰(包括初始密鑰),每組32位,當(dāng)分組的組數(shù)是4的倍數(shù)時(shí),需要進(jìn)行字節(jié)替代操作,這也是密鑰擴(kuò)展模塊唯一的非線性操作,字節(jié)替代操作共需要4個(gè)S盒,其中,S盒與輪操作中的S盒相同,因此共用S盒方案也能夠用于密鑰擴(kuò)展模塊。對(duì)于密鑰擴(kuò)展操作而言,其線性部分和S盒都可按照輪操作的掩碼方式進(jìn)行掩碼,從而提高安全性。在進(jìn)行密鑰擴(kuò)展時(shí),首先128位密鑰與掩碼值進(jìn)行異或操作,然后分為4組進(jìn)行密鑰擴(kuò)展,由于應(yīng)用S盒共用的掩碼方案,因此在進(jìn)行字節(jié)替代操作時(shí)僅需要4個(gè)掩碼S盒。由于密鑰擴(kuò)展產(chǎn)生的密鑰添加了掩碼,為了得到正確的密文,在進(jìn)行密鑰加操作之后要去掉密鑰的掩碼值,因?yàn)榱谢旌喜僮髦蟮闹虚g結(jié)果是帶有掩碼值的數(shù)據(jù),所以并不會(huì)泄露真實(shí)的中間結(jié)果。
圖4 S盒共用掩碼方案的字節(jié)替代模塊
為了提高算法的執(zhí)行效率,對(duì)S盒共用掩碼方案進(jìn)行了流水線設(shè)計(jì)[17-19]。根據(jù)文獻(xiàn)[19]可知,若交換算法的行移位模塊與字節(jié)替代模塊的操作順序,不會(huì)對(duì)密文有影響,從而可實(shí)現(xiàn)流水線設(shè)計(jì)。由于S盒共用掩碼方案字節(jié)替代用到了4個(gè)S盒,最終實(shí)現(xiàn)128位數(shù)據(jù)的字節(jié)替代操作需要4個(gè)周期,本文設(shè)計(jì)的流水線時(shí)空?qǐng)D如圖5所示,其中“(1)”~ “(4)”表示要加密的4個(gè)32位數(shù)據(jù)。當(dāng)128位明文輸入時(shí),按照順序每組32位進(jìn)行拆分。每組數(shù)據(jù)按照字節(jié)替代、MC、XOR與掩碼補(bǔ)償?shù)捻樞蜻M(jìn)行操作,再對(duì)其他32位數(shù)據(jù)依次進(jìn)行同樣的操作,直至執(zhí)行完128位的數(shù)據(jù)。這樣的方式能夠確保每個(gè)周期所有的硬件模塊都在工作,增加了硬件使用率,提高了S盒共用掩碼方案的加密速度。
S盒共用掩碼方案的流水線設(shè)計(jì)數(shù)據(jù)加密結(jié)構(gòu)框架如圖6所示,該框架主要包括18個(gè)模塊,其中,拆分模塊對(duì)數(shù)據(jù)進(jìn)行拆分,選擇模塊對(duì)多組數(shù)據(jù)進(jìn)行選擇,重組模塊對(duì)數(shù)據(jù)進(jìn)行重組處理,緩存器主要對(duì)數(shù)據(jù)的傳輸進(jìn)行緩沖和存儲(chǔ)。
圖5 流水線時(shí)空?qǐng)D
圖6 流水線設(shè)計(jì)數(shù)據(jù)加密結(jié)構(gòu)框架
本文設(shè)計(jì)的AES掩碼方案如圖7所示。該方案首先將明文與隨機(jī)選擇的4組掩碼值進(jìn)行異或,然后進(jìn)行 XOR操作,這個(gè)結(jié)果即為中間輪的輸入。對(duì)于非最后一輪的所有中間輪依次進(jìn)行 SR、字節(jié)替代、MC、XOR與掩碼補(bǔ)償操作,最后一輪加密依次進(jìn)行 SR、字節(jié)替代、XOR,并進(jìn)行掩碼補(bǔ)償操作得到最后的密文并輸出。圖7中K0~K43表示的是44組密鑰值,每組32位。
為提高算法的安全性,在數(shù)據(jù)進(jìn)行加密時(shí)采用亂序的方式對(duì)4組數(shù)據(jù)進(jìn)行字節(jié)替代、MC、XOR和掩碼補(bǔ)償?shù)炔僮?。因?yàn)樵黾恿藖y序執(zhí)行這4組32 位數(shù)據(jù)的操作,所以在這128位數(shù)據(jù)完成上述操作后,要對(duì)其進(jìn)行重新排序,排序之后的結(jié)果為下一輪的數(shù)據(jù)輸入,該操作能夠確保正確密文的輸出。
圖7 AES掩碼實(shí)現(xiàn)
字節(jié)替代操作采用串行查找方式進(jìn)行,每128位數(shù)據(jù)需要進(jìn)行4次字節(jié)替代操作,通過比較RSM方案和S盒共用掩碼方案可知,RSM 方案共占用16個(gè)掩碼S盒,S盒共用掩碼方案僅占用4個(gè),為RSM方案的25%。但進(jìn)行S盒操作時(shí),128位數(shù)據(jù)采用串行查找的方式,依次處理32位數(shù)據(jù),這樣使字節(jié)替代操作的吞吐量變?yōu)樵瓉淼?,適用于面積受限的應(yīng)用。
為了增加算法的運(yùn)算速度,S盒共用掩碼方案利用與固定值掩碼方案相同的空間存儲(chǔ)方式,在進(jìn)行加密之前,提前選好掩碼值,根據(jù)選擇的掩碼值計(jì)算好與之對(duì)應(yīng)的共用S盒,并把共用S盒存儲(chǔ)在ROM 中。在進(jìn)行加密時(shí),根據(jù)設(shè)計(jì)方案選取隨機(jī)掩碼和與之對(duì)應(yīng)的掩碼S盒執(zhí)行操作,這種方式能夠降低占用的RAM空間。S盒共用掩碼方案需要在ROM中存儲(chǔ)的值如下。
1) 具有正交向量特征的掩碼值Mt。
2) 根據(jù)設(shè)計(jì)規(guī)則選擇的每組掩碼值的偏移量p、q、h、n。
3) 根據(jù)選擇的輸入輸出掩碼計(jì)算得到的掩碼S盒,即共用S盒,數(shù)目為4。
4) 根據(jù)輸出掩碼計(jì)算每輪的掩碼補(bǔ)償值。
通過上述的設(shè)計(jì)方案,能夠直接從ROM中調(diào)用需要的值進(jìn)行加密運(yùn)算,RAM 只需要存儲(chǔ)臨時(shí)的變量,如XOR、SR等操作的中間值。因?yàn)橛?jì)算共用S盒需要花費(fèi)很多的時(shí)間,所以對(duì)整個(gè)算法的時(shí)間花費(fèi)主要集中在初始階段[9],之后的操作當(dāng)需要某些中間值時(shí),直接從ROM中調(diào)用即可,通過這樣的方式提高了算法的運(yùn)算速度。與 RSM 方案相比,S盒共用掩碼方案占用更少的面積,并且安全性也有所提高。
為了驗(yàn)證S盒共用掩碼方案的功能正確性,對(duì)S盒共用掩碼方案進(jìn)行了Verilog HDL建模,通過Modelsim SE 10.0c仿真軟件進(jìn)行仿真。無掩碼AES方案、RSM方案和S盒共用掩碼方案的字節(jié)替代的仿真結(jié)果分別如圖8~圖10所示。
圖8 無掩碼AES方案字節(jié)替代操作
圖9 RSM方案字節(jié)替代操作
圖10 S盒共用掩碼方案字節(jié)替代操作
在測(cè)試3種方案字節(jié)替代的功能時(shí),RSM方案和 S盒共用掩碼方案采用相同的測(cè)試數(shù)據(jù)。圖 8~圖10中data_in和data是需要進(jìn)行字節(jié)替代操作的128位數(shù)據(jù),data_out是進(jìn)行字節(jié)替代之后的128位輸出數(shù)據(jù),m是掩碼值,dm是去除掩碼后的值,m1是共用S盒對(duì)應(yīng)輸入掩碼的輸出掩碼。可以看出,圖9和圖10中的dm值與圖8中的data_out值相同,從而證明了S盒共用掩碼方案中字節(jié)替代的正確性。
基于S盒共用掩碼方案的整個(gè)AES掩碼方案仿真結(jié)果如圖11所示,流水線設(shè)計(jì)的功能仿真結(jié)果如圖12所示。圖11中,cipher_key 是密鑰值,plain_text是明文數(shù)據(jù),m是掩碼值,cipher_text 是加密得到的密文。從圖12中能夠看出,128位密文“cipher_text”需要4個(gè)周期輸出,每個(gè)周期輸出32位。從測(cè)試結(jié)果可以看出,根據(jù)輸入的明文和密鑰,能夠輸出正確的密文,可以驗(yàn)證本文所提方案的功能正確性。
圖11 S盒共用掩碼方案實(shí)現(xiàn)AES算法
圖12 流水線設(shè)計(jì)的仿真
SCA是利用AES操作過程中的中間結(jié)果與密鑰之間的相關(guān)性進(jìn)行攻擊的,因此證明中間結(jié)果的概率分布與密鑰無關(guān),即可證明算法的安全性。把128位的輸入數(shù)據(jù)分為4個(gè)32位的數(shù)據(jù)進(jìn)行處理,只用一個(gè)字節(jié)替代架構(gòu),依然能夠保證AES算法自身的安全性。
引理 1若被掩碼的中間值可表示為'u=ux,其中,u為計(jì)算得到的中間值,x是隨機(jī)掩碼。那么u'的概率分布與密鑰是不相關(guān)的[20]。
文獻(xiàn)[20]中給出了引理 1論證,因此根據(jù)該理論可以證明S盒共用掩碼方案可以抵抗一階SCA。定義評(píng)估的相關(guān)系數(shù)[21]為
利用 SAT(SAT-solver)求解[22]對(duì) S盒共用掩碼方案有 RSM 方案具有的安全性進(jìn)行證明,即可以抵抗一階與二階零偏移量的CPA,有以下結(jié)果。
2) 若2個(gè)隨機(jī)變量互補(bǔ),那么它們的交互信息為MIA=1.817 6 B。對(duì)于2個(gè)互補(bǔ)的掩碼,m是均勻分布的一對(duì),例如但。所以主要的目標(biāo)是清掉,1.817 6 B對(duì)交互信息來說仍是相當(dāng)大的。
能夠發(fā)現(xiàn)交互信息I[HW(x⊕m);x]是0.216 8 B。
根據(jù)以上引理和結(jié)果可證明,S盒共用掩碼方案可以抵抗一階和二階SCA,有RSM具有的安全性。
因?yàn)?CPA是利用中間值與密鑰間的聯(lián)系對(duì)加密方案進(jìn)行攻擊的,所以通過證明中間值的概率分布不受密鑰的影響,即不相關(guān),就可以證明加密方案可抗 CPA。在文獻(xiàn)[14]中給出了一種掩碼方案能否抵御CPA的定理,如定理1所示。
定理 1若掩碼方案存在n個(gè)中間值它們的概率分布都與密鑰無關(guān),而且的聯(lián)合概率分布也不受密鑰的任何影響,就可以證明該方案能抵御一階和高階CPA。
假設(shè)經(jīng)過掩碼的中間值'u=ux,其中,u是算法運(yùn)算的中間值,x是隨機(jī)掩碼。那么'u的概率分布與密鑰沒有關(guān)系,因此可證明該算法能夠抵御一階CPA。同理,假設(shè)有n(n>1)個(gè)中間值,且均服從均勻分布,并且被隨機(jī)變量進(jìn)行掩碼,同樣相互獨(dú)立,并滿足
此外,文獻(xiàn)[14-15]指出,RSM方案的安全性存在以下2個(gè)漏洞。
1) RSM 方案的掩碼值經(jīng)過異或操作,得到的值的漢明質(zhì)量存在特定的規(guī)律,即 HW(mjXORmj+1)=4,HW(m0XORm15)=8。
2) 該方案的S盒循環(huán)偏移量是一個(gè)常數(shù),為1。
S盒共用掩碼方案相鄰掩碼值經(jīng)過異或操作后不存在1)的特征,并且S盒共用掩碼方案不需要循環(huán)移位,因此也沒有2)的缺陷。表1給出了4種方案的安全性對(duì)比。
綜上所述,S盒共用掩碼方案的所有中間值與密鑰不相關(guān),可以抵抗一階和高階的CPA;采用掩碼值隨機(jī)選取和字節(jié)替代順序隨機(jī)執(zhí)行,使相鄰掩碼進(jìn)行異或操作之后的漢明質(zhì)量為隨機(jī)值,因此可以抵御基于偏移量的CPA。
在相同的實(shí)現(xiàn)方式下,對(duì)AES加密算法的無掩碼AES方案、RSM方案[8]、vRSM方案[13]和S盒共用掩碼方案法進(jìn)行Verilog建模,并在FPGA上實(shí)現(xiàn)。所采用的FPGA芯片為擇Cyclone III系列(EP3C120F78017),邏輯綜合結(jié)果如表2所示。
表2中,括號(hào)內(nèi)的百分比是相比于無掩碼方案所占用的資源,“+”號(hào)代表增加的百分比,“-”號(hào)代表減少的百分比。從表2中能夠看出,本文提出的 S盒共用掩碼方案需要的掩碼 S盒數(shù)目是RSM方案的(不包括密鑰擴(kuò)展模塊),因此很大程度地減少了面積開銷。S盒共用掩碼方案需要3 184個(gè)總邏輯單元,總邏輯單元數(shù)為RSM方案的58%、vRSM方案的61%、無掩碼AES方案的63%;其中,時(shí)序邏輯單元有2 766個(gè),組合邏輯單元有1 838個(gè),所需的存儲(chǔ)位是84 545位,其大小為RSM方案、vRSM方案和無掩碼方案的21%。本文所提方案在執(zhí)行字節(jié)替代操作時(shí)采用串行方式,因此每輪字節(jié)替代操作需4個(gè)周期,是其他3種方案的4倍。
表1 安全性分析
表2 4種S盒實(shí)現(xiàn)方案比較
表3 流水線實(shí)現(xiàn)方案的對(duì)比
對(duì)無掩碼AES方案、RSM方案及S盒共用掩碼方案采用流水線的方式實(shí)現(xiàn),得到的結(jié)果如表 3所示。從表3可知,S盒共用掩碼方案使用了4 352個(gè)總邏輯單元,是RSM方案的39%;組合邏輯單元為1 986個(gè),是RSM方案的31%;時(shí)序邏輯單元為4 220個(gè),是RSM方案的40%;存儲(chǔ)位為81 956位,是RSM方案的20%。結(jié)果顯示,S盒共用掩碼方案在占用資源的花費(fèi)上有著特別大的優(yōu)勢(shì)。采用本文設(shè)計(jì)的流水線設(shè)計(jì)實(shí)現(xiàn)本文方案,4個(gè)128位明文加密需要91個(gè)周期;采用非流水線設(shè)計(jì)實(shí)現(xiàn)本文方案,一個(gè)128位明文加密需要79個(gè)周期。因此,對(duì)于4個(gè)128位明文加密來說,采用流水線設(shè)計(jì)和非流水線設(shè)計(jì)地加速比為
式(12)中S值大于1,說明本文設(shè)計(jì)的流水線方案能夠提高AES加密算法的加密速度。
綜上,相比于RSM方案,S盒共用掩碼方案所需硬件資源大幅度減少。此外,在使用相同數(shù)目掩碼值(16個(gè))的情況下,RSM方案和vRSM方案的掩碼值選取僅有16種可能。本文提出的S盒共用掩碼方案在選取掩碼值時(shí)可以隨機(jī)選擇 4組數(shù)據(jù),因此可選擇的掩碼值共有24(即2×3×4)種可能,在選擇每組中的第一個(gè)掩碼值時(shí)又有 256(即4×4×4×4)種可能,因此本文提出的方案中掩碼值選擇一共有6 144(即24×256)種可能,相當(dāng)于RSM方案和vRSM方案的384倍。掩碼方案的安全性與掩碼值的隨機(jī)性成正比,可以看出,本文所提方案的安全性高于RSM方案和vRSM方案。
本文在文獻(xiàn)[8]的基礎(chǔ)上,提出了一種S盒共用的低熵掩碼方案,并把這種方案應(yīng)用到AES算法上。該方案的輪操作中加密的最小單元為32位,而不是128位,并利用流水線技術(shù)提高系統(tǒng)性能。實(shí)驗(yàn)結(jié)果表明,本文所提方案相對(duì)于RSM方案大幅度降低了面積復(fù)雜度,S盒的數(shù)量從16個(gè)降低到4個(gè)。從理論上證明本文所提方案比RSM方案有更高的安全性,可以抗一階、高階的SCA與基于偏移量的CPA攻擊。