網易視頻雲分享:RC4加密演算法

這次網易視頻雲的每日分享,將給大家帶來RC4加密演算法的介紹,同時也有一些代碼示例供大家參考。

在密碼學領域,RC4(又名ARC4或者ARCFOUR)是應用最廣泛的流加密演算法,應用在安全套接字層(SSL)(用來保護網路上傳輸的數據)和WEP(無線網路數據保護)上。

雖然它的最大亮點是演算法的簡單性和運行速度,但是因為它存在的弱點,在新的系統中使用時是有所爭論的。

使用起始的輸出keystream,使用非隨機的或者相關性的keys,一個keysteream連續兩次使用,這些使用方法都能使RC4加密方法顯得特別脆弱,

比如在WEP中RC4的一些使用方式就導致了非常不安全的情況。

歷史

RC4是由RSASecurity的RonRivest 在1987年開發出來的,雖然它的官方名是「RivestCipher 4」,但是首字母縮寫RC也可以理解為Ron'sCode。

RC4開始時是商業密碼,沒有公開發表出來,但是在94年9月份的時候,它被人匿名公開在了Cypherpunks郵件列表上,很快它就被發到了sci.crypt新聞組上,

隨後從這兒傳播到了互聯網的許多站點。隨之貼出的代碼後來被證明是很有水平的,因為它的輸出跟取得了RC4版權的私有軟體的輸出是完全的。

由於演算法已經公開,rc4也就不再是商業秘密了,只是它的名字「RC4」仍然是一個註冊商標。

RC4經常被稱作是「ARCFOUR」或者"ARC4"(AllegedRC4,所謂的RC4,因為RSA從來沒有官方公布這個演算法),這樣來避免商標使用的問題。

它已經成為一些廣泛使用的協議和標準的一部分,比如,包括WEP和WPA的無線網卡和TLS。

讓它如此廣泛分佈和使用的主要因素是它不可思議的簡單和速度,不管是軟體還是硬體,實現起來都十分容易。

描述

RC4產生一個偽隨機比特流(akeystream),加密的時候,把它跟明文進行比特級別的異或處理,解密時進行一樣的步驟(因為異或操作是對稱的)。

(這個類似於Vernamcipher,只不過後者不使用偽隨機比特流而直接使用隨機比特流)。

為了產生keystream,本密碼演算法使用時需要兩個數據的私有空間來保存內部狀態:

1. 總共256個位元組的序列(下面用「S"代替)

2. 兩個8比特的索引指針(下面用「i」和「j」代替)

比特流序列的初始化是根據key的長度(key的長度通常在40到256比特之間),使用key-scheduling演算法來進行的(KSA),

一旦完成了初始化,比特流就可以根據偽隨機生成演算法(PRGA)來產生。

Thekey-scheduling algorithm (KSA)

key-scheduling演算法用來初始化數組「S」中的位元組序列,「keylength」定義了key的位元組長度,可能的範圍是[1,256],典型的值是5到16之間,相應的key長度就是40-128比特。

首先,數組「S」被初始化成identitypermutation(身份鑒別的序列),隨後在PRGA的演算法中進行256為周期的循環列舉出來,每次處理的方式都是一樣的,是聯合key的位元組進行的。

偽隨機生成演算法(PRGA

對於儘可能多的每個列舉過程,PRGA演算法修改內部的狀態並輸出keystream的一個位元組。

在每次循環中,PRGA把i加一,並把i所指向的S值加到j上去,然後交換S

和S

的值,最後輸出S

和S

的和(取256的模)對應的S值。

至多經過256次,S每個位置上的值都被交換一次。

The lookupstage of RC4. The output byte is selected by looking up the valuesof S(i) and S(j), adding them together modulo 256, and then usingthe sum as an index into S; S(S(i) S(j)) is used as a byte of thekey stream, K.

實現

許多流加密演算法都是基於Linear feedback shiftregister(LFSRs,線性反饋移位寄存器), 雖然在硬體上有效率但是在軟體實現上卻可能比較慢。

RC4的設計避免了LFSRs的使用,對於軟體實現是相當理想的,它只需位元組操作,使用了256位元組的狀態數組(從S[0]到S[255]),k位元組的key內存(從key[0]到key[k-1]),整數i,j和k。

進行256的取模操作可以用255的位元組AND來進行(在有些平台上,只需簡單地進行位元組相加,忽略掉溢出即可)。

以上就是網易視頻雲關於R4加密演算法的分享,歡迎大家關注網易視頻雲博客和官方微信(vcloud163)查看更多乾貨。背後的技術和具體實現也歡迎大家進入網易視頻雲官網,與技術人員一起探討。

你可能會喜歡