移位寄存器
移位寄存器:有n個寄存器(稱為n-級移位寄存器)每個寄存器中能存放1位二進制數
所有寄存器種的數可以一起向右/左移動一位,這叫進動一拍。
反饋移位寄存器(feedback shift register,FSR):由n位的寄存器和反饋函數(feedback function)組成,n位的寄存器中的初始值稱為移位寄存器的初態。
工作原理:移位寄存器中所有位的值右移移位,最右邊的一個寄存器移出的值是輸出位,最左邊一個寄存器的值由反饋函數的輸出值填充,此過程稱為進動一拍。反饋函數f是n個變元(b1,b2,...,bn)的布爾函數。移位寄存器根據需要,不斷進動m拍,就會輸出m位的序列a1,a2,...,am。 這個a1-am(m可以遠遠大於n)就是偽隨機序列。
線性反饋移位寄存器LFSR(linear feedback shift register)的反饋函數為線性函數。
作為密鑰流的序列{ai}的周期一定要大,因為密鑰流的周期太小的話會不安全,攻擊者可能很容易得到整個密鑰流。
n級LFSR輸出的序列的周期r不依賴於寄存器的初始值,而是依賴於特征多項式p(x)
設n級LFSR的輸出序列{ai}滿足遞推關系 an+k=cnan+k-1⊕cn-1an+k-2⊕...⊕c1ak(k>=1) 這種遞推關系可用一個一元高次多項式f(x)=cnxn+cn-1xn-1+...+c1x+1表示,這個多項式就是LFSR的特征多項式。
設f(x)是GF(2)上的多項式,是f(x)|(xn-1)的最小的n稱為f(x)的周期或者階。
例如f(x)=x4+x3+x2+x+1為GF(2)上多項式,以它為特征多項式的LFSR的輸出序列周期。
(x5-1)=(x4+x3+x2+x+1)(x-1)=f(x)(x-1)
f(x)|xn-1,n<5 周期為5
設初始狀態:0001
狀態 輸出位
0001 1
1000 0
...
n級LFSR輸出的序列的最大周期是2n-1
LFSR的寄存器狀態遍歷2n-1個非零狀態
初始狀態全為0,則輸出序列為0的循環。
當LFSR的寄存器狀態遍歷2n-1個非零狀態時,序列的周期達到最大2n-1,這種序列被稱為m序列。
若n次不可約多項式f(x)的階為2n-1,則稱f(x)為n次本原多項式。
{ai}是周期為2n-1的m-序列的充要條件是其特征多項式f(x)為n階本原多項式。
例:一個3-級的反饋移位寄存器,反饋函數f(x)=b3⊕b1,初態為100
則f(x)=x3+x+1
(x7-1)=(x4+x2+x+1)(x3+x+1)=(x4+x2+x+1)|f(x)
f(x)|xn-1 n<7 所以f(x)的周期為7
狀態 輸出位
100 0
110 0
111 1
...
輸出序列的周期是7,所提他是m-序列。
流密碼的攻擊
攻擊目的:獲悉整個密鑰流{ki}
攻擊手段: 唯密文 已知明文 選擇明/密文 自適應選擇明/密文
1)若LFSR的反饋函數已知,破譯者已知連續n位明密文對{m1,m2…mn}和{c1,c2…,cn},則可以推導出n比特密鑰流ki=mi⊕ci,{k1,k2,…kn}繼而由反饋函數得到整個密鑰流{ki}
2)已知明文攻擊下,假設破譯者已知了2n位明密文對M={m1,m2…m2n},C={c1,c2…c2n}則可確定段2n位長的密鑰序列K={k1,k2,…,k2n},由此可以完全確定n級反饋多項式的系數。
為了提高密鑰流序列的線性復雜度,需要使用非線性函數。將密鑰流生成器分成 驅動部分 和 非線性組合部分。
驅動部分可由m-序列或其他長周期的LFR序列組成,用於控制密鑰流生成器的狀態序列,並為非線性組合部分提供偽隨機性質良好的序列:非線性組合部分利用驅動部分生成的狀態序列生成滿足要求的密碼特性好的密鑰流序列。
要求:符合香農的“擴散”和“混淆”兩條原則。驅動部分用LFSR將密鑰k擴散成周期很大的狀態序列。而狀態序列與密鑰k間的關系經非線性組合混淆后被隱蔽。
濾波生成器(前饋生成器)
由LFSR和濾波前饋函數組成。LFSR可以多個,它們的輸出序列共同作為濾波函數的輸入

濾波函數要求具有很好的非線性性質,以增強生成器的抗攻擊能力。
例如:Geffe序列發生器
兩個LFSR是復合器的輸入,第三個LFSR控制復合器的輸出。

鍾控生成器
由一個或幾個FSR輸出序列,控制一個FSR的時鍾。
