Home IT News Computer Apple M系列處理器允許攻擊者發動微架構旁路攻擊,竊取加密演算法機密金鑰

Apple M系列處理器允許攻擊者發動微架構旁路攻擊,竊取加密演算法機密金鑰

0
400

研究人員的調查結果揭示了一個令人擔憂的事實,Apple的M系列處理器存在安全漏洞。這個漏洞允許攻擊者利用一種名為GoFetch的微結構旁路攻擊手法,透過資料記憶體依賴預取器(Data Memory-dependent Prefetcher,簡稱DMP),在執行常數時間的加密演算法過程中,從其中擷取出機密的金鑰。

這個發現讓我們不得不重新審視我們的安全防護措施。研究人員現在已經實現從OpenSSL的Diffie-Hellman、Go RSA,以及CRYSTALS專案的Kyber與Dilithium加密演算法中擷取出機密的金鑰。值得注意的是,目前已知受到這一漏洞影響的Apple處理器包括M1、M2和M3三種型號。研究人員在他們的報告中特別強調,雖然Intel的第13代Raptor Lake微結構同樣也有DMP,但是因為其啟動標準更為嚴格,所以相對來說具有更強的抵抗GoFetch攻擊的能力。

GoFetch攻擊的成敗關鍵在於常數時間程式開發的理解。常數時間程式開發是一種程式設計的範式,它的目的是確保所有操作花費相同的時間,從而增強程式碼抵禦旁路攻擊的能力。在非常數時間的演算法中,加密程式可能會因為不同的輸入或是金鑰,導致執行速度有快有慢,這就讓攻擊者有機會透過測量這些時間差,從而獲得加密過程或是金鑰的資訊。

要達到常數時間程式開發的要求,程式碼中不能包含依賴機密的分支、迴圈和控制結構。此外,由於攻擊者也可以觀察到CPU快取對於不同記憶體位置的延遲,並由此推斷出儲存在記憶體中的資訊,因此常數時間演算法還不能以任何方式混合資料和位置,並禁止使用相依於機密的記憶體存取或是陣列索引。

然而,就算加密演算法按照常數時間程式開發的原則,把資料與記憶體位址分開,但GoFetch攻擊仍然有可能成功。這是因為由於DMP的存在,仍然可能產生與機密資料相依的記憶體存取行為。這種機制導致常數時間的演算法實際程式執行時間變得不一致,而這種時間變化就可被攻擊者觀察並利用,進一步擷取出金鑰以破解加密。

DMP是一種CPU功能,它在Apple的M系列CPU上都有。研究人員對M系列CPU進行逆向工程的過程中,發現DMP會啟動並嘗試解引用(Dereference),從類似的記憶體位置載入資料。研究人員在報告中指出,這種DMP機制明顯違反了常數時間程式開發範式中,禁止混合資料和記憶體存取模式的規定。

攻擊者可以利用這種漏洞,精心設計加密操作以猜出金鑰。他們可以安排加密操作的輸入,只有當猜中金鑰部分位元時,才出現類似指標的值。然後,他們可以透過分析快取時序,監控DMP是否執行解引用來驗證他們的猜測。如此一來,研究人員就可以逐一猜測金鑰的位元。根據研究人員發表的論文,他們已成功破解了包括OpenSSL Diffie-Hellman金鑰交換、Go RSA解密和後量子加密演算法CRYSTALS-Kyber和CRYSTALS-Dilithium等4種熱門的常數時間加密實作。

事實上,在GoFetch問題被揭示之前,就已經有安全研究人員發展出了名為Augury的攻擊方法。他們發現了Apple M系列晶片DMP混合資料和記憶體位置的問題。然而,Augury並未發現M系列晶片DMP啟動的標準其實並不嚴謹。GoFetch的研究人員發現,任何從記憶體載入的值,無論其實際內容和預期用途如何,都會被M系列晶片DMP當作一個記憶體位址並嘗試解引用。這種現象讓GoFetch攻擊變得更加危險,因為DMP可以被用來攻擊現實世界中的常數時間的加密演算法。

在M1處理器上,研究人員已經嘗試發動了端對端的GoFetch攻擊。他們同時也在M2和M3處理器上發現了類似的可以被濫用DMP的行為。雖然研究人員並沒有在M系列的其他變體,比如M2 Pro上進行測試,但他們根據對微結構的理解,認為這些變體可能也會有相同的問題。

目前,M3處理器可以透過設定DIT(Data Independent Timing)位元來停用DMP。但對於M1和M2處理器,這種方法並不適用。相對的,Intel的Raptor Lake處理器可以設定DOIT(Data Operand Independent Timing)位元來停用DMP。對於加密函式庫的開發人員來說,他們可以透過設定DIT位元和DOIT位元,在特定的CPU上停用DMP,從而避免遭受GoFetch攻擊。

使用輸入盲法(Blinding)也可以幫助部分的加密架構防止攻擊。這種方法可以防止攻擊者控制中介值,從而避免依賴金鑰的DMP啟動。此外,研究人員還提到,防止攻擊者測量DMP的啟動,可以進一步強化加密協定的安全性。至於Apple對於這一問題的回應,我們目前還在等待。研究人員在2023年12月5日向Apple揭露了這一漏洞,並於現在負責任地公開了攻擊手法,之後還將會釋出概念性驗證的程式碼。

Source : ithome