簡(jiǎn)述Serpent加密算法

我們?cè)谥暗奈恼轮芯徒榻B過(guò),AES加密算法是在1997年全世界海選征集評(píng)選出來(lái)的,當(dāng)選的Rijndael算法,也就成為了現(xiàn)在的AES加密算法。那么我們今天來(lái)了解一下,當(dāng)時(shí)排名第二的Serpent加密算法。

Serpent加密算法簡(jiǎn)介

Serpent算法是是一個(gè)非常經(jīng)典的SPN式分組密碼體制,同時(shí)它的安全強(qiáng)度非常高。與Rijndael算法一樣,Serpent尚未有重大安全漏洞被發(fā)現(xiàn)。但與之相比,Serpent的運(yùn)算速度要比Rijndael慢上不少,這也是它落選的主要原因之一。

Serpent加密算法

Serpent加密算法的原理

Serpent算法有兩個(gè)版本,區(qū)別是使用SBOX不同,Serpent-0使用DES的SBOX,Serpent-1使用新的SBOX。而SBOX是算法的核心,是一種非線性的運(yùn)算,XOR/亂序/線性變換都是線性運(yùn)算,本身加密能力弱,主要用于增強(qiáng)雪崩效應(yīng)。

SERPENT使用的SBOX是4bit輸入4bit輸出的。Serpent算法設(shè)計(jì)了8個(gè)SBOX,加密時(shí)0輪用sbox0,1輪用sbox1,……,7輪用sbox7,然后8輪用sbox0,……,15輪用sbox7,依次類推。128bit的輸入拆分成32份,依次進(jìn)入sbox輸出4x32bit的數(shù)據(jù)。

128bit數(shù)據(jù)拆分成32個(gè)4bit數(shù)據(jù),并行進(jìn)行SBOX運(yùn)算的話,速度會(huì)大大受影響。硬件實(shí)現(xiàn)時(shí)候,為了提速,可以將每個(gè)SBOX實(shí)例化32個(gè)實(shí)例,然后一個(gè)單位時(shí)間就可以完成原來(lái)32個(gè)時(shí)間的工作量。

解密時(shí),SBOX使用的順序與加密相反,7 6 5 4 3 2 1 0 7 6…… 子密鑰使用的順序相反,線性變換與加密時(shí)互為反函數(shù)。

Serpent加密算法

Serpent在運(yùn)算時(shí),每個(gè)BLOCK的長(zhǎng)度是128bit,密鑰長(zhǎng)度 128/192/256bit可選。

在128bit數(shù)據(jù)輸入后,先進(jìn)行一次初始置換打亂順序,然后進(jìn)行32輪運(yùn)算后,進(jìn)行一次最后置換再打亂一次順序,輸出就是運(yùn)算結(jié)果了。

注意,前31輪的運(yùn)算使用同樣的規(guī)則,而最后一輪使用特殊的規(guī)則,這一點(diǎn)不像DES,DES的16輪運(yùn)算都是用同樣的規(guī)則。同DES一樣,初始置換和最后置換互為反函數(shù)。

初始置換的輸入為P(明文),輸出為B(0),每一輪的輸入為B(n),輸出為B(n+1),n為輪數(shù),0~31。最后置換的輸出為C(密文)。

Serpent加密算法

Serpent加密算法的優(yōu)缺點(diǎn)

正如上文所說(shuō),Serpent算法的優(yōu)點(diǎn)就是安全,它的安全性可以與如今廣泛使用的Rijndael(也就是現(xiàn)在的AES加密算法)不相上下。但缺點(diǎn)也十分明顯,就是其運(yùn)算速度較慢,盡管官方在不斷優(yōu)化,但還是和主流加密算法有一定的差距。

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