複製鏈接
請複製以下鏈接發送給好友

流加密

鎖定
流加密,是對稱加密算法的一種,加密和解密雙方使用相同偽隨機加密數據流(pseudo-randomstream)作為密鑰,明文數據每次與密鑰數據流順次對應加密,得到密文數據流。實踐中數據通常是一個位(bit)並用異或(xor)操作加密。
中文名
流加密
外文名
Stream cipher
性    質
對稱加密算法
目    的
解決了對稱加密完善保密性困難
用    途
加密
領    域
網絡安全

流加密簡介

密碼學中,流加密(英語:Stream cipher),又譯為流加密數據流加密,是一種對稱加密算法,加密和解密雙方使用相同偽隨機加密數據流(pseudo-random stream)作為密鑰明文數據每次與密鑰數據流順次對應加密,得到密文數據流。實踐中數據通常是一個(bit)並用異或(xor)操作加密。
該算法解決了對稱加密完善保密性(perfect secrecy)的實際操作困難。“完善保密性”由克勞德·香農於1949年提出。由於完善保密性要求密鑰長度不短於明文長度,故而實際操作存在困難,改由較短數據流通過特定算法得到密鑰流。
偽隨機密鑰流(keystream)由一個隨機的種子(seed)通過算法(稱為:PRG,pseudo-random generator)得到,k作為種子,則G(k)作為實際使用的密鑰進行加密解密工作。
為了保證流加密的安全性,PRG必須是不可預測的。弱算法包括glibc random()函數,線性同餘生成器(linear congruential generator)等。 [1] 

流加密流加密過程

加密過程:首先生成一個對稱秘鑰,使用用户公鑰加密這個對稱秘鑰後存儲在文件頭,然後用生成的對稱秘鑰加密文件數據存儲。
解密過程:首先使用自己的私鑰解密被加密的對稱秘鑰,再用該對稱秘鑰解密出數據原文。 [2] 

流加密類型

流密碼基於內部狀態生成密鑰流的連續元素。這種狀態基本上以兩種方式更新:如果狀態獨立於明文或密文消息而改變,則密碼被分類為同步流密碼。相比之下,自同步流密碼根據以前的密文數字更新其狀態。

流加密同步流密碼

在同步流密碼中,獨立於明文和密文消息生成一個偽隨機數字流,然後與明文(加密)或密文(解密)組合。在最常見的形式中,使用二進制數字比特),並且使用獨佔或操作(XOR)將密鑰流與明文結合。這被稱為二元加法流密碼。
在同步流密碼中,發送方和接收方必須準確地進行解密才能成功。如果在傳輸過程中將數字添加到消息中或從消息中刪除數字,則同步丟失。為了恢復同步,可以系統地嘗試各種偏移量以獲得正確的解密。另一種方法是在輸出中的標準點處用標記標記密文。
但是,如果一個數字在傳輸中被損壞而不是被添加或丟失,則明文中只有一個數字會受到影響,並且錯誤不會傳播到消息的其他部分。當傳輸錯誤率很高時,此屬性非常有用;然而,這樣做不太可能在沒有進一步機制的情況下檢測到錯誤。而且,由於這個特性,同步流密碼非常容易受到主動攻擊:如果攻擊者可以改變密文中的數字,他可能能夠對相應的明文位進行可預測的改變;例如,翻轉密文中的一位會導致相同的位在明文中翻轉。 [2] 

流加密自同步流密碼

另一種方法使用幾個前N個密文數字來計算密鑰流。這種方案被稱為自同步流密碼,異步流密碼或密文自動密鑰(CTAK)。自同步的想法在1946年獲得專利,其優點是接收器在接收到N個密文數字後會自動與密鑰流生成器同步,如果數字被丟棄或添加到消息流中,更容易恢復。一位數錯誤的效果有限,僅影響N個明文數字。
自同步流密碼的一個例子是密碼反饋(OFB)模式中的分組密碼。 [2] 

流加密例子

流加密WEP

一個失敗的例子即WEP網絡傳輸協議。
  • 該協議中服務器客户端共享同一密鑰流,該密鑰流由一段24位的數據IV和一段密鑰組成,表示為PRG(IV || k),通過異或操作對明文數據流加密。而IV最多組合情況為2個(約16M大小),因而攻擊者可輕易暴力破解獲取IV,或通過多次截取數據包(當數據流量足夠大,密鑰流必定多次重複)最終得到明文。
  • 另一個弱點在於,802.11網卡重啓後自動設置IV為初始狀態0。兩種情況下都能表明WEP安全性並不盡如人意。
更好的解決方案是針對不同段的信息使用偽隨機密鑰(不同k值),例如TLS所為。 [1] 

流加密硬盤加密

當硬盤使用流加密時,同樣會使用同一密碼本對不同文本進行加密,因而調換兩個文本中少量信息,可以得到同樣的冗餘結果。避免這個問題的方案通常是避免使用流加密。 [1] 

流加密CSS

內容擾亂系統英語:Content Scramble System,CSS),是通過種子生成密鑰,對DVD進行流加密的技術。它也作為數字版權管理系統,曾應用於幾乎所有的DVD光盤。CSS有一個40-bit的流加密算法,1996年首次投入使用,1999年被首次破解。
CSS目前已被更高級的加密技術如運用於高清DVD(HD DVD)和藍光的AES,AACS所取代。它們分別擁有56和128個比特的密鑰長度。 [1] 
參考資料
  • 1.    趙全習, 胡文志, 鄭連清. 一種流加密方案的設計與分析[J]. 計算機應用研究, 2007, 24(12):191-192.
  • 2.    劉宴兵, 田四梅, 唐浩坤,等. 基於混沌的 RC4 流加密算法[J]. 計算機工程, 2011, 37(2):136-138.