2020 年中期,我們在部落格上分享了 「加密演算法」競賽獲獎者的消息 在量子電腦中難以選擇”,並提到了比賽的獲勝者 Kyber,這是最適合作為標準進行推廣的。
之所以要說這個,是因為最近 消息發布稱檢測到影響 Kyber 的漏洞。該漏洞 名為 KyberSlash,它允許透過側通道進行攻擊 基於測量攻擊者提供的密文解密期間的操作時間來重建金鑰。
值得一提的是e 此問題影響參考實現 CRYSTALS-Kyber KEM 金鑰封裝機制, 以及許多支持 Kyber 的第三方函式庫, 包括 Signal(即時通訊應用程式)中使用的 pqcrypto 庫。
核心問題是e KyberSlash 與基於時間的攻擊有關。 這些攻擊利用了 Kyber 在解密過程中執行某些分裂操作的方式。尤其, 攻擊者可以分析這些操作的執行時間並獲取訊息 可能危及加密的秘密。此漏洞的產生是因為不同環境下分裂所需的CPU週期數根據分裂輸入的不同而不同。
KyberSlash 的本質在於使用除法運算 «t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;»在解碼訊息的過程中。 ,其中被除數包含“double”類型的秘密值“t”,除數是眾所周知的公開值 KYBER_Q。問題是分割操作的時間不是恆定的,並且在不同的環境中執行分割的CPU週期數取決於輸入資料。這樣,從運算次數的變化就可以了解除法所使用的資料的性質。
為了證明脆弱性, 丹尼爾·J·伯恩斯坦, 密碼學專家, 設法準備了一個工作演示,展示了在實踐中進行攻擊的可能性。在進行的三個實驗中的兩個 在 Raspberry Pi 2 上執行程式碼時, 基於測量資料解碼時間完全重建了 Kyber-512 金鑰。
此方法也可以適用於 Kyber-768 和 Kyber-1024 金鑰 為了使攻擊成功,攻擊者提供的密文必須使用相同的金鑰對進行處理,並且必須能夠準確測量操作的執行時間。
除了它,提到在一些庫中發現了另一種變體(KyberSlash2), 這也是由於在執行分割期間使用秘密值而引起的。與第一個變體的區別在於加密階段的呼叫(在poly_compress和polyvec_compress函數中),而不是解密。然而,第二種變體可能僅在重新加密操作的常規用例中對攻擊有用,其中密文輸出被認為是機密的。
目前, 正在努力解決這些漏洞, 有幾個項目和庫已完全修補或正在修補。實施 Kyber 的服務必須將其實施更新為修補版本,以防止這些漏洞,因為這些漏洞被認為很重要,因為它們可能允許恢復金鑰,這對量子加密專案的安全性構成了風險。
KyberSlash 的影響取決於具體的 Kyber 實作及其用例。例如,Mullvad VPN 解釋說,KyberSlash 不會影響其產品,因為它為每個新隧道連接使用唯一的金鑰對,因此不可能針對同一對發動一系列同步攻擊。
終於 如果您有興趣了解更多信息,您可以在 s 中查看詳細信息下一個鏈接。