為什麼我們使用 XTS over CTR 進行磁碟加密?
我正在參加 Coursera 教授 Boneh 教授的加密課程,我不確定 XTS 模式對磁碟加密的要求。
看起來 CTR 模式完全可以做 XTS 可以做的事情,但實現起來更簡單?在任何一種模式下,我都會使用磁碟扇區# 來提供隨機性,以確保相同數據的 2 個扇區最終會得到不同的密文。我錯過了什麼微妙之處?
假設您使用扇區數乘以每個扇區的 AES 塊數作為 CTR 的初始值。如果您連續儲存內容 $ M $ 然後 $ M’ $ 在同一個行業 $ n $ 然後 $ E^{CTR}_n(M) \oplus E^{CTR}n(M’) = M \oplus M’ $ (在哪裡 $ E^{CTR}{n} $ 是 CTR 模式的加密函式,IV 為扇區號啟動 $ n $ )。當您重用計數器值時,CTR 模式會災難性地失敗,因為它是純異或流密碼:對使用相同密鑰和計數器值生成的兩個密文塊進行異或運算會取消加密。例如,如果塊開始時全為零(這在實踐中經常發生)並且對手設法獲得初始密文和更新的密文,那麼對手將機密明文放在盤子上。
如果使用扇區號作為初始計數器,情況會更糟,因為一個扇區的第二個塊與下一個扇區的第一個塊共享一個計數器,依此類推。這將使攻擊者能夠通過磁碟的單個快照重建大量內容。
為了安全地使用 CTR,您需要每次生成一個新的計數器值。您可以將扇區號用作初始計數器值的一部分,但這樣做沒有什麼價值,因為您需要儲存計數器的其餘部分(某種每塊更新計數、全域計數器值、隨機值,或任何其他方案)無論如何。
XTS 將扇區號作為一個調整。明文的任何變化都會導致內容的完全變化。一個在兩個不同時間知道一個扇區的內容的攻擊者可以觀察到該扇區的內容是否發生了變化,這對於確定性加密來說是不可避免的,但是如果內容髮生了變化,那麼攻擊者就無法獲得有關明文的資訊。
如果唯一的威脅是磁碟被盜,那麼攻擊者將只能獲得一個版本的密文,之後將不再加密明文,那麼我認為使用 XTS 勝過 CTR 沒有任何好處。
如果對手可以在不同時間觀察密文,XTS 會做得更好。但並不完美:您需要為此儲存某種 IV 的額外負擔。
如果對手可以修改密文,那麼您也需要擔心數據完整性。CTR 具有極強的可塑性:攻擊者可以通過簡單地翻轉相應的密文位來翻轉明文位。XTS 的延展性較差,但仍允許攻擊者用垃圾或舊內容替換好的內容。認證加密模式將加密與 MAC 相結合,從而提供機密性和真實性(如果操作正確,還提供完整性)。