洩漏電流可能被用於攻擊加密系統。
在電子商務與電子銀行等應用中,安全要求越來越嚴格。雖然加密技術提供了強健的算法,但這些算法的物理實現一般會通過器件電氣運行中的物理現象,洩漏一些信息,攻擊者會利用它來探測密鑰。這些「旁路」(side-channel)攻擊利用加密實現硬體模塊所洩漏的信息。該信息可能包含數據與功耗或時序之間的相互關係。一種廣為報導的強大旁路攻擊方法是微分功率分析(differential-Power analysis),因為它能讓攻擊者用現售元件做出的測量設置探測出密鑰。攻擊者依據的事實是,標準CMOS邏輯的動態功耗主要依賴於輸入數據。例如,考慮一個簡化的CMOS反相器模型,它以一隻接地電容作為自己的負載。該模型只有當輸出從0至1的過渡時才從電源吸入電流。在1至0的過渡時,輸出電容釋放能量,而從0至0和1至1的過渡時電路不消耗能量。最近工程師們提出了很多同時採用軟體和RTL(寄存器傳輸級)的對策,以阻止通過動態功率分析的攻擊。
歷史上,CMOS電路功耗的主要來源是CMOS開關活動造成的動態功耗。動態功耗是電源電壓的二次方,而對時鐘頻率的依賴則是線性的。CMOS電路功耗的另外一個來源是CMOS器件關斷狀態下寄生電流所造成的洩漏功率。這種洩漏功率很快將達到可與動態功耗相比較的量級。CMOS設計中的洩漏電流主要取決於輸入數據的矢量,工程師使用這個特性,在電路的等待周期內減少洩漏功耗。他們還提出了可以預測在CMOS電路中分別產生最大和最小洩漏電流的輸入矢量模型。
由於洩漏電流依賴於CMOS邏輯中的輸入值,你可以通過測量洩漏電流,提取出一個加密核心中有關加密數據的信息。對一個採用RTL仿真的簡單加密核心,通過分析洩漏電流與輸入數據的依賴關係,就可以用統計分析技術發動攻擊。這些技術類似於微分功耗分析技術,可以提取出從洩漏電流測量開始的密鑰,原理上更容易實現。
數據依賴性
洩漏電流主要來自反向結、亞閾值以及門隧道電流。對於一個偏置在弱反向區的MOS電晶體,亞閾值電流是最重要的因素。標準CMOS門的設計者會使用串並聯連接組成的上拉和下拉網絡。設計者還為串並聯配置的MOS器件開發了洩漏電流模型。
為了解標準CMOS門洩漏電流對數據的依賴性,研究人員對意法半導體公司90 nm CMOS090工藝的標準單元作了仿真。這些仿真採用了代工廠針對Spectre電晶體級仿真器所提供的模型,用五種溫度來驗證洩漏電流與溫度的關係(表1)。如果對表中洩漏電流按升序排序,則順序與溫度的變化相同。例如,對一個雙輸入與非門,邏輯輸入0或1在所有溫度值下都產生最大的洩漏電流。這種功率分析方法能揭示出一個加密核心的輸入與產生最大或最小洩漏電流之間的關聯。現在有資料描述最大、最小和其它算法,用於估算洩漏電流。
對稱密鑰算法的基本部件是S盒(substitution box)。當使用分組密碼時,一般用S盒來掩蓋原文本與加密文本之間的關係。S盒在N位輸入字和M位輸出字之間提供了一種組合映射。這些盒子(如有四輸入和四輸出)一般都使用固定表。
Cadence公司的研究人員採用一個真值表和意法半導體公司的90 nm CMOS工藝庫,對一種S盒做綜合,這款S盒有四個輸入和四個輸出(表2)。然後研究人員對S盒的所有可能的輸入組合作了大量洩漏電流仿真。如果按洩漏電流的升序對表中的輸入組合作排列,則結果與溫度的變動無關。於是,在仿真或測量中可以使用任何熱係數,只要它保持恆定不變。可以將異或門連接到一隻S盒的輸入端,實現一個簡單加密核心的組合器件。異或門將任何原文本文字與密鑰預先混合,S盒加密結果。你可以針對一個加密核心的組合部分,對所有密鑰值和輸入值作大量的洩漏電流仿真。如果將洩漏電流值升序排列,則輸入與輸出的次序對每個密鑰都是相同的,意味著洩漏電流與輸入值無關。這些仿真還顯示出,對不同密鑰和相同輸入值,洩漏電流值有差異。異或門對輸入變化很敏感,它是這種差異的根源。S盒不是過錯方,因為對相同的輸入,測得的電流總是相同的。
圖1,為一個組合設計增加一些電阻,就可以構建出一個簡單的加密核心。