是否有可以提供兩種不同輸出的加密/解密算法?
最近有消息稱,機場工作人員可以將旅客拘留在審訊室,並強迫他們在入獄威脅下將密碼交給加密硬碟筆記型電腦,這讓我想到了某種雙密碼加密/解密機制。
例如:
- 密碼 1 照常解密所有數據。
- 密碼 2 解密大部分數據,留下一部分看起來像隨機的 0 和 1。
我認為它必須在算法層面工作,而不是依賴軟體,因為硬碟可以從筆記型電腦中移除,然後任何軟體保護都是無用的。
我的問題是,是否有任何算法可以根據使用的密鑰給出兩種不同(但相似)的結果?
看起來您可能對應用 Deniable Encryption感興趣。
這種加密的一般思想是您可以解密數據以產生不同的(但仍然是合理的)明文。這樣一來,機場工作人員或任何要求您解密數據的人都不會區分真實明文和替代明文。我建議看看這篇論文。
請注意,已使用或至少可以使用可拒絕加密方案的事實很難甚至不可能隱藏。
有能力的攻擊者觀察二級明文的數學可能性會假設它已被使用,因此會試圖擊敗或說服你提供第二個密碼。因此,關於存在可否認加密方案(無論是算法還是人工)的情況類似於 1990 年代初期普通平民存在任何加密方案會引起懷疑的情況。
因此,為了融入沒有實際使用該方案(或用於微不足道的原因)的人群中,使用可否認的加密方案(及其空間效率低下)必須成為所有或大多數電腦使用者的預設模式。
隱藏第二個明文與故意引發雜湊衝突沒有什麼不同。如果您的密鑰空間與兩個明文中最大的一樣大(即一次性密碼),您可以擁有任意數量的輔助明文實例,因為密鑰成為輔助明文。
或者,使用小密鑰的方案可以為每個明文變體加密/解密不同的獨立密文;不需要碰撞推斷。當然,由於大多數不可否認方案不會以這種方式浪費驅動器空間 - 這些密文比無辜明文更多的方案是一個危險信號。就像聲稱在您電腦上的兩個大型隨機數據文件中一樣可疑,“其中只有一個已被加密,警官,老實說!”
權威機構,jackboot 和 non-jackboot 品種,並不急於鼓勵人們使用可拒絕加密作為他們的預設文件儲存模式。假設人們本來想購買一個 2TB 的硬碟並且只有 1TB 可供使用。
通常,解決方案是使用隱寫工具將秘密隱藏在普通文件中,這樣就不會出現加密問題。但是你需要隱藏隱寫算法!因為 - 和以前一樣 - 隱寫術不在普通電腦使用者的預設軟體工具包中……嘆息:-/
編輯:有一些使用小密鑰和相同大小的明文/密文的未知(以及未經測試的)穩健性方案。每次輔助明文更改時,您都可以更改密鑰。