磁碟加密系統(如 Truecrypt)在允許隨機訪問時如何抵抗頻率分析?
我不明白磁碟加密(例如 TrueCrypt)應該如何抵抗頻率分析。
如果塊可以被隨機訪問(他們可以),這是否意味著頻域資訊(例如連續的空閒空間)被暴露了?
我知道的唯一保護措施是連結,但如果他們使用連結,那麼一個錯誤的位不會破壞你的整個數據嗎?
對於只看到一個密文版本的人來說,可用空間和已用空間看起來完全一樣。
首先,安全分組密碼的基本思想是,您僅通過觀察密文塊就無法了解明文塊。您可能能夠從周圍的上下文中了解一些關於明文的資訊,例如通過收集更多的密文塊,但密文塊本身並沒有產生關於明文塊的資訊。
Truecrypt在XTS 模式下使用分組密碼。流行的現代分組密碼只是輸入 16 字節和輸出 16 字節之間的確定性映射,但 XTS 模式允許普通分組密碼使用影響加密的附加輸入“調整”值。調整輸入描述了該塊在體積內的位置,並且每一個都是唯一的。由於此調整值會影響最終密文,因此明文 $ P $ 如果它在位置,將以不同的方式加密 $ i $ (因此被價值調整 $ i $ ) 或位置 $ j $ (因此被價值調整 $ j $ ) 卷內。因此,卷上所有未使用的空間將為每個塊加密為不同的密文,即使它們都是相同的明文塊值,例如 0。因此,密文中不會出現未使用空間的模式,因為,出於所有有效目的,您將在每個位置加密不同的明文。您可以在 XTS 上執行隨機訪問,因為每個密文塊都是獨立的。(但是,出於性能原因,密文可能總是在整個扇區中讀取和解密。真正的隨機訪問在塊磁碟級別不是很有效。)
XTS 在這方面並不是獨一無二的,但它是目前這種情況下最流行的操作模式。CBC等其他操作模式也可以提供類似的安全性。在 CBC 模式下,明文被分成扇區(通常大小為 512 字節到 4K,大約是一個扇區的大小),每個塊使用唯一的IV加密作為有助於您熟悉的連結過程的輸入。連結確保每個明文塊在不同的上下文中以不同的方式加密,並且IV的唯一性唯一地啟動每個連結序列。CBC 沒有真正的隨機訪問,讀取時您必須讀取扇區中的前一個密文塊以用於解密,而寫入時您必須在修改塊之後重新加密整個扇區。但由於扇區大小很小,它“足夠接近”隨機訪問。
(這完全是一種簡化,主要是為了給出一個關於如何處理已使用和未使用空間的直覺概念。)
密文損壞是一個最小的問題。在 XTS 模式下,沒有任何東西被連結,因此只有損壞的塊變得不可用。在連結模式中,通常只有一個其他塊被損壞。例如,在 CBC 中,任何給定的密文塊最多只能用於另一個明文塊加密,因此損壞的密文塊只會破壞它自己的明文和與之鍊接的另一個明文塊。(盯著CBC 維基百科的圖表,直到明白為止。)
這描述了加密解決方案,但也有一個半免費的臨時解決方案。它利用了文件系統的細節。明文的所有塊都被加密,無論文件系統是否在該塊中儲存任何數據,並且文件系統不關心未使用塊的內容。因此,如果每個未使用的塊中都有隨機的、不相關的明文,那麼它們的密文將是不相關的。攻擊者不知道這些塊中是否有合法的明文或只是隨機未使用的數據。這種方法不應該是安全所必需的,但它確實增加了一個很好的安全緩衝層,以減輕算法中的潛在弱點或實現中的失敗。
Truecrypt也使用了這種技術。當您創建卷時,它們會為您提供在開始時執行“完整”格式的選項。這種完整格式將隨機數據寫入加密卷的每個扇區。當您使用卷時,文件系統會簡單地覆蓋隨機數據,因為它需要使用新扇區並忽略它不需要覆蓋的隨機數據。
但是,當攻擊者可以在不同時間點多次查看卷時,情況就會發生變化。如果他們可以看到卷密文並對其進行快照,然後稍後再返回並拍攝密文的另一個快照,他們可以比較兩者,並且可能能夠估計發生了什麼變化以及哪些空間已使用/未使用,具體取決於在該時間段內捲上發生的活動。但這高度依賴於攻擊者對明文結構的了解、明文的變化程度等,並且與只在某個時間點看到密文的攻擊者無關。