探秘密碼學(xué):深入了解對(duì)稱加密與密鑰協(xié)商技術(shù)

加密的理論基礎(chǔ)是替代和換位。替代主要用于擾亂,使用不同的位、字符或字符分組來(lái)替換原來(lái)的位、字符或字符分組。換位主要用于擴(kuò)散,并不使用不同的文本來(lái)替換原來(lái)的文本,而是對(duì)原有的值進(jìn)行置換,即重新排列原來(lái)的位、字符或字符分組以隱藏其原有意義。

密碼,已經(jīng)成為當(dāng)代互聯(lián)網(wǎng)人每天使用頻率最高的東西,它在默默地守護(hù)著我們的信息安全。而人們對(duì)密碼卻始終未給予足夠重視,以至于經(jīng)常會(huì)出現(xiàn)“123456”這種弱密碼。你可能會(huì)覺(jué)得好笑,但這個(gè)密碼常年穩(wěn)居最常見(jiàn)的密碼排行榜榜首,有250萬(wàn)人在使用,在數(shù)據(jù)泄露方面的暴露次數(shù)超過(guò)2300萬(wàn)次,黑客只需不到一秒鐘就可以成功破解。

好在我們的社會(huì)中,總有那么一群人在不斷研究著密碼學(xué),保護(hù)著我們的信息安全、系統(tǒng)安全。密碼學(xué)歷史悠久,其首要目的是隱藏信息的涵義,并不是隱藏信息的存在。密碼學(xué)也促進(jìn)了計(jì)算機(jī)科學(xué),特別是在于電腦與網(wǎng)絡(luò)安全所使用的技術(shù),如訪問(wèn)控制與信息的機(jī)密性。密碼學(xué)已被應(yīng)用在日常生活:包括自動(dòng)柜員機(jī)的芯片卡、電腦使用者存取密碼、電子商務(wù)等等。

密碼學(xué)是一門浩瀚的學(xué)科,無(wú)數(shù)的學(xué)者和研究人員數(shù)十年鉆研往往也僅能取得非常微小的成績(jī)。下圖為筆者對(duì)密碼學(xué)框架的部分理解,足以見(jiàn)得密碼這門學(xué)科的博大精深。本文選取密碼學(xué)學(xué)科中的一小部分內(nèi)容進(jìn)行介紹和演示。

1.jpg

▲圖1 對(duì)密碼學(xué)學(xué)科框架的部分理解▲

對(duì)稱加密算法

加密的理論基礎(chǔ)是替代和換位。替代主要用于擾亂,使用不同的位、字符或字符分組來(lái)替換原來(lái)的位、字符或字符分組。換位主要用于擴(kuò)散,并不使用不同的文本來(lái)替換原來(lái)的文本,而是對(duì)原有的值進(jìn)行置換,即重新排列原來(lái)的位、字符或字符分組以隱藏其原有意義。

對(duì)稱加密是一種加密與解密采用相同密鑰的加密算法。其特點(diǎn)是速度快,效率高,所以被廣泛使用在很多加密協(xié)議的核心當(dāng)中,也是我們平時(shí)接觸得比較多的一種加密方式。

2.jpg

▲圖2 對(duì)稱加密算法加密解密過(guò)程▲

常見(jiàn)的對(duì)稱加密算法

常見(jiàn)的對(duì)稱加密算法主要有以下幾種:

數(shù)據(jù)加密標(biāo)準(zhǔn)(DES,Data Encryption Standard),使用64位密鑰,其中56位用于加密,8位用于奇偶校驗(yàn)。由于加密強(qiáng)度較弱,已不推薦使用;

三重DES,是DES的升級(jí)版。3DES并沒(méi)有直接使用“加密->加密->加密” 的方式,而是采用了“加密->解密->加密”的方式。這樣實(shí)現(xiàn)的好處主要是,當(dāng)三個(gè)密鑰均相同時(shí),前兩步加密解密結(jié)果相互抵消,整體結(jié)果相當(dāng)于僅實(shí)現(xiàn)了一次加密,因此可實(shí)現(xiàn)對(duì)普通DES加密算法的兼容。這也是為什么三重DES可以流行,而二重DES或者四重DES則消失了;

高級(jí)加密標(biāo)準(zhǔn)(AES,Advanced Encryption Standard),AES支持128、192和256位的密鑰,較于3DES速度更快、安全性更高;

國(guó)際數(shù)據(jù)加密算法(IDEA,International Data Encryption Algorithm),使用的密鑰長(zhǎng)度為128位;

Blowfish算法,密鑰長(zhǎng)度為32-448位。

密鑰分發(fā)

常見(jiàn)的密鑰分發(fā)方式

對(duì)稱加密需要雙方進(jìn)行加密通信前先協(xié)商分配好密鑰,一般來(lái)說(shuō)密鑰分發(fā)可以是以下幾種方式:

Alice選擇一個(gè)密鑰后以物理的方式傳遞給Bob;

第三方Cindy選擇密鑰后物理地傳遞給Alice和Bob;

如果Alice和Bob之前已經(jīng)使用過(guò)一個(gè)密鑰,則一方可以將新密鑰用舊密鑰加密后發(fā)送給另一方;

