Protocol-Design

TrueCrypt 的多重/級聯加密安全嗎?

  • August 19, 2017

TrueCrypt使用級聯加密安全嗎?有用嗎?TrueCrypt 可以說是當今使用的最流行和廣泛使用的加密應用程序之一,但它似乎使用了一種非常非傳統的方案。

該軟體提供級聯加密,使用者可以使用 AES、Twofish 和 Serpent 的任意組合指定雙重或三重加密。不同尋常的是,在移動到下一個塊之前,對每個塊執行多重加密,而不是先加密所有數據,然後再加密生成的密文。

在花了很多時間閱讀 crypto.se 之後,共識似乎是多重/級聯加密提供很少(或可能沒有)額外的安全性,有些人甚至認為 if 可能比僅僅遵循標準協議更弱(儘管後者似乎很少得到任何推理的證實)。然而,在 Bruce Schneier 的應用密碼學(許多人認為是密碼學的典型文本)中,他提倡使用多重加密(儘管謹慎,並有一些警告)。請參閱章節:15.7 級聯多塊算法15.8 組合多塊算法17.11 級聯多流密碼

另一個違背這一共識的例子是Tahoe-Lafs 100 年密碼學項目,該項目已在 crypto.se 上得到推薦。他們的協議涉及在 CTR 模式下使用 AES 加密,然後使用 XSalsa20 加密輸出。

所以我的問題是,TrueCrypt 使用多重/級聯密碼學是否合理,為什麼?

級聯密碼給人一種安全感;以及一個在技術上是合理的,即其中一種密碼的弱點將允許恢復加密數據的可能性。這是 Bruce Schneier 的論點,在當時領先的密碼 DES 是一個封閉設計的時代,它是有道理的,顯然是故意被一個小密鑰削弱,引起了恐懼,否則也會被故意削弱(結果不是是這樣)。

另一方面,像 TrueCrypt 這樣的系統面臨的更嚴重的威脅並不是密碼的弱點;它們包括軟體的危害、執行軟體的硬體的危害、密鑰的危害(通過竊聽、猜測密碼片語、橡膠軟管密碼分析、從休眠文件或 RAM 記憶體中恢復……)、更改扇區的分析……這些風險很難減輕,而且在許多人(包括我)看來,即使我們考慮 AES-128,至少在幾十年內,比 AES 的密碼分析更有可能實現。此外,技術進步可能會比 AES 密碼分析更快地通過蠻力猜測密碼。

級聯密碼至少有一個明顯的缺點:性能下降。通常它很重要,有時它並不重要,例如在加密密鑰時。在我看來,與 AES 相比,級聯可能只會通過一個副作用來提高實際安全性:使驗證密碼的猜測變得更加困難(在系統中檢查這種猜測的唯一方法是轉動將密碼輸入密鑰,使用級聯密碼破譯某些內容,並檢查它是否有意義)。

總而言之,除了 AES 之外,我認為級聯密碼只是作為一種抑制偏執狂或表示額外注意的方式,比如告訴對密碼學知之甚少的人:為你最重要的主人的冷儲存密鑰,您可以在 USB 記憶棒上使用 Truecrypt 卷,甚至可以使用級聯密碼;最重要的是,力求使用的所有硬體和軟體的完整性!


添加以下評論,詢問如何正確進行(分組密碼)級聯。我對此的回答是,如果使用級聯:

  1. 這可能會在密鑰擴展階段(將使用者的密碼片語轉換為批量密碼的密鑰)中考慮,其中級聯很有用,因為它使建構成功破解密碼片語的設備變得更加困難/更昂貴/不太可能. 級聯在密鑰拉伸中很有用,因為當迭代級聯加密時,每個級聯密碼都必須快速實現,這在使用 ASIC 或 FPGA 的密碼破解者中是一個非常嚴重的問題;在FPGA 密碼中搜尋一些有趣的連結。但是請注意,在密鑰拉伸階段迭代的每個級聯密碼的合法實現的速度優化對於**安全性很重要(因為我們需要將迭代次數盡可能推高),當它在批量加密階段對安全性無關緊要時。
  2. 至少級聯中的第一個密碼(在批量加密期間與明文接觸的密碼,或在密鑰拉伸期間與密碼片語接觸的程度較小的密碼)應以防止任何可能的側通道攻擊的方式實施,包括時間和無用發射(有關在稍有不同的上下文中說明後來的危險,請參閱)。
  3. 當密鑰必須是秘密的(特別是用於批量加密的密鑰)時,級聯密碼肯定必須使用不同的密鑰(例如從廣泛的派生密鑰中提取);否則,如果任何密碼通過側通道洩漏其密鑰,則使用級聯很可能會導致攻擊。

Truecrypt 對級聯密碼的使用肯定遵循 3;我不能說 2,最重要的 1。

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