淺談對稱加密中的流加密

百家號
聊聊密碼學(xué)
同步流密碼一般采用偽隨機(jī)數(shù)生成算法生成隨機(jī)數(shù)列作為密鑰組成部分。顯然,密鑰的隨機(jī)性越強(qiáng),明文中的統(tǒng)計特征被覆蓋得更好,加密的強(qiáng)度也就越高。

360截圖16240201557844.png

被加密的原文需要分成組,每組長度與密鑰長度相同,再分別加密。實(shí)際上,對稱加密里還有一種類型算法叫做流加密。所謂流加密,就是使用一個與原文同樣長度的密鑰,與原文數(shù)據(jù)按位進(jìn)行異或操作,得到的結(jié)果就是密文。解密過程和加密類似,就是用同樣的密鑰,對密文在進(jìn)行按位異或,得到明文。這和異或運(yùn)算的原理有關(guān),假設(shè)P是原文,K是密鑰,E是密文,⊕代表異或運(yùn)算,則有如下加密算式:

E=P⊕K

根據(jù)異或運(yùn)算原理,相同的數(shù)異或結(jié)果為0,任何數(shù)與0異或得到的是它本身,故可推導(dǎo)如下解密算式:

E⊕K=P⊕K⊕K

=P⊕0

=P

可以這么理解,流加密就是給原文數(shù)據(jù)的每一位依次戴個帽子,把原數(shù)據(jù)隱藏起來,解密就是摘掉帽子,把原數(shù)據(jù)露出來。因此它的優(yōu)點(diǎn)就是簡單快捷??吹竭@里估計你也意識到了,既然加解密方法這么簡單,那么流加密的重點(diǎn)應(yīng)該就在密鑰上吧?事實(shí)確實(shí)如此,比如,我們以A、B為明文,使用同樣的密鑰K,進(jìn)行流加密得到加密結(jié)果E(A)和E(B),則根據(jù)異或運(yùn)算特點(diǎn)可以做出如下算式:

E(A)⊕E(B)⊕B=(A⊕K)⊕(B⊕K)⊕B

=A⊕B⊕(K⊕K)⊕B

=A⊕B⊕0⊕B

=A⊕B⊕B

=A⊕0

=A

可以看出,只要拿到兩個密文和一個明文,就可以計算出另一個明文。實(shí)際中,密文是比較容易拿到的,而攻擊者也完全可以自己提交一個明文送給系統(tǒng)加密。即在密鑰相同的情況下,明文是很容易被計算出來的。因此流加密的安全性來源于其密鑰的安全性。實(shí)際上,信息論的祖師爺香農(nóng)早在1948年就在理論上證明了如果流加密的密鑰要不小于與被加密原文長度,每加密的密鑰做到一次一密。這樣的加密就實(shí)現(xiàn)了“完善保密性”,也就是“絕對安全”。當(dāng)然,目前這種“絕對安全”只能無限趨同,不可能真正做到。

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

同步流密碼一般采用偽隨機(jī)數(shù)生成算法生成隨機(jī)數(shù)列作為密鑰組成部分。顯然,密鑰的隨機(jī)性越強(qiáng),明文中的統(tǒng)計特征被覆蓋得更好,加密的強(qiáng)度也就越高。在現(xiàn)實(shí)中經(jīng)常使用的一種方法是用線性反饋移位寄存器(LFSR)來生成偽隨機(jī)序列。線性反饋移位寄存器是一種電路,它是許多密鑰流生成器的基本部件;非常適合硬件的實(shí)現(xiàn);可以產(chǎn)生大周期序列;可以產(chǎn)生具有良好統(tǒng)計性質(zhì)的序列;易于利用代數(shù)方法對其進(jìn)行分析。

除了線性反饋移位寄存器外,還有一種基于較短的一串給定密鑰,派生出無限長(實(shí)際上達(dá)到原文長度即可)的偽隨機(jī)密碼流的流加密方法。具有代表性的是就RC4(Rivest Cipher 4)算法。RC4采用一個256字節(jié)的狀態(tài)向量S,256字節(jié)的暫時向量T,和用戶自定義的密鑰輸入構(gòu)成。通過自定義的密鑰生成暫時向量之后,狀態(tài)向量S與暫時向量T通過一系列的置換算法產(chǎn)生可用于加密的偽隨機(jī)密鑰流,參與加密。

流加密最重要的就是密鑰,但容易出問題的也是密鑰。

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

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

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

THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論