RC4
此條目需要擴充。 (2012年11月15日) |
此條目包含過多行話或專業術語,可能需要簡化或提出進一步解釋。 |
在密碼學中,RC4(來自Rivest Cipher 4的縮寫)是一種串流加密法,密鑰長度可變。它加解密使用相同的密鑰,因此也屬於對稱加密算法。RC4是有線等效加密(WEP)中採用的加密算法,也曾經是TLS可採用的算法之一。
概述 | |
---|---|
設計者 | 羅納德·李維斯特 |
首次發布 | 1994年對外公布 (1987年設計) |
密碼細節 | |
密鑰長度 | 40– 比特(bits) 2048 |
狀態長度 | bits ( 2064 effective) 1684 |
重複回數 | 1 |
RC4是由美國密碼學家羅納德·李維斯特(Ronald Rivest)在1987年設計的。由於RC4算法存在弱點,2015年2月所發佈的 RFC 7465 規定禁止在TLS中使用RC4加密算法[1]。
RC4由偽隨機數生成器和異或運算組成。RC4的密鑰長度可變,範圍是[1,255]。RC4一個字節一個字節地加解密。給定一個密鑰,偽隨機數生成器接受密鑰並產生一個S盒。S盒用來加密數據,而且在加密過程中S盒會變化。
歷史
RC4是由RSA Security的羅納德·李維斯特在1987年開發出來的,雖然它的官方名是「Rivest Cipher 4」,但是首字母縮寫RC也可以理解為"Ron's Code"[2]。(見RC2,RC5,RC6)
RC4開始時是商業機密,沒有公開發表出來,但是在1994年9月份的時候,它被人匿名公開在了Cypherpunks 郵件列表上,很快它就被發到了sci.crypt 新聞群組上,隨後從這傳播到了網際網路的許多站點。隨之貼出的代碼後來被證明是真實的,因為它的輸出跟取得了RC4版權的私有軟體的輸出是完全相同的。由於算法已經公開,RC4也就不再是商業秘密了,只是它的名字「RC4」仍然是一個註冊商標。RC4經常被稱作是「ARCFOUR」或者"ARC4"(意思是稱為RC4),這樣來避免商標使用的問題。RSA Security從來沒有正式公布這個算法,羅納德·李維斯特在2008年的自己的課程筆記中給出了一個指向RC4的英文維基百科文章的連結,並且在2014年的文件[3]中確認了RC4及其代碼的歷史。
RC4已經成為一些協議和標準的一部分,如1997年的WEP和2003年的WPA;和1995年的SSL,以及1999年的TLS。2015年由 RFC 7465 禁止RC4在所有版本的TLS中使用。
虛擬碼
初始化長度為256的S盒。第一個for循環將0到255的互不重複的元素裝入S盒。第二個for循環根據密鑰打亂S盒。
for i from 0 to 255
S[i] := i
endfor
j := 0
for( i=0 ; i<256 ; i++)
j := (j + S[i] + key[i mod keylength]) % 256
swap values of S[i] and S[j]
endfor
下面i,j是兩個指針。每收到一個字節,就進行while循環。通過一定的算法((a),(b))定位S盒中的一個元素,並與輸入字節異或,得到k。循環中還改變了S盒((c))。如果輸入的是明文,輸出的就是密文;如果輸入的是密文,輸出的就是明文。
i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256 //a
j := (j + S[i]) mod 256 //b
swap values of S[i] and S[j] //c
k := inputByte ^ S[(S[i] + S[j]) % 256]
output K
endwhile
此算法保證每256次循環中S盒的每個元素至少被交換過一次。
破解
2015年,比利時魯汶大學的研究人員Mathy Vanhoef及Frank Piessens,公布了針對RC4加密演算法的新型攻擊程式,可在75小時內取得cookie的內容。[4]
參考文獻
- ^ Andrei Popov. Prohibiting RC4 Cipher Suites. IETF. February 2015 [2015-02-18]. (原始內容存檔於2015-02-20).
- ^ Rivest FAQ. [2017-06-18]. (原始內容存檔於2017-07-15).
- ^ Rivest, Ron; Schuldt, Jacob (27 October 2014). "Spritz – a spongy RC4-like stream cipher and hash function" (PDF) (頁面存檔備份,存於網際網路檔案館). Retrieved 26 October 2014.
- ^ http://www.rc4nomore.com (頁面存檔備份,存於網際網路檔案館) RC4 NOMORE