密碼學(xué)初探|對稱密碼算法

高樹
luomo_i
分組密碼是指將需要進(jìn)行加密的明文分割成指定長度的分組,使用密鑰數(shù)據(jù)對每一個明文分組進(jìn)行進(jìn)行加密。

密碼學(xué)算法|對稱密碼算法

2345截圖20211028093243.png

一、什么是對稱算法

不知道大家有沒有看過福爾摩斯探案中的《跳舞的人》,在這個故事中,斯蘭尼使用跳舞的小人替代字母表中的字符,實(shí)現(xiàn)消息的秘密傳遞。

這種方式其實(shí)屬于古典密碼學(xué)中的代換,只有對方同樣了解代換的規(guī)則,才能解出隱含的信息,同時也避免了不了解規(guī)則的人獲取其中的信息,是一種簡單的對稱算法。

而現(xiàn)代密碼學(xué)中的對稱算法,也是采用了類似的流程實(shí)現(xiàn)數(shù)據(jù)的保密:通信雙方alice和bob約定一個字符串作為密鑰,Alice使用密鑰,通過數(shù)學(xué)運(yùn)算,將明文轉(zhuǎn)換為密文交給bob,而bob使用相同的密鑰和數(shù)學(xué)運(yùn)算過程,獲取明文(注1)。

在使用對稱算法的過程中,alice發(fā)送的明文長度是不定的,但是雙方約定的密鑰長度是定長,如何使用定長的密鑰對不定長的明文進(jìn)行加密呢?

通常有兩種方法:將密鑰轉(zhuǎn)換為與明文相同長度-這種方法稱為序列密碼(也稱為流密碼),或者將明文進(jìn)行切割,切割的長度等于密鑰的長度-這種方式稱為分組密碼(也稱為塊密碼)

2345截圖20211028093243.png

圖1序列密碼和分組密碼

二序列密碼

序列密碼單獨(dú)加密每個明文位,通過將密鑰序列中的每個位與每個明文位進(jìn)行異或操作實(shí)現(xiàn),解密過程也是如此。

從序列密碼的實(shí)現(xiàn)過程中可以發(fā)現(xiàn),其安全性取決于密鑰序列的安全性。

最理想的密鑰序列當(dāng)然是一次一密(OTP):每個密鑰序列要求完全隨機(jī);只能用于一個明文,不能重復(fù)使用;每次發(fā)送明文之前都要將密鑰序列安全的發(fā)給對方。

在現(xiàn)實(shí)應(yīng)用中,構(gòu)建完全符合OTP特征的密碼體系無疑是困難的(注2):

1)密鑰序列的長度完全等于明文長度,在明文長度足夠長的情況下,密鑰的產(chǎn)生是一個很困難的事情(宏思電子的高速隨機(jī)數(shù)源的速率也只有20Mbps)(注3);

2)能夠生成完全隨機(jī)的設(shè)備價(jià)格昂貴;

3)密鑰序列需要安全的進(jìn)行傳輸,而且每加密一次需要傳輸一次;

因此,在現(xiàn)代密碼學(xué)中,一般采用通過密鑰算法將固定長度的密鑰種子進(jìn)行分散,生成需求長度的密鑰序列。

2345截圖20211028093243.png

圖2序列密碼加密過程

當(dāng)前比較流行的序列密碼算法有:RC4和ZUC,ZUC算法也叫祖沖之算法,由我國學(xué)者自主設(shè)計(jì)的加密和完整性算法,已經(jīng)被國際組織3GPP推薦為4G無線通信的第三套國際加密和完整性標(biāo)準(zhǔn)的候選算法。

三、分組密碼

在現(xiàn)實(shí)生活中,分組密碼的使用場景要比序列密碼更加廣泛,在通常的互聯(lián)網(wǎng)應(yīng)用中,通常使用分組密碼進(jìn)行數(shù)據(jù)保護(hù)。

分組密碼是指將需要進(jìn)行加密的明文分割成指定長度的分組,使用密鑰數(shù)據(jù)對每一個明文分組進(jìn)行進(jìn)行加密。

