一、流密碼的基本概念
RC4(Rivest Cipher 4)是由密碼學家 Ron Rivest(RSA 算法發明者之一)于 1987 年設計的對稱流加密算法。它以簡單、高效著稱,曾廣泛應用于網絡安全協議(如 SSL/TLS、WEP/WPA),但因存在嚴重安全漏洞,現已逐漸被淘汰。
1.1 流密碼概念
流密碼是將明文劃分成字符(如單個字母),或其編碼的基本單元(如0,1數字),字符分別與密鑰流作用進行加密,解密時以同步產生的同樣的密鑰流實現;
- 流密碼強度完全依賴于密鑰序列的隨機性和不可預測性;
- 核心問題是密鑰流生成器的設計
- 保持收發兩端密鑰流的精確同步是實現可靠解密的關鍵技術;
流密碼框圖如下:KG指密鑰流生成器
- 消息流:
,其中
- 密文流:
,其中
- 密鑰流:
- 加法流密碼:
密鑰流:是一個完全隨機的非周期序列,可以實現一次一密體制。但需要無限存儲單元和復雜的輸出邏輯函數。
是第
時刻密鑰流生成器的內部狀態,以存儲單元的存數矢量描述。
1.2 有限狀態自動機FA
具有離散輸入和輸出(輸入集和輸出集均有限)的一種數學模型
- 有限狀態集
- 有限輸入字符集
- 有限輸出字符集
- 轉移函數
;
,第
時刻輸入
,輸出
;
例如2-1:
轉移函數:
那么FA的狀態圖表示為:初始狀態為
若輸入為
那么輸出為,狀態轉移為
。
1.3 作為FA的密鑰流產生器
- 同步流密碼的密鑰流產生器可看為一個參數為
的FA;
- 輸出集
,狀態集
,狀態轉移函數
和輸出函數
,初始狀態
- 設計的關鍵是
和
;
- 具有非線性
的的FA理論很不完善,通常采用線性
以及非線性的
- 可將此類產生器分為驅動部分和非線性組合部分
- 驅動部分控制狀態轉移
- 非線性組合部分提供統計特性良好的序列
兩種目前最為流行和實用的密鑰流產生器如圖所示,其驅動部分是一個或多個線性反饋移位寄存器:
1.4 流密碼的分類
1.4.1 同步流密碼SSC
與明文消息無關,密鑰流將獨立于明文
同步流密碼的特點
- 對于明文而言,這類加密變換是無記憶的,但它是時變的;
- 只有保持兩端精確同步才能正常工作;
- 對主動攻擊時異常敏感而利于檢測;
- 無差錯傳播
1.4.2 自同步流密碼SSSC
依賴于
,使密文
不僅與當前輸入
有關,而且由于
對
的關系而與以前的輸入
有關。一般在有限的
級存儲下將與
有關。
優點:具有自同步能力,強化了其抗統計分析的能力;
缺點:有位長的差錯傳播;
如圖所示:
1.5 序列的偽隨機性
1.5.1 周期
- 周期:序列
,使對所有
,
成立的最小整數
;
- 長度為
的串
,在序列
的一個周期中,
例如:長度為的1串和長度為
的0串:...011...10...和...100...01...
1.5.2 自相關函數
上周期為
的序列
的自相關函數定義為:
當時,
;當
時,稱
為異相自相關函數。
1.5.3 Golomb隨機性公設
Golomb對偽隨機周期序列提出了應滿足的如下三個隨機性公設:
- 在序列的一個周期內,0與1的個數相差至多為1;
- 在序列的一個周期內,長為1的游程占游程總數的
,長為2的游程占游程總數的?
,... ,長為
的游程占游程總數的?
, ,且在等長的游程中0的游程個數和1的游程個數相等;
- 異自相關函數是一個常數;
1.5.4 密碼系統隨機性條件
一個偽隨機序列應滿足另外的三個條件:
的周期相當大。
的確定是計算上容易的。
由密文及相應的明文的部分信息,不能確定整個
。(不可預測性)
二、線性反饋移位寄存器序列
2.1 相關概念
- 級數(Stages):存儲單元數;
- 狀態(State):
個存儲單元的存數
;
- 反饋函數:
是狀態
的函數;
- 線性反饋移位寄存器(LFSR):
為線性函數
- 非線性反饋移位寄存器:
為非線性函數
如圖所示:n級反饋移位寄存器
2.2?線性反饋移位寄存器
如果移位寄存器的反饋函數是
的線性函數,則稱之為線性反饋移位寄存器LFSR,此時可寫為
;
那么輸出序列滿足
,其中
為非負正整數。
2.2.1 最長周期
在線性反饋移位寄存器中總是假定中至少由一個不為 0,
否則?,這樣的話,在?
個脈沖后狀態必然是?
,且這個狀態必將一直持續下去。
因此線性移位器序列的最長周期為
;
2.2.2 m序列
- 為
的LFSR序列稱為
序列
級
序列
循環地遍歷所有
個非零狀態,且任一非零輸出皆為
的移位,或為其循環等價序列;
- 初始狀態不同
個的
序列共有
個,他們的全體記為
,他們只是狀態前后次序之別。
m序列滿足Golomb的三個隨機性公設
2.2.3 特征多項式
LFSR的特征多項式為: