NULL 在理論上,,理論和實踐是一致的,。在實踐中,呵呵。 ——(應(yīng)該是)愛因斯坦(說的) (INFO:本文中不會出現(xiàn)公式,,請放心閱讀) AES 256被破解了,? 對于TLNR(Too Long, Not Read)的讀者來說,先把答案放在這:是的,,但也不盡然,。 事件回顧如下:前幾日在互聯(lián)網(wǎng)上轉(zhuǎn)發(fā)的一條題為“AES 256加密被破 一套1500元設(shè)備5分鐘內(nèi)搞定”的新聞引起了各界的關(guān)注。新聞在國內(nèi)各大媒體轉(zhuǎn)載,,熱門評論里不乏各種被高贊但實際上并不正確的說法:有說是字典攻擊無線信號,,和破解AES是兩回事的,也有所是根據(jù)無線電特性來攻擊的,,和AES沒關(guān)系的,。還有想搞個大新聞的媒體直接說是路由器被破解,,甚至還說成了5分鐘破解任何WiFi密碼的,,唯恐天下不亂。 實際上這次的破解來自Fox-IT [1],,確實攻擊了AES算法本身,,利用了電磁輻射泄露的信息,可以實現(xiàn)無線攻擊(隔墻有耳),。這樣的攻擊形式稱為旁路攻擊(Side Channel Attack),,在學(xué)術(shù)界和工業(yè)界已經(jīng)研究了20多年,是一種較為系統(tǒng)完善的攻擊方法,,此次攻破AES256的方法是利用電磁旁路信號來完成差分功耗分析(DPA),,獲取了密鑰。從介紹本身來看,,是一個很不錯的工作,,但不是AES首次被破解,AES 128早就可以用類似的方式破解,,AES 256在DPA看來,,和前者沒有本質(zhì)差異,在實驗室中早已破解,。當(dāng)然也做不到5分鐘破解任何WiFi密碼,。原因是SCA需要一定的物理條件,目前AES算法本身還是安全的,,不必驚慌過度,。 背景知識 以AES為例,AES是高級加密標(biāo)準(zhǔn)Advanced Encryption Standard的縮寫,,是美國聯(lián)邦政府采用的一種分組加密標(biāo)準(zhǔn),,也是目前分組密碼實際上的工業(yè)標(biāo)準(zhǔn)。AES廣泛使用在各個領(lǐng)域(當(dāng)然包括WiFi的加密過程),實際上目前主流的處理器中廣泛包含了AES的硬件加速器(低至售價幾美元的STM32中有CRYP [2],,高至售價上千美元的Intel CPU中有AES-NI [3]),。對于這樣一個成熟的密碼學(xué)標(biāo)準(zhǔn),密碼算法本身設(shè)計的十分完善,,傳統(tǒng)的差分分析,,線性分析等方法基本上不能在有限復(fù)雜度內(nèi)完成,AES在理論上是安全的,。但是正如本文標(biāo)題描述的那樣,,即便有絕對安全的算法,也做不到絕對安全的系統(tǒng),。唯物辯證法中有聯(lián)系的普遍性和多樣性原理,,現(xiàn)代密碼系統(tǒng)在設(shè)計上理論安全,并不能替代密碼系統(tǒng)的實現(xiàn)安全性,。攻擊者可以在不干擾密碼芯片運行的前提下,,觀測時間,功耗,,電磁輻射等旁路泄露,,然后結(jié)合算法的實現(xiàn)進行密鑰還原,實現(xiàn)所謂的旁路攻擊,。對于旁路攻擊的防御,,涉及到密碼算法實現(xiàn)安全性這一范疇,很顯然,,這次攻擊成功的AES 256,,表明實現(xiàn)安全性的研究還有很長的路要走。 這里簡要介紹一下AES算法,。AES算法包含了多個輪,,每一輪(除了最后一輪)中,都有4個步驟[4][5]: (1)AddRoundKey—矩陣中的每一個字節(jié)都與該次回合密鑰(round key)做XOR運算,;每個子密鑰由密鑰生成方案產(chǎn)生,。 (2)SubBytes—通過一個非線性的替換函數(shù),用查找表的方式把每個字節(jié)替換成對應(yīng)的字節(jié),。 (3)ShiftRows—將矩陣中的每個橫列進行循環(huán)式移位,。 (4)MixColumns—為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉(zhuǎn)換來混合每內(nèi)聯(lián)的四個字節(jié),。最后一個加密循環(huán)中省略MixColumns步驟,,而以另一個AddRoundKey取代。 AES流程圖 接下來留意2個數(shù)字,,2^256(2的256次方)和8192,。2^256是整個密鑰空間,,這是一個相當(dāng)大的數(shù)字,表明如果要一個一個猜密鑰,,需要這么多次才能確保猜對,,這個數(shù)太大了,所以沒法猜,,暴力破解不可取,。 但如果是猜8192次呢,這個數(shù)字對于計算機來說就完全可以接受了,。怎么猜才能在8192次中猜對呢,。信息論告訴我們,必須有額外的信息輸入,。簡言之就是分治的思想:一個一個猜,。256 bits的密鑰,也就是32個Bytes,,如果逐字節(jié)猜,,每個字節(jié)有256種可能,32個字節(jié)需要256*32 = 8192次猜測就可以了,。 而芯片工作受限于位寬和算法實現(xiàn),,是不會一次完成整個256bits密鑰的處理的,正如飯要一口一口吃,,數(shù)據(jù)也是逐字節(jié)處理的,這就給我們我們逐字節(jié)猜提供了實現(xiàn)依據(jù),。 本次旁路分析依然按慣例關(guān)注其中的非線性環(huán)節(jié)SubBytes,。所謂的非線性替換函數(shù),在實現(xiàn)中就是一個查表操作,。查表操作的輸出(S-box output)是攻擊點,。當(dāng)然算法的優(yōu)化會合并一些操作以提高運算速度,這里攻擊者可以偷著樂,。原因是雖然優(yōu)化需要做大量的工作,,但實際上,最終結(jié)果還是查表,,查較大的表和較小的表,,在旁路攻擊中沒有實質(zhì)的區(qū)別。AES 128和256的區(qū)別也是輪數(shù),,密鑰長度的區(qū)別,,查表操作本身是沒有本質(zhì)變化的(劃重點)。 接下來用一張關(guān)系圖來說明各要素的關(guān)聯(lián),。 AES的輸入是密鑰和明文,,對于攻擊者來說,,明文已知,密鑰未知,,也是分析目標(biāo),。 接下來初始密鑰和明文會進行一個異或操作(首次AddRoundKey),得到的值,,作為查表索引輸入,,進行查表操作,注意到查表的數(shù)據(jù)是和密鑰和明文的異或有關(guān)的,。而明文已知,,查找表本身固定已知,異或運算又是簡單的可逆運算,,所以可以認為查表的輸出和密鑰有關(guān),。查表操作在現(xiàn)代計算機體系結(jié)構(gòu)中是一次訪存操作,那么,,地址和數(shù)據(jù)都會出現(xiàn)在總線上,。如果能知道總線上是什么數(shù)據(jù),就可以簡單的反推出密鑰,。接下來考慮總線是什么,?低頻上看是導(dǎo)線,射頻上看是天線,,對于安全分析人員來說,,天線都是個好東西。高速數(shù)字電路的信號翻轉(zhuǎn),,包含了豐富的頻譜分量,,會輻射到芯片外部。理論上能準(zhǔn)確探測到這樣的輻射,,就能完成攻擊了,,so easy。 當(dāng)然,,在實踐中,,呵呵。 問題一方面出在測量精度上,。實際上我們并不能如此高精度地測量電磁輻射,。我們可以測量的是電磁輻射的相對高低。例如1根導(dǎo)線上信號翻轉(zhuǎn)和8根導(dǎo)線上信號一起翻轉(zhuǎn),,就有明顯的信號強度差異,。這里涉及到一個術(shù)語稱為泄露模型(model of leakage),描述泄露的情況,。這次攻擊使用了Hamming distance模型,,也就是說信號跳變程度是可以觀測的,,這在電磁旁路分析中也是較為常見的建模方式。 問題另一方面出在信噪比,。(即便用上雅魯藏布江的水電),,環(huán)境中始終有大量的干擾,提高信號質(zhì)量的方式是多次測量,,然后通過相關(guān)性分析的方法提取統(tǒng)計上的最大相關(guān)性,。 還有一些問題限于篇幅這里不展開,反正DPA都很巧妙地解決了: (1)首先輸入一個明文,,在加密過程中,,明文會和密鑰的第i個字節(jié)異或,輸入到查找表中查表,,查表結(jié)果會出現(xiàn)在總線上,,然后產(chǎn)生電磁輻射。這個過程是真實物理發(fā)生的,,在此期間使用硬件記錄這個電磁輻射,。 (2)分析軟件模擬計算過程(1),當(dāng)然因為不知道密鑰的第i個字節(jié)具體數(shù)值,,每一種可能都要算,,利用泄露模型計算256個模擬的電磁輻射相對值。 (3)變換不同的明文重復(fù)(1)和(2)的過程,,得到N次結(jié)果,。一共有N個實際測量值和N*256個計算值。 (4)使用相關(guān)性分析的方法,,比對這256種猜測中,,和實際測量值相關(guān)性最大的猜測值,就是實際上密鑰的第i個字節(jié)真實值,。 (5)重復(fù)(1)到(4),分別猜測32個密鑰字節(jié),,得到完整密鑰,。 以上就是電磁/功耗差分分析的主要流程(通俗版)。由于密碼芯片在加密過程中,,是逐字節(jié)處理的,,而處理每個字節(jié)的時候,都會有電磁信息的泄露,,給了攻擊者逐字節(jié)猜測的機會,,從而可以在前文提到的8192次猜測中完成破解。實際分析中,,還會遇到很多的困難,,接下來看看Fox-IT的專家是怎么完成這次攻擊的,。 實戰(zhàn) 以下是Fox-IT的專家給出的攻擊流程。 首先使用射頻采集設(shè)備采集目標(biāo)芯片的電磁輻射,,混頻量化后存儲到分析計算機中,。分析計算機首先對采集的信號進行預(yù)處理后,使用上述DPA的方式得出密鑰,。 攻擊的目標(biāo)硬件為來自Microsemi的SmartFusion2,,這是一個混合了ARM和FPGA的SoC。攻擊針對的是ARM部分,,一個Cortex-M3的內(nèi)核,。目標(biāo)軟件是來自O(shè)penSSL [6]的AES 256實現(xiàn)。雖然SoC是一個混合芯片,,但是只是用了ARM部分,,Cortex-M3是很經(jīng)典的ARM core,軟件上也是OpenSSL的標(biāo)準(zhǔn)實現(xiàn),,可以認為這樣的攻擊很具有代表性,。 SmartFusion2 SoC FPGA 結(jié)構(gòu)[7] 接下來看看信號鏈部分。 首先是天線,。理論上,,設(shè)計天線是一個非常嚴謹且套路很深的活,比如下圖只是冰山一角(圖片來自網(wǎng)絡(luò)),。 回到實踐中,,下圖是本次攻擊中使用的天線。 就是一根電纜外加膠帶“隨意”制作的環(huán)狀天線,。 攻擊場景如下: 綠色的PCB是目標(biāo)板,,環(huán)狀天線懸空固定在芯片上方,信號通過了外部的放大器和帶通濾波器,,這些都是標(biāo)準(zhǔn)的工業(yè)器件,,價格也不貴。 比較有意思的是采集設(shè)備,,通常時域采集可以使用示波器,,或者專用的數(shù)據(jù)記錄儀,再不濟也得用個USRP之類的軟件無線電設(shè)備,。Fox-IT的專家一開始自然也是這么考慮的,。 圖中左邊是專用的數(shù)據(jù)記錄儀,傻大粗,,價格倒是很美麗,。中間是USRP板子,這個板子的性能夠用,,價格也是一般的研究機構(gòu)或者個(tu)人(hao)可以承受了,。有趣的部分在圖中右邊,,這個標(biāo)識為RTLSDR的USB小玩意玩無線電的小伙伴一定不陌生。實際上國內(nèi)也有賣,,價格只需要幾十到上百人民幣,。本次研究表明,這么一個入門級的小東西已經(jīng)完全可以用來完成攻擊,。 上圖就是用上述硬件觀測到的AES模式,,可以清晰地看到I/O操作之間的AES加密流程,包括Key Schedule過程和14輪的操作,,都是清晰可見,。 接下來是分析過程,這方面,,文獻[1]中并沒有詳細介紹,。但是DPA是一個比較標(biāo)準(zhǔn)的套路,他們也使用了業(yè)界標(biāo)桿級的軟件Riscure's Inspector,,因為可以結(jié)合筆者的經(jīng)驗來談一談,。 首先是信號預(yù)處理,這部分主要包括數(shù)字濾波,,復(fù)信號轉(zhuǎn)為實信號,,當(dāng)然也包括重采樣,截取等步驟,。還有一個比較重要的過程是不同traces之間的對齊,,比較簡單的方法是使用滑動窗和相關(guān)性分析的方法,使得所有traces能夠精確對準(zhǔn),。 接下來就是真正的DPA了,,這在Inspector軟件中有標(biāo)準(zhǔn)的模塊,反而不需要自己實現(xiàn),。不過也有一些技巧,,文獻[1]中就提到了一個。為了快速驗證采集到的電磁信號和設(shè)備功耗有直接關(guān)聯(lián),,以及采集的位置是否正確,。使用輸入的明文(或輸出的密文)和采集的trace做一次相關(guān)性分析,并驗證泄露模型是否有效,。 這條相關(guān)性曲線說明了數(shù)據(jù)和信號之間確實有相關(guān)性的點,即確實可以從采集的信號中檢測到數(shù)據(jù),。 接下來就是猜測密鑰了,,下圖中相關(guān)性最高的猜測就是正確的密鑰。實驗表明SmartFusion2中,,泄露來自AHB,,這是符合預(yù)期的,。因為AHB連接了Cortex-M3和片上RAM,查表操作就是M3內(nèi)核訪問RAM的一個操作,。相比于簡單的MCU,,這里還要考慮cache的影響,對于指令cache,,使用Hamming distance模型即可,,而SmartFusion2為了和FPGA模塊連接,考慮到數(shù)據(jù)一致性而沒有設(shè)置數(shù)據(jù)cache,,這也算是簡化了攻擊者的工作,。 以上操作在幾厘米之內(nèi)探測電磁信號就完成了整個攻擊過程,硬件成本小于200歐元(約1500人民幣),。實際上這些硬件在國內(nèi)購買的話,,完全可能低于1000元。 在軟件方面,,Inspector是商業(yè)軟件,,需要支付授權(quán)費用。好在核心算法早已是公開的,,可以自己編寫,,也可以使用便宜的解決方案,所以這方面的費用不計在總價內(nèi)也是可以理解的,。 局限性 通過梳理整個攻擊流程,,我們可以總結(jié)出這類旁路攻擊的先決條件,也是它的局限性所在,。 (1)必須完全可以控制目標(biāo)設(shè)備,,給它輸入不同的明文,控制其完成加密操作,。 (2)必須可以接近到目標(biāo)設(shè)備,,因為要測量設(shè)備的物理屬性(電磁特征),究竟距離多近需要看現(xiàn)場的電磁環(huán)境,。 (3)必須熟悉目標(biāo)設(shè)備使用的算法和實現(xiàn)細節(jié),。算法本身比較容易確認,實現(xiàn)細節(jié)很多設(shè)備不會公開源代碼,,但是密碼學(xué)算法通常有若干標(biāo)準(zhǔn)實現(xiàn),,不難猜測確定。 要完成攻擊攻擊,,條件(1)是基礎(chǔ),,所以不用擔(dān)心鄰居家可以只通過旁路攻擊來破解你家的路由器了。 條件(2)主要看距離要多近,這里有一些深入的研究,。 前文使用的手工制作的環(huán)狀天線,,工作距離只有若干厘米,稍遠一點就淹沒在噪聲里了,。 于是(早已坐不住的)天線工程師制造了下圖的PCB天線,,它的性能好很多,可惜為了降低尺(jia)寸(ge),,它的工作頻率是400MHz,。而SmarFusion2只能最高工作到142MHz。既然是研究,,不如換個目標(biāo)設(shè)備(就是這么任性),,比如Xilinx的Pynq board就可以穩(wěn)穩(wěn)地跑在400MHz。實踐表明,,依然可以用RTL-SDR完成攻擊,。這次攻擊可以在30厘米內(nèi)完成,但是不要忘了需要采集400k條traces,,而且是在一定電磁屏蔽的環(huán)境下完成的,。 PCB天線 使用急救毯包裹的攻擊環(huán)境 最后再沖擊一下1米的距離,這需要在理想條件下完成,。 首先,,測試在微波暗室中進行,盡可能地排除了干擾信號,。天線方面使用了盤錐天線,,并保證了測量子系統(tǒng)和加密子系統(tǒng)之間的電氣隔離。1米的距離很艱難的達到了,,使用了240萬條traces,。這個理想實驗證明了,在足夠好的條件下,,1米的攻擊距離是完全可行的,。 防御 旁路攻擊之所以可以生效,主要在于密碼設(shè)備泄露的旁路信息和操作的數(shù)據(jù)有關(guān)聯(lián)性,。在算法實現(xiàn)上,,可以通過掩碼(masking)或者隱藏(hiding)的方式來消除這種關(guān)聯(lián)性。這方面的具體細節(jié)本文不再展開,。在密碼學(xué)算法這一領(lǐng)域,,對于一般的應(yīng)用或者系統(tǒng)開發(fā)者,是不推薦自己造輪子的,。特別是不可以認為自己略懂密碼學(xué)的算法,,就去修改它們,,一個簡單的小修改,可能會破壞理論安全性和實現(xiàn)安全性,,這些都不是普通的開發(fā)者可以做好的事情,還是用成熟的輪子最為靠譜,。 以SmartFusion 2為例,,完全可以不使用OpenSSL的算法實現(xiàn),而使用帶有保護的實現(xiàn),,例如Microsemi官方提供的FPGA實現(xiàn),。在電路級別上,功耗平衡等技術(shù)也可以從一定程度上解決這類泄露,,使用專有的硬件來完成密碼學(xué)操作,,就可以很好地防御這類攻擊了。 參考文獻 [1] https://www./en/insights/blogs/blog/tempest-attacks-aes/ [2] http://www./zh/embedded-software/stm32-cryp-lib.html [3] https://www.intel.com/content/www/us/en/architecture-and-technology/advanced-encryption-standard--aes-/data-protection-aes-general-technology.html [4] https://en./wiki/Advanced_Encryption_Standard [5] Pub N F. 197: Advanced encryption standard (AES)[J]. Federal information processing standards publication, 2001, 197(441): 0311. [6] https://www./ [7] https://www./products/fpga-soc/soc-fpga/smartfusion2 [8] Mangard S, Oswald E, Popp T. Power analysis attacks: Revealing the secrets of smart cards[M]. Springer Science & Business Media, 2008. * 作者:cyxu,,更多安全類知識分享及熱點資訊,,請關(guān)注阿里聚安全的官方博客 |
|