最全對稱加密----流密碼總結到位


它是以最小單位比特作為一次加密、解密的操作元素,利用加密算法進行加密與解密。流密碼的基本思想是利用密鑰 k 產生一個密鑰流 z ,並利用相應的規則對明文串 x進行加密,所得到的密文為: y 。

 而流密碼與所謂的分組密碼最大的差距除了對於明文的處理方式不同以外,還有其加密器中是否含有記憶元件,流密碼的加密器中存在記憶元件,而分組密碼不存在,也正是由於這個記憶元件,我們可以進一步將流密碼分為同步流密碼和自同步流密碼。

同步流密碼:
 是不是聽起來有點復雜,但其實它取決於加密器中記憶元件的存儲狀態,獨立於明文字符的叫做同步流密碼,否則叫做自同步流密碼, 但其實對於自同步流密碼來說,它的密鑰流的產生與輸入的明文有關, 所以在理論上我們很難能夠去分析清楚。而目前,我們在流密碼方面的所有科研成果絕大多數都是關於同步流密碼的。

 同步流密碼的加密過程都與明文無關,故我們得到的密文也與明文直接聯系。所以,通常情況下我們將同步流密碼的加密器分成密鑰流產生器和加密變換器兩個部分。在下圖所表示的就是流密碼的加密和解密流程。

 

 

 


 我們輸入明文x,利用密鑰流生成器生成的密鑰z,利用加密算法E對明文x進行加密。可以得到密文y。

 反過來說,當我們已知密文y時,利用密鑰z和解密算法D解析密文y,就可以得到明文x。

 同步流密碼的加密算法E可以是各種各樣的,但是我們必須保證變換是可逆的(也就是說通過明文利用加密算法可以得到密文,反過來利用密文和解密算法就可以得到明文)。

 實際使用的數字保密通信系統一般都是二元系統,所以說,在有限域 GF(2)上討論的二元加法流密碼是目前最為常用的流密碼體制。

 

 

 


 其實通過這兩幅圖我們可以對比出來,在二元域中,二元加法流密碼就是將我們的加密算法換成了所謂的二元域上的加法。(相信學計算機的我們一定對這個不陌生吧!hhhh~)

線性反饋移位寄存器LFSR:
 線性反饋移位寄存器(LFSR):通常由移位寄存器和異或門邏輯組成。其主要應用在:偽隨機數,偽噪聲序列,計數器,BIST,數據的加密和CRC校驗等。在這里我們主要說LFSR在密碼學中的應用,尤其是在流密碼中,線性反饋移位寄存器是組成密鑰流生成器的一個重要部分。

 GF(2 )上一個 n 級反饋移位寄存器由 n 個二元存儲器與一個反饋函數 f ( a1 , a2 ,…, an )組成。話不多說,我們直接看圖。

 

 

 

 

 

 


 圖中可以看到每一存儲器稱為移位寄存器的一級,在任一時刻,這些級的內容構成該反饋移位寄存器的狀態,每一狀態對應於GF(2)上的一個 n 維向量,共有2n種可能的狀態。每一時刻的狀態可用 n 長序列 a1 , a2 ,…, an表示, 其中 ai 是第 i 級存儲器的內容。

 初始狀態由用戶確定,當第 i 個移位時鍾脈沖到來時,每一級存儲器 ai 都將其內容向下一級 ai - 1 傳遞, 並根據寄存器此時的狀態 a1 , a2 , …, an 計算 f ( a1 , a2 , …, an ) ,作為下一時刻的 an。

 反饋函數 f ( a1 , a2 , …, an ) 是 n 元布爾函 , 即 n 個變元 a1 , a2 ,…, an 可以獨立地取 0 和 1 這兩個可能的值, 函數中的運算有邏輯 與、邏輯或、邏輯補等運算,最后的函數值也為 0 或 1。

 線性反饋移位寄存器輸出序列的性質完全由其反饋函數決定。 n 級線性反饋移位寄存器最多有 2的n次方個不同的狀態。若其初始狀態為 0,則其狀態恆為 0。若其初始狀態非 0,則其后邊的狀態也不會為 0。因此 n 級線性反饋移位寄存器的狀態周期小於等於 2的n次方- 1。其輸出序列的周期與狀態周期相等, 也小於等於 2的n次方- 1。只要選擇合適的反饋函數便可使 序列的周期達到最大值 2的n次方- 1,周期達到最大值的序列稱為 m 序列。

m序列:
 m序列也就是最長線性移位寄存器序列的簡稱,是由線性反饋的移存器產生的周期最長的序列,也是一種偽隨機序列。

什么是偽隨機序列?
 偽隨機序列也就是,即使截獲其中一段,也無法推測后面是什么。如果說密鑰流是周期的, 要完全做到隨機性是困難的。嚴格地說, 這樣的序列不可能做到隨機, 只能要求截獲比周期短的一段密鑰流時不會泄露更多信息, 這樣的序列稱為偽隨機序列。

m序列的性質:
均衡性:
 由m序列的一個周期中,一般情況下,0和1的數目基本相等或者1的數目比0的數目多一個。
 例如0111101101001100000111001010101看出:總共有16個1和15個0。

游程分布:
 m序列中取值相同的那些相繼的元素合稱為一個“游程”。游程中元素的個數稱為游程長度。
 n級的m序列中,總共有2n-1個游程,其中長度為1的游程占總游程數的1/2,長度為2的游程占總游程數的1/4,長度為k的游程占總游程數的2k。且長度為k的游程中,連0與連1的游程數各占一半。

 如序列0111101101001100000111001010101中,游程總數為18-1=17,此序列各種長度的游程分布如下:
 長度為1的游程數目為10,其中5個1游程和5個0游程;
 長度為2的游程數目為4,2個11游程,2個00游程;
 長度為3的連1游程數目為1;
 長度為4的連0游程數目為1;
 長度為5的連1游程數目為1。

移位相加特性
 一個m序列m1,m序列經任意延遲移位產生的另一序列m2,將m1與m2進行模2加運算,所得到的序列仍是m1的某次延遲移位序列 m3,並且m3等於m1與m2 異或。

相關特性

 我們可以根據移位相加特性來驗證m序列的自相關特性。因為移位相加后得到的還是m序列,因此0的個數比1的個數少1。

Golomb 公設:
 由m序列的性質,我們可以驗證Golomb 對偽隨機周期序列提出了應滿足的如下3 個隨機性公設,具體如下:

① 在序列的一個周期內, 0 與 1 的個數相差至多為 1。

公設①說明{ ai}中 0 與 1 出現的概率基本上相同
② 在序列的一個周期內,長為 i 的游程占游程總數的2的n次方分之1 ( i = 1, 2 ,… ),且在等長的游程中 0 的游程個數和 1 的游程個數相等。

公設②說明 0 與 1 在序列中每一位置 上出現的概率相同。
③ 異相自相關函數是一個常數。

③ 異相自相關函數是一個常數。

公設③意味着通過對序列與其平移后的序列做比較, 不能給出其他任何信息。


免責聲明!

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



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