網(wǎng)絡(luò)安全攻防:密碼技術(shù)之公鑰密碼

計算機與網(wǎng)絡(luò)安全
公鑰密碼也稱非對稱密碼,即加密密鑰和解密密鑰不同,一個可被公開的密鑰被稱為公鑰,一個私人專用保管的密鑰被稱為私鑰。公鑰與私鑰在數(shù)學(xué)上是有緊密關(guān)系的,用公鑰加密的信息只能用對應(yīng)的私鑰解密,反之亦然。

2345截圖20200908083720.png

對稱密碼可以實現(xiàn)對任意明文的高效加密,通常用于通信會話的加密,但隨著對稱加密應(yīng)用越來越廣,會話密鑰的管理問題也隨之面臨挑戰(zhàn)。假設(shè)網(wǎng)絡(luò)中有n個實體需要兩兩通信,那么每個實體必須維護一把與其他任意一個實體之間的會話密鑰,總的會話密鑰數(shù)量為圖片,即達到O(n2)的量級,密鑰管理的復(fù)雜度明顯增加。另一方面,分組加密主要依賴于多輪復(fù)合的擴散和混淆運算,安全強度有待進一步增強。

公鑰密碼也稱非對稱密碼,即加密密鑰和解密密鑰不同,一個可被公開的密鑰被稱為公鑰,一個私人專用保管的密鑰被稱為私鑰。公鑰與私鑰在數(shù)學(xué)上是有緊密關(guān)系的,用公鑰加密的信息只能用對應(yīng)的私鑰解密,反之亦然。由于公鑰算法不需要聯(lián)機密鑰服務(wù)器,密鑰分配變得簡單。一個人可以在與許多人交往時使用相同的密鑰對,而不必與每個人分別使用不同的密鑰。只要私鑰是保密的,就可以隨意分發(fā)其公鑰,用戶可以與任意數(shù)目的人員共享一個密鑰對,而不必為每個人單獨設(shè)立一個密鑰,顯著降低了密鑰管理復(fù)雜度,簡化了密鑰管理操作,有效提高了密碼學(xué)的可用性。

公鑰加密是一種干擾信息的方法,使用該方法的雙方擁有一對密鑰,其中一個可以公開分享,而另一個只有預(yù)定的目標(biāo)接收方才知曉。任何人都可能使用私人的公開密鑰對信息進行加密。但是,只要預(yù)定接收方的解密密鑰被安全地保護起來,信息就無法被解密。一般而言,公鑰算法的設(shè)計依賴于經(jīng)典的數(shù)論難題,即將攻擊者在沒有私鑰的情況下,破解一個公鑰加密系統(tǒng),等效映射到求解數(shù)論難題。這樣,攻擊者若能在沒有私鑰的情況下破解公鑰加密,等效于其求解了公知的數(shù)論難題。這樣的模型假設(shè)也因此成為公鑰密碼安全的保障基石。

1976年,Whitfield Diffie和Martin Hellman共同發(fā)表了學(xué)術(shù)論文《New Direction in Cryptography》,創(chuàng)建了公鑰加密體制。公鑰加密是重大的創(chuàng)新,從根本上改變了加密和解密的過程,也成為40年來信息安全應(yīng)用領(lǐng)域的一項核心技術(shù)。2015年,Diffie和Hellman兩位密碼學(xué)家也因創(chuàng)立發(fā)明公鑰加密技術(shù)而獲得有著計算機領(lǐng)域諾貝爾美譽的圖靈獎。

1.Diffie-Hellman密鑰交換算法

下面以Alice和Bob為例介紹以Diffie和Hellman命名的DH密鑰交換原理。

(1)選定一個可公開的大質(zhì)數(shù)p和底數(shù)g。

(2)Alice和Bob分別選定一個私有的素數(shù)a和b。

圖1給出了Alice和Bob通過公開交換g、p、A、B,最終各自計算獲得共享密鑰K=gab的基本過程。DH密鑰協(xié)商的目的是讓Alice和Bob安全獲得共享密鑰,任何第三方實體即使截獲雙方通信數(shù)據(jù),也無法計算得到相同的密鑰。

2345截圖20200908083720.png

圖1 DH密鑰交換原理

下面再看一個簡單的實例,來說明Alice和Bob協(xié)商計算會話密鑰K的過程。

1)Alice與Bob協(xié)定使用p=23,g=5。

2)Alice選擇一個秘密整數(shù)a=6,計算A=gamodp并發(fā)送給Bob:A=56mod 23=8。

3)Bob選擇一個秘密整數(shù)b=15,計算B=gbmodp并發(fā)送給Alice:B=515mod 23=19。

4)Alice計算K=Bamodp,即196mod 23=2。

5)Bob計算K=Abmodp,即815mod 23=2。

DH是一個公鑰算法,應(yīng)用的數(shù)論難題是大數(shù)的離散對數(shù)求解難題,即已知g、a,計算A=ga是容易的,但反之,已知A和g,求解a是困難的。這樣,攻擊者即便截獲得到A和B,也無法計算得到a和b,因而也無法計算獲得K。

2.RSA公鑰算法

公開密鑰算法是在1976年由當(dāng)時在美國斯坦福大學(xué)的Diffie和Hellman兩人首先發(fā)明的,但是目前最流行的RSA算法則是1977年由MIT教授Ronald L.Rivest、Adi Shamir和Leonard M.Adleman共同發(fā)明的。RSA也是分別取自3名數(shù)學(xué)家人名的第一個字母。RSA算法依賴于大數(shù)因子分解難題,即給定兩個大素數(shù)p、q,計算它們的乘積n=pq是容易的,但反之,給定n,求解p和q是一個經(jīng)典的數(shù)論難題。

(1)密鑰生成

①選擇兩個大素數(shù):p和q。

②計算歐拉函數(shù):φ(n)=(p−1)(q−1)。

③選擇一個正整數(shù)e,使gcd(e,φ(n))=1,即e和φ(n)互為素數(shù)。

④根據(jù)de=1(modφ(n)),利用Euclid算法計算出d。

⑤公鑰即為K=<e,n>。

⑥私鑰即為S=<d,p,q>。

(2)公鑰加密

①記明文信息為m(二進制),將m分成等長數(shù)據(jù)塊m1,m2,…,mi,塊長s,其中2s≤n。

②加密:ci≡mi^e(modn)

③解密:mi≡ci^d(modn)

一開始,RSA選用的n長度達到512 bit時,以當(dāng)時的計算機運算能力,安全性已公認足夠強大。隨著并行計算水平的飛速發(fā)展以及量子計算等新型計算的出現(xiàn),RSA的安全強度也開始受到威脅。目前,RSA選用的公鑰長度已達到了4 096 bit。

相比于對稱密碼,公鑰密碼具有實現(xiàn)難度大、安全強度大、計算耗費大等特點。因此,在日常應(yīng)用時,RSA算法和AES算法混合使用,通常被稱作數(shù)字信封技術(shù),如圖2所示。

2345截圖20200908083720.png

圖2數(shù)字信封技術(shù)

雖然安全強度大,但由于RSA公鑰加密需耗費較大資源,因此通常會話加密采用的是AES分組密碼,而AES會話密鑰則可通過RSA公鑰加密,AES密鑰的加密結(jié)果隨會話密文一起發(fā)送給接收方,這樣的技術(shù)就叫數(shù)字信封,可以確保僅有持有RSA私鑰的合法的接收方才能解開AES密鑰,從而獲得最終的會話明文。

THEEND

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

更多
暫無評論