流密碼和RC4


定義:流密碼是對稱密碼算法,從明文輸入流逐位或逐字節產生密文輸出。

實例:使用最廣泛的流密碼是RC4

流密碼結構:

  

流密碼類似於”一次一密”,不同的是”一次一密”使用的是真正的隨機數流,而流密碼使用的是偽隨機數流。

設計流密碼的主要因素

1、加密序列的周期要長,若出現重復的周期過短,容易被破解

2、密鑰流應該盡可能地接近真正隨機數流的特征

3、密鑰長度要長,以避免瓊窮舉攻擊

 

RC4算法

RC4算法是Ron RivestRSA公司在1987年設計的一種流密碼,作為RSA的商業機密直到1994年才被匿名公布於Internet

該算法是一個可變密鑰長度、面向字節操作的流密碼。該算法以隨機置換作為基礎,其密碼周期很可能大於10100,且該算法的運行速度很快。

RC4被用於為網絡瀏覽器和服務器間通信而制定的SSL/TLS(安全套接字協議/傳輸層安全協議)標准中,以及作為IEEE 801.11無線局域網標准一部分的WEP(Wired Equivalent Privacy)協議和新的WiFi受保護訪問協議(WAP)中。從這些應用來看,RC4構成了當今網絡通信的非常重要的部分,因此這個算法非常重要

 

RC4的邏輯結構圖

算法描述:

1、ST的初始狀態

S中元素的值按升序被置為0-255,同時建立一個臨時向量T。將密鑰的值循環復制到T向量中。

2、S的初始置換

T產生S的初始置換,置換偽碼如下

  j = 0;

  for (i = 0 ; i < 256 ; i++){

    j = (j + S[i] + T[i]) mod 256;

    swap(S[i] , S[j]);

  }

因為對S的操作僅是交換,S仍然包含所有值為0-255的元素。

3、密鑰流的生成

密鑰流生成偽碼如下

  i , j = 0;

  while (true){

    i = (i + 1) mod 256;

    j = (j + S[i]) mod 256;

    swap(S[i] , S[j]);

    t = (S[i] + S[j]) mod 256;

    k = S[t];

  }

加密中,將k的值與明文的下一字節異或,解密時將k的值與密文的下一字節異或。

 

RC4的密鑰長度超過128位時,目前沒有任何攻擊方法能夠破解。不過WEP協議易受到一種特殊的攻擊方式攻擊,但這個問題本質上並不在與RC4本身,而是RC4密鑰的產生途徑有漏洞。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM