<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 智能卡抗DPA攻擊的設(shè)計(jì)與實(shí)現(xiàn)

          智能卡抗DPA攻擊的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2009-06-25 來源:網(wǎng)絡(luò) 收藏
          0 引 言
          隨著個(gè)人計(jì)算機(jī)的蓬勃發(fā)展、因特網(wǎng)的演進(jìn)與電子商務(wù)的沖擊,市場對(duì)安全與個(gè)人隱私保護(hù)有了強(qiáng)烈的需求。擁有輕便與安全的特性,在網(wǎng)絡(luò)上的安全付款、網(wǎng)絡(luò)連接的安全控管與電子簽章等應(yīng)用領(lǐng)域扮演重要角色。我國已有不少信息安全應(yīng)用系統(tǒng)借助來記憶系統(tǒng)運(yùn)作所需的秘密信息,并利用具有的計(jì)算能力提升系統(tǒng)安全,智能卡正逐步取代磁卡而廣泛應(yīng)用于金融及其他相關(guān)產(chǎn)業(yè)。
          隨著對(duì)智能卡的方法的不斷發(fā)展,特別是隨著近年來許多新型的智能卡技術(shù)被公開發(fā)表,智能卡的安全面臨巨大挑戰(zhàn)。這些技術(shù)能容易地以低價(jià)設(shè)備取得的信息,如電力消耗、執(zhí)行時(shí)間、故障時(shí)的輸出與輸入行為、輻射、電力尖峰情形等信息攻擊智能卡。其中,差分功耗分析(Differential Power Analysis,)就是一種很有效的能量攻擊方法,其主要是借助統(tǒng)計(jì)方法來提取與密鑰有關(guān)的信息,實(shí)現(xiàn)過程比較復(fù)雜,但對(duì)攻擊者的智能卡專業(yè)技術(shù)水平的要求并不是很高,對(duì)智能卡中相關(guān)的內(nèi)嵌加密算法的成功攻擊已經(jīng)被廣泛報(bào)道。
          智能卡是一種在發(fā)卡后可下載應(yīng)用程序的公開平臺(tái)架構(gòu),所以為了防止偽卡與保護(hù)持卡人,智能卡必須具有高安全性和高可靠性。VISA國際組織規(guī)定智能卡必須符合最高的安全技術(shù)層次要求,不但其內(nèi)嵌儲(chǔ)存體和總線上傳遞的數(shù)據(jù)都要求加密,而且智能卡至少要提供一個(gè)以上的對(duì)策防止簡單功耗分析(Simple Power Analysis,SPA)與攻擊。


          1 智能卡芯片架構(gòu)
          智能卡芯片架構(gòu)如圖1所示,主要由如下模塊構(gòu)成:

          本文引用地址:http://www.ex-cimer.com/article/188877.htm

          (1)嵌入式微處理器:可控制硬件執(zhí)行相關(guān)的指令完成加解密操作。其一般內(nèi)置有存儲(chǔ)器加解密單元,可通過其存取存儲(chǔ)體數(shù)據(jù);并通過硬件防火墻管制應(yīng)用程序存儲(chǔ)體。
          (2)內(nèi)置存儲(chǔ)體:智能卡的存儲(chǔ)體分為SRAM,E2PROM與ROM三塊區(qū)域,其中ROM存放智能卡操作系統(tǒng)、執(zhí)行環(huán)境等程序及數(shù)據(jù);E2PROM存放用戶定制代碼,給不同的用戶、不同的應(yīng)用提供靈活的選擇;SRAM為執(zhí)行系統(tǒng)操作提供臨時(shí)空間。
          (3)復(fù)位電路:用于產(chǎn)生系統(tǒng)復(fù)位信號(hào),其輸入來自RESET引腳輸入的外部復(fù)位信號(hào)。
          (4)隨機(jī)數(shù)產(chǎn)生器:隨機(jī)數(shù)在智能卡的安全性上扮演著重要角色,密鑰生成、數(shù)字簽名、認(rèn)證和鑒別及各種安全通信協(xié)議都離不開高質(zhì)量的隨機(jī)數(shù)。該模塊主要產(chǎn)生無法預(yù)測的高質(zhì)量加密用數(shù)據(jù)。
          (5)ISO7816接口控制器:為智能卡與讀卡器數(shù)據(jù)交換的重要接口,主要是硬件支持由ISO7816制定的T=0及T=1兩種協(xié)議,T=0負(fù)責(zé)傳送字符(Charac-ter);T=1則負(fù)責(zé)傳送區(qū)塊(Block)。
          (6)中斷控制器:用來接收定時(shí)單元、加密引擎、接口控制器的中斷要求,并傳送“中斷”信號(hào)給微處理器,通知微處理器外圍模塊已完成指定工作或有事情發(fā)生。
          (7)內(nèi)置定時(shí)單元:主要當(dāng)作看門狗定時(shí)器用,用以監(jiān)督系統(tǒng)的運(yùn)作,監(jiān)控內(nèi)部應(yīng)用程序是否正確執(zhí)行。若發(fā)現(xiàn)程序運(yùn)行錯(cuò)誤,就會(huì)給中斷控制器一個(gè)中斷信號(hào),使智能卡進(jìn)入暫停狀態(tài),一直要等到重置信號(hào)出現(xiàn)才恢復(fù)正常運(yùn)行。
          (8)電源控制器:內(nèi)置的電壓傳感器和控制電路為其他模塊提供穩(wěn)定、安全的電源供應(yīng)。
          (9)功耗管理模塊:智能卡對(duì)功耗的要求很高,該模塊是為達(dá)到節(jié)省電源的目的設(shè)計(jì)的省電裝置,其帶有停止和省電兩種工作模式。其中,停電模式支持ISO7816-3的頻率停止模式,以降低整個(gè)系統(tǒng)的電源消耗;省電模式則根據(jù)系統(tǒng)不同模塊工作特點(diǎn)規(guī)劃了各模塊的工作順序及狀態(tài),使工作時(shí)間互斥的模塊中的一部分工作時(shí),另一部分工作在睡眠狀態(tài),從而達(dá)到降低系統(tǒng)整體功耗的目的。
          (10)頻率產(chǎn)生電路:智能卡作為一個(gè)復(fù)雜的SoC芯片,其系統(tǒng)工作頻率和加密操作頻率是不同的,為此一般的智能卡內(nèi)部都有PLL頻率產(chǎn)生電路。其頻率來自CLK腳輸入的外部頻率,產(chǎn)生供微處理器與加密引擎中各種加密協(xié)處理器使用要求的頻率。
          (11)加密引擎:智能卡的加密引擎中嵌入了能實(shí)現(xiàn)多種加密算法的協(xié)處理器核,使其可以支持一般的加密算法包括:RSA,DES,AES。該模塊主要包括:
          加密仲裁 根據(jù)系統(tǒng)不同用途下的不同加密操作要求,通過相關(guān)的控制指令管理不同的協(xié)處理器工作。DES協(xié)處理器 支持?jǐn)?shù)據(jù)加密標(biāo)準(zhǔn)(Data E-ncryption Standard,DES)。以56 b密鑰為基礎(chǔ)的密碼塊加密技術(shù),DES使用56 b密鑰對(duì)64 b的數(shù)據(jù)塊進(jìn)行加密,并對(duì)64 b的數(shù)據(jù)塊進(jìn)行16輪編碼,結(jié)果為64 b的密文。
          AES協(xié)處理器 支持高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)(Ad-Vanced Encryption Standard,AES)。使用的是一個(gè)迭代型分組密碼,對(duì)加密來說,輸入是一個(gè)明文分組和一個(gè)密鑰,輸出是一個(gè)密文分組;分組長度和密碼長度都可變,可以獨(dú)立指定為128 b,192 b或256 b。
          RSA協(xié)處理器 支持公開金鑰加解密系統(tǒng)。RSA主要是指數(shù)的運(yùn)算,是基于大質(zhì)數(shù)的因數(shù)分解的公匙體系,簡單來講就是兩個(gè)很大的質(zhì)數(shù),一個(gè)作為公鑰,另一個(gè)作為私鑰,如用其中一個(gè)加密,則用另一個(gè)解密。密鑰長度從40~2048 b可變,密鑰越長,加密效果越好,但加密、解密的開銷也就越大。
          智能卡的ASIC設(shè)計(jì),主要模塊如加密引擎中所涉及的加解密協(xié)處理器、嵌入式微處理器等在市場上都由相關(guān)的IP核提供,這些IP的設(shè)計(jì)都采用了相關(guān)算法實(shí)現(xiàn)了抗DPA攻擊,具有很好的安全性。但是將上述IP整合及其他模塊的設(shè)計(jì)上必須注意采取抗DPA攻擊措施,才能保證智能卡的高安全性。

          2 DPA攻擊原理
          在一個(gè)沒有任何抗DPA攻擊的加密芯片上指令的執(zhí)行順序和相關(guān)數(shù)據(jù)處理操作會(huì)影響功率消耗,盡管這種影響會(huì)被噪聲消耗,但是靠統(tǒng)計(jì)的方式還是可以看出端倪。DPA攻擊技術(shù)以功率消耗圖為基礎(chǔ),再以統(tǒng)計(jì)方式推演主密鑰的攻擊技術(shù),其原理是智能卡在執(zhí)行加密過程中會(huì)消耗能量,產(chǎn)生電磁輻射,通過使用特殊的電子測量儀和數(shù)學(xué)統(tǒng)計(jì)技術(shù),就可以檢測和分析這些變化,從而得到芯片中的特定關(guān)鍵信息。智能卡執(zhí)行一條指令消耗的能量與指令的操作數(shù)相關(guān),某一指令I(lǐng)的執(zhí)行所消耗的平均功耗P如下式所示:


          式中:PI表示指令I(lǐng)執(zhí)行過程中平均消耗的能量;op1,op2,…,opn表示I的操作數(shù);PI(0)和PI(1)分別表示op1取0和1時(shí)執(zhí)行指令I(lǐng)消耗的平均功耗。可見,PI與op1相關(guān)(△PI≠0)。
          另外,考慮到智能卡采用的是CMOS工藝,其功耗主要是動(dòng)態(tài)功耗Pd,而Pd大小如下面公式所示:

          式中:f是工作頻率;CL是輸出節(jié)點(diǎn)的集總負(fù)載電容;VDD是電源電壓;α是電路開關(guān)活動(dòng)因子(電路翻轉(zhuǎn)率)。可見CMOS邏輯門功耗大小與α密切相關(guān),所以,電路中的數(shù)據(jù)的0與1狀態(tài)與電路的功率信號(hào)必然具有一定的相關(guān)性。
          綜上所述,加密用密鑰與電路功耗存在相關(guān)性,DPA攻擊就是從這種相關(guān)性人手,最終實(shí)現(xiàn)對(duì)密鑰的破解。下面以AES算法為例,介紹DPA攻擊的過程:
          (1)隨機(jī)生成大量明文;
          (2)加密這些明文,并記錄下加密操作時(shí)的能耗曲線,求得這些曲線的平均;
          (3)關(guān)注第一輪S2盒的輸出,設(shè)輸出的第一比特為b,對(duì)第一輪子密鑰的第一個(gè)字節(jié)進(jìn)行猜測,并用其與相應(yīng)的明文計(jì)算出S2盒的輸出;
          (4)根據(jù)b的值,將能耗曲線按照b=0和b=1分為兩類;
          (5)計(jì)算出這兩類的平均能耗曲線,并將二者相減,求得差分能耗曲線;
          (6)觀察步驟(2)和(5)生成的能量曲線。若密鑰猜測正確,那么步驟(4)的分組就是正確的,步驟(5)生成的差分能耗曲線將和步驟(2)生成的平均能耗曲線呈現(xiàn)較大的差別,差分能耗曲線中將出現(xiàn)峰值。因此,攻擊者通過觀察峰值來判斷密鑰的猜測是否正確;
          (7)重復(fù)步驟(3)~(6),得到其他輪的子密鑰。DPA攻擊易于實(shí)現(xiàn),一個(gè)完全不懂得智能卡技術(shù)的編程人員完全可以利用專用程序?qū)]有DPA防范的智能卡實(shí)現(xiàn)攻擊。高安全性的智能卡必須采取相應(yīng)的防范措施以實(shí)現(xiàn)抗DPA攻擊。


          3 抗DPA攻擊的設(shè)計(jì)
          目前各種密碼系統(tǒng)的算術(shù)邏輯運(yùn)算單元的VLSI設(shè)計(jì)已得到較為廣泛的研究,如何在其他方面實(shí)現(xiàn)抗DPA攻擊是值得進(jìn)一步深入研究的問題。下面從隨機(jī)數(shù)產(chǎn)生器、組合和時(shí)序邏輯防DPA設(shè)計(jì)介紹智能卡抗DPA攻擊的電路實(shí)現(xiàn)。


          上一頁 1 2 下一頁

          關(guān)鍵詞: DPA 智能卡 攻擊

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();