Side-Channel-Attack

防禦定時攻擊

  • April 30, 2022

我知道這是一個困難的主題,但是如果解密或身份驗證失敗,是否可以很好地防禦定時攻擊而不發送消息?因此,例如,如果攻擊者提供了錯誤的 HMAC,並且經過比較並發現它是錯誤的,那麼您只需向攻擊者返回任何內容(這是考慮網路環境,儘管我不想將其限制在網路環境中)

還有其他方法可以防禦定時攻擊嗎?我找到了這樣的論文免費PDF)和這個免費 PDF)。後一個似乎是更改 AES 以幫助它防止定時攻擊的可行性的提議,我認為我不應該繼續自己實施它。

所有這些論文都很棒,但它們讀得太長了,老實說,有時它們會讓我失望。那麼有沒有針對定時攻擊的實際實現範例呢?我希望這些範例適用於任何密碼,但特定於密碼的密碼也會很好。

我應該注意到我已經找到了關於這個主題的一些答案:就像這個AES-timing-attacks但同樣的答案(因為它無處不在)是:花最糟糕的時間並讓它持續那麼長時間。對於實現來說,這不是可行的方法嗎?

TL;博士

  1. 當某些東西無法解密或驗證可行選項時,根本不會返回消息?
  2. 是否還有其他針對定時攻擊的良好實現。

不,因為計時攻擊與錯誤沒有任何關係。定時攻擊意味著分析密碼操作完成洩漏秘密資訊所需的時間。這實際上與錯誤消息無關;通過測量消息之間的延遲來查看伺服器在 CTR 模式下解密某些內容(其中 AES 原語使用密鑰在公開的明文上執行)需要多長時間,以獲取有關鑰匙。另一方面,如果出現問題,有很好的理由返回錯誤 - 這意味著需要重新發送消息,因為您不知道它是否在傳輸過程中損壞或者是否存在問題消息本身。

現在,有些攻擊與能夠得知消息中存在錯誤有關;針對 TLS 的 POODLE 攻擊就是這樣一種攻擊,在這種攻擊中,得知填充錯誤會告訴攻擊者有關明文的有價值資訊。這可能是您在錯誤消息方面考慮的內容,補救措施的一部分可能是不發送詳細的錯誤消息(真正的補救措施是使用消息完整性機制來保護明文,因此攻擊者可以’ t 進行選擇密文攻擊)。但定時攻擊與此無關。

防禦定時攻擊的方法是確保執行加密操作所花費的時間不依賴於任何秘密資訊。它可能取決於密鑰長度或消息長度,因為這通常不被認為是秘密的;它不能依賴於密鑰的實際值或消息的內容。這比僅進行恆定時間比較等更複雜;您還需要擔心您無法直接控制但仍會影響執行時間的其他因素(如記憶體)(這是加密的直接硬體實現的優勢之一:當您擁有只有英特爾或 AMD 工程師才能完全控制執行)。

引用自:https://crypto.stackexchange.com/questions/24275