互密鑰保護/包裝
兩個密鑰相互纏繞是否存在已知風險?
假設攻擊者可以訪問 AESkey1(key2) 和 AESkey2(key1)。
是不是讓他更容易找回鑰匙?
這取決於,但這樣的方案可以確保安全。
AES 是一種塊密碼,其特定塊大小為 128 位,密鑰大小為 128、192 和 256 位。
顯然,如果您使用 AES-128 包裝 AES-256 位密鑰,那麼使用 256 位密鑰加密的密文的安全性不會超過 128 位,前提是攻擊者仍然可以使用包裝的密鑰。我們無法破解 128 位加密,但您當然可以爭辯說它不如 256 位加密安全。因此,您應該使用大小相同的密鑰(這與僅以一種方式包裝有些不同;在這種情況下,包裝應該至少與包裝的密鑰一樣大)。
當您嘗試包裝 AES-192 或 AES-256 位密鑰時也會出現問題,因為您不能直接應用 128 位分組密碼。您將需要一些操作模式來使用 AES 加密/解密密鑰。現在您可以在 ECB 模式或 CBC 模式下使用 AES,但在這種情況下,您可能容易受到填充預言機攻擊 - 取決於執行解包的方式和時間。使用 AES-256,您可以簡單地使用沒有填充方案的 ECB 模式,但對於 AES-192,情況並非如此。
而且,當我們談到這個主題時,有許多操作模式,每種模式都有自己的特點。如果應用不當,任何類型的加密都可能容易受到攻擊。幸運的是,AES 密鑰應該包含與攻擊者無法區分的隨機數據。與例如攻擊封裝的 RSA 私鑰相比,這降低了對手的攻擊潛力,其中密鑰的組件位於明確定義的結構內。
您可能會注意到,這些都是包裝密鑰的一般問題。如果您使用良好的包裝機制(分組密碼有專門的包裝機制),正確實施方案並使用具有相似強度的 AES 密鑰,那麼您應該是安全的。將兩個密鑰相互加密並不重要 - 沒有任何方程式會暴露密鑰,即使 $ E_{K_1}(K_2) $ 和 $ E_{K_2}(K_1) $ 給出。唯一可能成為問題的是這種方案是否需要您降低對密鑰的訪問條件。
如果我理解正確,您是在問,給定C 1 = AES K 1 (P 1 )和C 2 = AES K 2 (P 2 ) ,在**K的情況下是否可以獲得P 1或P 2 1 = P 2和K 2 = P 1。答案是否定的,不是。
沒有已知的加密攻擊可以通過擁有兩個相互加密的密鑰的密文來變得更容易。顯然,它確實允許攻擊者在只發現其中一個後發現這兩個密鑰,因為一旦他們知道第一個密鑰,他們就能夠解密第二個密鑰。在加密某些類型的明文(無論是已知的明文、全零,甚至是另一個密碼使用的密鑰)時變得更弱的任何密碼都將被視為嚴重損壞。只要密鑰是秘密的並且是隨機選擇的,像 AES 這樣的強密碼就不存在這個問題。