密码学基础知识(五)序列密码
序列密碼,也就是流密碼,是對稱密碼。跟前面分組密碼的區別就在于其加密變換的對象比分組的塊小,一般是Bit。前面說過的vernam密碼就是一種序列密碼。
序列密碼的特點有哪些呢?
? ? ?明文:被加密的是叫明文字。是明文序列的一項。
?????密鑰:由主密鑰(初始密鑰)產生一個密鑰序列,長度和明文字bit長度相同。相應的別叫做密鑰字。
? ? ?密文:經加密函數,明文字與密鑰產生了密文字。
? ? ?加密:與現態(當前狀態)有關。照分組密碼的OFB和CFB理解。
?????序列密碼體制關鍵就在于這個產生密鑰序列的方法,也就是密鑰序列產生器應具有良好的隨機性,讓密鑰序列不可預測。不過一般都是偽隨機。分組密碼的關鍵是加解密算法讓明文密文關聯盡可能復雜。
? ? ?序列密碼分為同步序列密碼和自(異)同步序列密碼。啥區別呢,就是前者密鑰序列獨立于明文序列和密文序列。后者并不獨立。
同步序列密碼特點:消息的發送者和接受者必須同步,即相同的密鑰。
自同步序列密碼特點:明文統計擴散。
好了,說完這些啰嗦的東西,咱們就說說這關鍵的密鑰序列產生器:
???????? 密鑰流產生器。一般看做一個有限狀態自動機,這個機又是啥呢?可以這樣理解,它有三部分,分別是有限狀態集,有限輸入字符集和有限輸出字符集,狀態轉移函數。就是在狀態Si,輸入為Ai時,狀態裝換為Sh并輸出Ah。放在咱們序列密碼中,就是把密鑰流當做輸入,當狀態一變,就輸出。
???????? 好了,那問題來了,這狀態序列怎么確定呢?還有你說輸出就輸出,咋輸出的呢?
???????? 我們將控制狀態序列的部分叫驅動器,一般利用線性反饋移位寄存器。一般要求最長周期或m序列產生器實現。這樣就能為非線性組合部分提供統計性能好的序列了。
???????? 我們將進行非線性組合產生輸出序列的部分叫非線性組合部分。要求F輸入是二元序列輸出也得是,這是最基本要求。對于可定的序列,F應使輸出序列周期足夠大。
???????? 那就談談線性反饋移位寄存器(LFSR)。
一個n階反饋寄存器,由n個二元寄存器和一個反饋函數組成。這n個寄存器的內容所形成的向量即為此時狀態。所以其有2n個狀態。T時刻LFSR狀態為st=(at,at+1,…at+n-1),t+1時刻:st+1=(at+1,at+2,…,at+n),兩者一比,發現兩點不同:
1.??? at輸出了。就這樣,狀態改變就輸出一個,成了輸出序列。S0是及寄存器的初始狀態。
2.??? 多了個at+n,其求法:at+n=f(at,at+1,…at+n-1)。f就是反饋函數。當f的運算為模2加法時,稱為線性移位反饋寄存器(LFSR)。
LFSR特點:
初始狀態非0,新狀態就非0;初始為0 ,狀態恒為0。
選擇合適的f反饋函數可以使周期達到2n-1,即m序列。(2n長明密文就可攻破,畢竟偽隨機)
驅動部分就說這么多,下面說說幾種非線性序列生成器,一般都是幾個LFSR組合起來:
gaffe:3個LFSR,LFSR1,3是輸入,LFSR2是輸出。
J-K觸發器:2個LFSR, Pless產生器是其加強版。
Pless產生器:8個LFSR,4個J-K,一個循環計數器。
鐘控序列產生器:2個LFSR,一個控制另一個的時鐘脈沖。
門限產生器:可變數量n個LFSR。要求:大奇數,所有LFSR長度互素,反饋多項式都是本原的,這樣就最大周期了。
總結一下:序列密碼進行bit加密,有明文字,密鑰字,密文字,關鍵在于密鑰產生器,其分兩部分,驅動(狀態轉移函數,輸出函數,狀態集和輸出集)和非線性組合。驅動一般是LFSR,LFSR是反饋函數f運算為模2加法。最后介紹了集中產生器,都是LFSR組合的,想法設法達成最大周期。
典型的序列密碼算法:RC4,A5和SNOW2.0,最后一個不細說。
首先RC4:被廣泛應用
???? 基于非線性數據表變換的序列密碼。有一個足夠大的數據表提供進行非線性變換,產生非線性輸出序列,它也叫S盒,S盒大小為2n,通常n=8。RC4每個輸出都是S盒中的隨機元素。
好了,那么問題又來了,S盒內是咋排列的?又是怎么隨機選出來的?
???? 主角登場:KSA密鑰調度算法和PRGA偽隨機生成算法,分別解決上述兩個問題。
KSA:
S初始化:把0~255線性填入。
T初始化:臨時向量T,將主密鑰K值付給T,假如K長度小于L,那就將K重復賦值給L,直到L都被賦值了。
用T對S置換:按照T[i]對S進行位置置換,就把元素換個位置。
結束了KSA就是PRFA了
PRGA:從S中隨機取出,并修改S方便下次選取
???? 就是一個算法
所以我們發現其實S盒里就是0-255,只不過是位置一直在變。
RC4至少128位密鑰才安全。
?
A5算法:GSM
???? 介紹下A5/1,典型的基于LFSR的序列密碼算法,3個LFSR,階數分別為19,22,23,均為本原多項式。64位密鑰。
???? 已經明文就可破解A5/1,原因:算法設計太簡單,沒有足夠的混淆和擴散。
?
?
SNOW2.0:
???? 基于LFSR和有限狀態機的序列密碼算法。1個LFSR+1個有限狀態轉換機(2個32位寄存器)。主密鑰K:128位或256位,初始向量:128位。
就這些吧,算法谷歌度娘多得是,有功夫我再寫個上來。懶得寫啊。
總結
以上是生活随笔為你收集整理的密码学基础知识(五)序列密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码学基础知识(三)古典密码
- 下一篇: 密码学基础知识(六)Hash函数与消息认