-
流加密
鎖定
流加密,是對稱加密算法的一種,加密和解密雙方使用相同偽隨機加密數據流(pseudo-randomstream)作為密鑰,明文數據每次與密鑰數據流順次對應加密,得到密文數據流。實踐中數據通常是一個位(bit)並用異或(xor)操作加密。
流加密簡介
在密碼學中,流加密(英語:Stream cipher),又譯為流加密、數據流加密,是一種對稱加密算法,加密和解密雙方使用相同偽隨機加密數據流(pseudo-random stream)作為密鑰,明文數據每次與密鑰數據流順次對應加密,得到密文數據流。實踐中數據通常是一個位(bit)並用異或(xor)操作加密。
該算法解決了對稱加密完善保密性(perfect secrecy)的實際操作困難。“完善保密性”由克勞德·香農於1949年提出。由於完善保密性要求密鑰長度不短於明文長度,故而實際操作存在困難,改由較短數據流通過特定算法得到密鑰流。
偽隨機密鑰流(keystream)由一個隨機的種子(seed)通過算法(稱為:PRG,pseudo-random generator)得到,k作為種子,則G(k)作為實際使用的密鑰進行加密解密工作。
流加密流加密過程
加密過程:首先生成一個對稱秘鑰,使用用户公鑰加密這個對稱秘鑰後存儲在文件頭,然後用生成的對稱秘鑰加密文件數據存儲。
流加密類型
流密碼基於內部狀態生成密鑰流的連續元素。這種狀態基本上以兩種方式更新:如果狀態獨立於明文或密文消息而改變,則密碼被分類為同步流密碼。相比之下,自同步流密碼根據以前的密文數字更新其狀態。
流加密同步流密碼
在同步流密碼中,獨立於明文和密文消息生成一個偽隨機數字流,然後與明文(加密)或密文(解密)組合。在最常見的形式中,使用二進制數字(比特),並且使用獨佔或操作(XOR)將密鑰流與明文結合。這被稱為二元加法流密碼。
在同步流密碼中,發送方和接收方必須準確地進行解密才能成功。如果在傳輸過程中將數字添加到消息中或從消息中刪除數字,則同步丟失。為了恢復同步,可以系統地嘗試各種偏移量以獲得正確的解密。另一種方法是在輸出中的標準點處用標記標記密文。
但是,如果一個數字在傳輸中被損壞而不是被添加或丟失,則明文中只有一個數字會受到影響,並且錯誤不會傳播到消息的其他部分。當傳輸錯誤率很高時,此屬性非常有用;然而,這樣做不太可能在沒有進一步機制的情況下檢測到錯誤。而且,由於這個特性,同步流密碼非常容易受到主動攻擊:如果攻擊者可以改變密文中的數字,他可能能夠對相應的明文位進行可預測的改變;例如,翻轉密文中的一位會導致相同的位在明文中翻轉。
[2]
流加密自同步流密碼
另一種方法使用幾個前N個密文數字來計算密鑰流。這種方案被稱為自同步流密碼,異步流密碼或密文自動密鑰(CTAK)。自同步的想法在1946年獲得專利,其優點是接收器在接收到N個密文數字後會自動與密鑰流生成器同步,如果數字被丟棄或添加到消息流中,更容易恢復。一位數錯誤的效果有限,僅影響N個明文數字。
流加密例子
流加密WEP
一個失敗的例子即WEP網絡傳輸協議。
- 另一個弱點在於,802.11網卡重啓後自動設置IV為初始狀態0。兩種情況下都能表明WEP安全性並不盡如人意。