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