如果Alice和Bob與第三方Cindy之間已有加密連接,則Cindy可以在加密連接上將密鑰發(fā)送給Alice和Bob。

更便捷的密鑰分發(fā)方式

受對(duì)稱加密算法自身的特點(diǎn)影響,當(dāng)多用戶之間使用對(duì)稱加密算法進(jìn)行通信時(shí),密鑰數(shù)量成指數(shù)增長(zhǎng),對(duì)密鑰的分發(fā)和管理帶來(lái)巨大的挑戰(zhàn)。當(dāng)用戶數(shù)量為n,密鑰數(shù)量最多為n*(n-1)/2。比如有100個(gè)用戶,則最多需要4950個(gè)密鑰。

隨著技術(shù)的發(fā)展,對(duì)稱加密的密鑰分發(fā)也出現(xiàn)了一些新的解決方法,如非對(duì)稱加密算法,Diffie–Hellman算法等。采用這類算法使得對(duì)稱加密密鑰的協(xié)商與管理變得更簡(jiǎn)單和可靠。采用非對(duì)稱加密時(shí)n個(gè)用戶只需維護(hù)n個(gè)密鑰對(duì),大大減小了密鑰規(guī)模。

Diffie-Hellman算法(簡(jiǎn)稱DH算法)是Whitefield Diffie和Martin Hellman在1976年公布的一種秘鑰交換算法。它是一種建立秘鑰的方法,而不是加密方法?;谶@種秘鑰交換技術(shù):通信雙方在完全沒(méi)有對(duì)方任何預(yù)先信息的條件下,可以通過(guò)不安全信道協(xié)商一個(gè)密鑰。這個(gè)密鑰一般作為對(duì)稱加密的密鑰應(yīng)用在雙方后續(xù)數(shù)據(jù)傳輸?shù)募用苌稀?/p>

和非對(duì)稱加密算法的理論基礎(chǔ)一樣,DH算法也是基于一個(gè)數(shù)學(xué)難題,即計(jì)算離散對(duì)數(shù)的難度。具體來(lái)說(shuō),假設(shè)Alice需要與Bob需要協(xié)商一個(gè)秘鑰,是這樣一個(gè)過(guò)程:

3.jpg

▲圖3 DH算法密鑰協(xié)商過(guò)程▲

首先Alice與Bob共享一個(gè)素?cái)?shù)p以及p的原根g,當(dāng)然這里有2≤g≤p-12≤g≤p-1。這兩個(gè)數(shù)是可以不經(jīng)過(guò)加密地由一方發(fā)送到另一方,至于誰(shuí)發(fā)送給并不重要,其結(jié)果只要保證雙方都得知p和g即可。

然后Alice產(chǎn)生一個(gè)私有的隨機(jī)數(shù)A,滿足1≤A≤p-1,然后計(jì)算,將結(jié)果 通過(guò)公網(wǎng)發(fā)送給Bob。

Bob也產(chǎn)生一個(gè)私有的隨機(jī)數(shù)B,滿足1≤B≤p-1,計(jì)算 ,將結(jié)果 通過(guò)公網(wǎng)發(fā)送給Alice。

雙方計(jì)算密鑰。

Alice知道的信息有p,g,A,,,其中數(shù)字A是Alice私有的,只有她自己知道,別人不可能知道。p,g,A都是別人有可能知道的,是Bob發(fā)送給Alice的;

Bob知道的信息有p,g,B,,,其中數(shù)字B是Bob私有的,只有他自己知道,別人不可能知道。p,g,B是別人有可能知道的,是Alice發(fā)送給Bob的。

上面的過(guò)程中,Alice和Bob之間的秘鑰協(xié)商完成,密鑰具體計(jì)算方法如下:

Alice通過(guò)計(jì)算 得到秘鑰;

Bob通過(guò)計(jì)算 得到秘鑰。

通過(guò)計(jì)算可以得到,,即雙方協(xié)商結(jié)算出的密鑰相同,可以將該密鑰作為對(duì)稱加密密鑰使用:

111.png

由上證明過(guò)程可見(jiàn),Alice和Bob生成秘鑰時(shí),其實(shí)是進(jìn)行了相同的運(yùn)算過(guò)程,因此必然有。這也是雙方能夠進(jìn)行秘鑰協(xié)商的根本原因。

利用DIFFIE-HELLMAN算法協(xié)商密鑰實(shí)例

首先Alice與Bob共享一個(gè)素?cái)?shù)37以及原根6(37的原根:3,6,11,12,13,15,17,21,22,23,24,26,27,29,可采用圖4的方法生成)。

然后Alice產(chǎn)生一個(gè)私有的隨機(jī)數(shù)10,然后計(jì)算 222.png,將36發(fā)送給Bob;

Bob也產(chǎn)生一個(gè)私有的隨機(jī)數(shù)11,計(jì)算333.png ,將結(jié)果31發(fā)送給Alice。

雙方計(jì)算密鑰:

444.png

經(jīng)計(jì)算,Alice與Bob本次協(xié)商的密鑰為36。

原根計(jì)算方法python實(shí)現(xiàn)如下圖所示:

5.jpg

▲圖4 原根計(jì)算方法python實(shí)現(xiàn)▲

THEEND

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

更多
暫無(wú)評(píng)論