Aes

使用兩個不同的密鑰進行雙重加密

  • September 8, 2015

在安全性方面,使用一個密鑰加密的 RC4 輸出(或 Serpent)或其他輸出,並使用 AES(使用不同的密鑰)加密該輸出是更安全還是更安全?

> $Data -> Serpent ->  key: $s_key = HASH_HMAC(sha256, "1st Key" .
> $salt1, "HMAC KEY1") = $S_Output
> 
> $S_Output -> Rijndael (AES) -> key: $aes_key = HASH_HMAC(sha256, "2nd
> Key" . $salt1 . $s_key . $salt2, "HMAC KEY2") = $AES_Output

只要我使用良好的散列作為密鑰,這會比使用帶有 AES 的單個密鑰更安全嗎?是否存在兩種密碼以某種方式發生衝突的風險?如果是這樣,使用流密碼而不是另一個異或類型密碼會避免這種情況嗎?

PS 這是虛擬碼——我將為我的數據使用真正隨機的鹽和密鑰,即 mcrypt / openssl

我將使用基於軟體的令牌系統,例如 RSA SecurID,它位於指紋安全的拇指驅動器上,可打開一個獨立的瀏覽器。每個密鑰持有者都有一個 512 位必須自動打開軟令牌。將令牌發佈到身份驗證站點後,它會給這對(兩個人)90 分鐘的時間來輸入密鑰。

使用第二個鍵對使用者#2 重複相同的操作。

和真正的踢球者——除了 php 拇指驅動器令牌生成之外,這必須在 PHP 上執行,從而消除了許多其他理想庫的可能性。

基本上,兩個生物辨識令牌系統 + 兩個密碼在 90 分鐘內解密文件。但最好使用 Serpent + AES、AES + AES 或 TWOFISH + AES?

我不認為這是一個壞主意——布魯斯·施奈爾也沒有。在他的《應用密碼學》一書中,有一節叫做“級聯多塊算法”。他基本上指出,如果使用兩種不同的算法和兩個獨立的密鑰,那麼結果應該至少與最強算法一樣難以破解。

如果 Alice 和 Bob 不信任彼此的算法,他們可以使用級聯。如果這些是流算法,則順序無關緊要。如果是塊算法,Alice 可以先使用算法 A,然後使用算法 B。Bob 更信任算法 B,可以使用算法 B,然後使用算法 A。他們甚至可能在兩種算法之間添加一個很好的流密碼;它不會受到傷害,並且可以很好地提高安全性。

請記住,級聯中每個算法的密鑰必須是獨立的。如果算法 A 具有 64 位密鑰,而算法 B 具有 128 位密鑰,則生成的級聯必須具有 192 位密鑰。如果您不使用獨立鍵,那麼悲觀主義者更有可能是正確的。

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