當(dāng)前比較常用的分組密碼算法為DES/3DES、AES,國內(nèi)也提出了與之對標(biāo)的算法SM1和SM4(國密算法會在后續(xù)有專門的文章介紹)

1)DES/3DES算法

DES算法是1977年由IBM提供,最初發(fā)布時,DES算法的有效期只有10年,但是由于DES算法良好的安全性,其得到了廣泛的應(yīng)用,有效期被推遲到新世紀(jì)初,之后才由AES替代。

DES算法通過IP置換的方式,將64bits明文分為兩部分32bits L0和32bits R0,然后分別帶入到Festiel網(wǎng)絡(luò)中,經(jīng)過16輪操作,進(jìn)行IP逆置換,獲得最終的密文,計(jì)算過程可參考下圖

(注:此處僅是簡單描述DES算法工作原理,如需深入了解,可在網(wǎng)上查找相關(guān)資料,也可自行進(jìn)行算法實(shí)現(xiàn))。

2345截圖20211028093243.png

圖3 DES算法流程

在DES算法被公布不再安全的時候,人們提出了各種改進(jìn)方案,其中比較常用的方案就是三重DES(Triple DES),可以表示為:

2345截圖20211028093243.png

圖4 3DES算法

在這個方案中,如果k1=k2=k3,則可以執(zhí)行單重DES運(yùn)算。

由于DES算法早就過了有效期,當(dāng)前的機(jī)器性能也能以很小的代價(jià)獲取相應(yīng)的密鑰數(shù)據(jù),所以DES/3DES算法已經(jīng)不再安全,盡量不要使用該算法

2)AES算法

為了應(yīng)對DES算法存在的問題,1997年,美國NIST開始征集新的對稱密碼算法,最終于2001年發(fā)布了新的對稱密碼算法標(biāo)準(zhǔn)-AES

AES是一種基于伽羅瓦域的多輪轉(zhuǎn)換運(yùn)算,支持128bits,192bits和256bits長度的密鑰,分組長度為128bits,且在軟硬件實(shí)現(xiàn)上更加高效,計(jì)算流程如下:

2345截圖20211028093243.png

圖5 AES算法流程

從AES相關(guān)標(biāo)準(zhǔn)發(fā)布以來,眾多密碼領(lǐng)域的專家對AES進(jìn)行了廣泛研究,目前還沒有找到相對高效的攻擊方法。

最近幾年,AES已經(jīng)逐步取代DES,在多個領(lǐng)域使用

除了以上兩種比較常用的分組密碼算法外,還有PRESENT算法、RC6算法等,感興趣的朋友可以與筆者進(jìn)行交流或者在網(wǎng)絡(luò)上查找相關(guān)資源了解。

四、應(yīng)用

對稱算法主要應(yīng)用于數(shù)據(jù)的加密保護(hù),

如通信過程中安全信道數(shù)據(jù)的保護(hù),https網(wǎng)絡(luò)請求數(shù)據(jù),IM即時通訊聊天數(shù)據(jù),游戲交互數(shù)據(jù)保護(hù)等

如存儲介質(zhì)數(shù)據(jù)保護(hù):磁盤內(nèi)數(shù)據(jù)保護(hù),數(shù)據(jù)庫數(shù)據(jù)保護(hù)等

如智能終端數(shù)據(jù)保護(hù):智能卡內(nèi)數(shù)據(jù)保護(hù)等

五、問題

分組密碼中有一個要求,明文的長度要等于固定值(DES/3DES為64bits,AES為128bits),對于長度大于固定值得數(shù)據(jù),我們可以將其分割為對應(yīng)的長度,但明文數(shù)據(jù)長度不能夠整除時該如何處理剩余部分的數(shù)據(jù)呢?

或許我們需要有一種方法,使明文數(shù)據(jù)的長度滿足我們的需求

注:

1、在現(xiàn)代密碼學(xué)中,一般使用alice和bob分別指代通信雙方,Oscar指代惡意第三方

2、在量子密碼中,由于量子通信的特性,OTP或許會有新的發(fā)展

3、宏思電子為國內(nèi)主要的隨機(jī)數(shù)生成器廠商

THEEND

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

更多
暫無評論