Encryption

RC2、RC4、RC5、RC6的區別

  • February 16, 2021

誰能指出 RC 變體之間的核心區別?

RC2

RC2 是 64 位源重不平衡 Feistel 密碼,密鑰大小為 8 到 1024 位,步長為 8。預設密鑰大小為 64 位。設計於1987年,採用異質輪結構,共18發(“MIXING”發16發,“MASHING”發2發)。它是一種使用秘密索引來選擇密鑰材料的複雜密碼。它執行按位旋轉、AND、NOT 和 XOR,以及模加法。關鍵時間表讓人聯想到 MD2 的內部操作。給定 2 34個已知明文,它很容易受到相關密鑰攻擊。它在RFC 2268中定義,儘管它最初是通過 1996 年使用它的逆向工程軟體洩露到郵件列表中的。

從來沒有理由使用 RC2。這是一個非常古老的密碼,由 Lotus 為他們的 Lotus Notes 軟體贊助,由 RSA Security, Inc. 設計,來自 NSA 的輸入它旨在成為 DES 的出口就緒型替代品,但早在我們對分組密碼設計有很好的理解之前就已經創建了它。它相對缺乏分析,很容易遭受尚未發現的嚴重安全漏洞。這肯定是一個有趣的密碼,但不是一個有用的密碼。

RC4

RC4 是 1987 年編寫的具有 40 到 2048 位密鑰的流密碼,最大理論強度為 log 2(256!) ≈ 1684 位。它通過交換基於秘密狀態相關索引和遞增索引的值,從由 256 字節排列組成的狀態數組生成密鑰流。RC4 密鑰流的第一部分顯示出明顯的偏差,儘管隨著更多密鑰流的生成,偏差會縮小。出於這個原因,許多實現會丟棄前幾百(甚至幾千)個字節。存在其他偏差和嚴重問題,例如它如何使用隨機數的漏洞,這可能使其難以安全使用(特別是,隨機數與密鑰連接,這是一個問題,因為密碼容易受到相關密鑰攻擊,從而使密鑰恢復)。在您提到的密碼中,RC4 是唯一的流密碼。它的設計在 1994 年被洩露到一個郵件列表中。

如果您發現自己需要使用 RC4,請確保將密鑰和 nonce 組合在一起,首先通過加密散列函式將它們連接起來,而不是像傳統那樣將它們連接起來。確保刪除初始密鑰流(至少 768 字節,但理想情況下最多 3072 字節),並且不要在可能使用不同密鑰對相同明文進行無限次加密的應用程序中使用它。否則,小的偏差可能允許在不需要密鑰的情況下恢復明文。

RC5

RC5 是一種分組密碼,使用 1 到 255 輪(最初建議 12 輪)Feistel-like 網路,具有 32、64 或 128 位塊,於 1994 年發布。密鑰大小為 0 到 2040 位。RC5 的獨特之處在於它使用了依賴於數據的輪換,這一功能理論上可以提高對密碼分析的抵抗力,但在實踐中,這通常會使密碼更難分析,並且可能會留下後來才發現的弱點。涉及的其他操作是模加法和按位異或。密碼的密鑰調度使用從小數部分派生的魔法常數 $ \phi $ (黃金比例)和 $ e $ (自然對數的底,又名歐拉數)。具有 64 位塊的 12 輪 RC5 容易受到使用 2 44 個選擇明文的差分攻擊。使用 18 到 20 發子彈應該可以防止這種情況。RC5 發表在麻省理工學院的一篇研究論文中,其規範在RFC 2040中進行了描述。

沒有理由使用 RC5。RC6 是一個改進的版本,它也得到了更好的研究。如果您確實需要使用它,請使用 18 或 20 發子彈。不要像作者最初建議的那樣使用 12。

RC6

RC6 是基於 RC5 的 20 輪 Feistel 分組密碼,經過調整以使其能夠被 AES 競賽所接受(包括使用 128 位的固定塊大小並支持 128、192 和 256 位密鑰)。它可以被視為 RC5 修改版本的兩個交織的並行實例。RC6 最終輸給了 Rijndael,但確實進入了前 5 名(與 Twofish、Serpent、Rijndael 和 MARS 一起)。RC6 使用與 RC5 相同的基本運算,但還包括乘法以改善旋轉運算的擴散特性。它在宣布它的論文中有所描述。

鑑於它在 AES 比賽的第一輪中倖存下來,它被認為是相當安全的。沒有發現其中的重大問題。如果您發現自己想知道是否應該選擇 RC6,答案可能是否定的。堅持比賽的獲勝者 Rijndael(現在稱為 AES)。


所有這些都是由 Ron Rivest 創建或共同創建的,Ron RivestR SA 的創建者之一,也是 MD2、MD4、MD5 的創建者和 MD6 的共同創建者。據說 RC 代表“Ron’s Code”或“Rivest cipher”。有趣的是,RC1 從未發布過,RC3 在開發過程中在 RSA Security 被破壞。

總之:

  • RC2 是一種古老的分組密碼,不應該用於任何事情。
  • RC4 是一種古老的流密碼,不應該用於任何事情,但仍然如此。
  • RC5 是一種稍新的分組密碼,並且具有足夠的輪次是安全的。
  • RC6 是對 RC5 的改進,增加了它的安全性。它輸掉了 AES 競爭。

RC4 和 RC6 是迄今為止研究最充分的。前者是因為儘管它有弱點但它無處不在,而後者是因為它是涉及廣泛分析的競爭的一部分。但是,您仍然不應該使用任何這些密碼,因為有更好的選擇。

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