流加密,是對稱加密算法的一種,加密和解密雙方使用相同偽隨機(jī)加密數(shù)據(jù)流(pseudo-randomstream)作為密鑰,明文數(shù)據(jù)每次與密鑰數(shù)據(jù)流順次對應(yīng)加密,得到密文數(shù)據(jù)流。實踐中數(shù)據(jù)通常是一個位(bit)并用異或(xor)操作加密。
簡介在密碼學(xué)中,流加密(英語:Stream cipher),又譯為流加密、數(shù)據(jù)流加密,是一種對稱加密算法,加密和解密雙方使用相同偽隨機(jī)加密數(shù)據(jù)流(pseudo-random stream)作為密鑰,明文數(shù)據(jù)每次與密鑰數(shù)據(jù)流順次對應(yīng)加密,得到密文數(shù)據(jù)流。實踐中數(shù)據(jù)通常是一個位(bit)并用異或(xor)操作加密。
該算法解決了對稱加密完善保密性(perfect secrecy)的實際操作困難?!巴晟票C苄浴庇煽藙诘隆は戕r(nóng)于1949年提出。由于完善保密性要求密鑰長度不短于明文長度,故而實際操作存在困難,改由較短數(shù)據(jù)流通過特定算法得到密鑰流。
偽隨機(jī)密鑰流(keystream)由一個隨機(jī)的種子(seed)通過算法(稱為:PRG,pseudo-random generator)得到,k作為種子,則G(k)作為實際使用的密鑰進(jìn)行加密解密工作。
為了保證流加密的安全性,PRG必須是不可預(yù)測的。弱算法包括glibc random()函數(shù),線性同余生成器(linear congruential generator)等。1
流加密過程加密過程:首先生成一個對稱秘鑰,使用用戶公鑰加密這個對稱秘鑰后存儲在文件頭,然后用生成的對稱秘鑰加密文件數(shù)據(jù)存儲。
解密過程:首先使用自己的私鑰解密被加密的對稱秘鑰,再用該對稱秘鑰解密出數(shù)據(jù)原文。2
類型流密碼基于內(nèi)部狀態(tài)生成密鑰流的連續(xù)元素。這種狀態(tài)基本上以兩種方式更新:如果狀態(tài)獨(dú)立于明文或密文消息而改變,則密碼被分類為同步流密碼。相比之下,自同步流密碼根據(jù)以前的密文數(shù)字更新其狀態(tài)。
同步流密碼在同步流密碼中,獨(dú)立于明文和密文消息生成一個偽隨機(jī)數(shù)字流,然后與明文(加密)或密文(解密)組合。在最常見的形式中,使用二進(jìn)制數(shù)字(比特),并且使用獨(dú)占或操作(XOR)將密鑰流與明文結(jié)合。這被稱為二元加法流密碼。
在同步流密碼中,發(fā)送方和接收方必須準(zhǔn)確地進(jìn)行解密才能成功。如果在傳輸過程中將數(shù)字添加到消息中或從消息中刪除數(shù)字,則同步丟失。為了恢復(fù)同步,可以系統(tǒng)地嘗試各種偏移量以獲得正確的解密。另一種方法是在輸出中的標(biāo)準(zhǔn)點(diǎn)處用標(biāo)記標(biāo)記密文。
但是,如果一個數(shù)字在傳輸中被損壞而不是被添加或丟失,則明文中只有一個數(shù)字會受到影響,并且錯誤不會傳播到消息的其他部分。當(dāng)傳輸錯誤率很高時,此屬性非常有用;然而,這樣做不太可能在沒有進(jìn)一步機(jī)制的情況下檢測到錯誤。而且,由于這個特性,同步流密碼非常容易受到主動攻擊:如果攻擊者可以改變密文中的數(shù)字,他可能能夠?qū)ο鄳?yīng)的明文位進(jìn)行可預(yù)測的改變;例如,翻轉(zhuǎn)密文中的一位會導(dǎo)致相同的位在明文中翻轉(zhuǎn)。2
自同步流密碼另一種方法使用幾個前N個密文數(shù)字來計算密鑰流。這種方案被稱為自同步流密碼,異步流密碼或密文自動密鑰(CTAK)。自同步的想法在1946年獲得專利,其優(yōu)點(diǎn)是接收器在接收到N個密文數(shù)字后會自動與密鑰流生成器同步,如果數(shù)字被丟棄或添加到消息流中,更容易恢復(fù)。一位數(shù)錯誤的效果有限,僅影響N個明文數(shù)字。
自同步流密碼的一個例子是密碼反饋(CFB)模式中的分組密碼。2
例子WEP一個失敗的例子即WEP網(wǎng)絡(luò)傳輸協(xié)議。
該協(xié)議中服務(wù)器和客戶端共享同一密鑰流,該密鑰流由一段24位的數(shù)據(jù)IV和一段密鑰組成,表示為PRG(IV || k),通過異或操作對明文數(shù)據(jù)流加密。而IV最多組合情況為2個(約16M大?。?,因而攻擊者可輕易暴力破解獲取IV,或通過多次截取數(shù)據(jù)包(當(dāng)數(shù)據(jù)流量足夠大,密鑰流必定多次重復(fù))最終得到明文。
另一個弱點(diǎn)在于,802.11網(wǎng)卡重啟后自動設(shè)置IV為初始狀態(tài)0。兩種情況下都能表明WEP安全性并不盡如人意。
更好的解決方案是針對不同段的信息使用偽隨機(jī)密鑰(不同k值),例如TLS所為。1
硬盤加密當(dāng)硬盤使用流加密時,同樣會使用同一密碼本對不同文本進(jìn)行加密,因而調(diào)換兩個文本中少量信息,可以得到同樣的冗余結(jié)果。避免這個問題的方案通常是避免使用流加密。1
CSS內(nèi)容擾亂系統(tǒng)(英語:Content Scramble System,CSS),是通過種子生成密鑰,對DVD進(jìn)行流加密的技術(shù)。它也作為數(shù)字版權(quán)管理系統(tǒng),曾應(yīng)用于幾乎所有的DVD光盤。CSS有一個40-bit的流加密算法,1996年首次投入使用,1999年被首次破解。
CSS目前已被更高級的加密技術(shù)如運(yùn)用于高清DVD(HD DVD)和藍(lán)光的AES,AACS所取代。它們分別擁有56和128個比特的密鑰長度。1
本詞條內(nèi)容貢獻(xiàn)者為:
宋春霖 - 副教授 - 江南大學(xué)