簡述流加密算法

在之前的文章中,我們介紹了對稱加密中的塊加密算法,今天我們來了解一下什么是流加密?

流加密的概況

流加密是對稱加密算法的一種,是指加密和解密雙方使用相同偽隨機(jī)加密數(shù)據(jù)流(pseudo-random stream)作為密鑰,明文數(shù)據(jù)每次與密鑰數(shù)據(jù)流順次對應(yīng)加密,得到密文數(shù)據(jù)流。

流加密解決了對稱加密完善保密性的實(shí)際操作困難,實(shí)踐中數(shù)據(jù)通常是一個(gè)位(bit)并用異或(xor)操作加密,偽隨機(jī)密鑰流由一個(gè)隨機(jī)的種子通過算法得到,k作為種子,則G(k)作為實(shí)際使用的密鑰進(jìn)行加密解密工作。

為了保證流加密的安全性,PRG必須是不可預(yù)測的。弱算法包括glibc random()函數(shù),線性同余生成器(linear congruential generator)等。

流加密

流加密加解密過程

加密過程:首先生成一個(gè)對稱秘鑰,使用用戶公鑰加密這個(gè)對稱秘鑰后存儲(chǔ)在文件頭,然后用生成的對稱秘鑰加密文件數(shù)據(jù)存儲(chǔ)。

解密過程:首先使用自己的私鑰解密被加密的對稱秘鑰,再用該對稱秘鑰解密出數(shù)據(jù)原文。

流加密

流加密的類型

流加密的密鑰可分為同步流密碼和自同步流密碼。同步流密碼是指密鑰流的生成過程是獨(dú)立的,明文及密文不參與其中;而自同步流密碼(也叫異步流密碼)中的密文參與到密鑰流的生成。

常見的流加密算法

常見的流密碼算法包括RC4、ZUC等,其中ZUC算法又被叫做祖沖之算法,是由我國學(xué)者自主設(shè)計(jì)的加密和完整性算法,是我國第一個(gè)成為國際密碼標(biāo)準(zhǔn)的密碼算法。

流加密的缺點(diǎn)

首先流加密屬于對稱加密,那就有一個(gè)密鑰交換的問題,也就是加解密雙方事先得有一個(gè)辦法可以安全地交換密鑰。但流加密的密鑰長度是和明文一樣長的,而且只能使用一次,交換的成本相對加密行為來說不低。而且,既然能安全交換密鑰,為什么不直接安全交換同樣長度的明文呢?

其次,流加密安全性來源于密鑰的隨機(jī)性,也就是偽隨機(jī)序列的隨機(jī)性。但前面隨機(jī)數(shù)一文說過,并不存在真隨機(jī)數(shù)。像RC4算法、WEP協(xié)議、DVD使用的數(shù)據(jù)加密協(xié)議,由于設(shè)計(jì)或其他限制,也都存在密鑰隨機(jī)序列在一定條件下重復(fù)出現(xiàn)的概率。這些都會(huì)影響流加密的安全效果。

流加密

總體來講,由于本身密鑰的使用成本及安全性問題,流加密在實(shí)際應(yīng)用中出現(xiàn)的頻率遠(yuǎn)低于分組加密。但流加密的一些優(yōu)點(diǎn),也被分組加密算法所吸收應(yīng)用,如通過不同的工作模式實(shí)現(xiàn)類似流密碼算法的特性。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。