肖亞飛
摘要:在網(wǎng)絡(luò)安全傳輸過(guò)程中,Diffie-Hellman密鑰交互協(xié)議是一種具有隱私安全的算法,該算法可以在不安全的公共信道上實(shí)現(xiàn)通信雙方協(xié)商一個(gè)共享密鑰,該密鑰可以對(duì)通信雙方傳輸?shù)臄?shù)據(jù)進(jìn)行加解密運(yùn)算,從而保證數(shù)據(jù)的安全性。因此,該文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)以Diffie-Hellman協(xié)議為核心的密鑰交互系統(tǒng)。該系統(tǒng),主要設(shè)計(jì)與實(shí)現(xiàn)了以下幾個(gè)部分:設(shè)置公共參數(shù)、隨機(jī)數(shù)的產(chǎn)生、公開(kāi)密鑰計(jì)算、共享密鑰生成。
關(guān)鍵詞:Diffie-Hellman算法;密鑰交互系統(tǒng);加解密
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)03-0034-03
1 概述
科技迅速發(fā)展的今天,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)和公開(kāi)信道設(shè)施來(lái)傳遞信息,其信息的保密性越來(lái)越受到人們的重視,而對(duì)傳輸信息的安全性有了不同程度的要求,比如QQ聊天,同學(xué)之間發(fā)送郵件,這些都使用了數(shù)據(jù)加密。文獻(xiàn)[1,2]描述了信息安全,為了實(shí)現(xiàn)在公共信道設(shè)施上進(jìn)行安全數(shù)據(jù)傳輸信息,采用DES算法對(duì)信道上的數(shù)據(jù)進(jìn)行加密運(yùn)算,而且在每次通信或者在一定的時(shí)間內(nèi)都建立一個(gè)新的通信密鑰,可以避免密鑰泄露防止黑客的攻擊,這樣可以確保數(shù)據(jù)的安全性。為了解決此類問(wèn)題的發(fā)生,本文設(shè)計(jì)了一種以Diffie-Hellman協(xié)議為核心的密鑰交互系統(tǒng),從而保證公共信道傳輸數(shù)據(jù)的安全性。
迪菲-赫爾曼密鑰交換是第一個(gè)比較實(shí)用的,它是在非安全信道中,創(chuàng)建共享密鑰確保信道安全的一種方法。文獻(xiàn)[3,4]概述了Diffie-Hellman密鑰交換算法,該算法可以讓通信雙方在完全不知對(duì)方消息的情況下,通過(guò)創(chuàng)建一個(gè)共享密鑰,從而使得在不安全信道中保護(hù)數(shù)據(jù)信息的安全性,它能在網(wǎng)絡(luò)通信中為通信的參與者提供相應(yīng)的身份認(rèn)證,而且能夠?yàn)閰⑴c者生成一個(gè)用來(lái)加密解密傳遞消息的臨時(shí)會(huì)話密鑰。
2 相關(guān)技術(shù)
在文獻(xiàn)[5,6]中,公開(kāi)密碼體制是當(dāng)今時(shí)代密碼學(xué)最重要的發(fā)明之一,也是當(dāng)今研究的主題。一般而言,將公開(kāi)密碼體制理解為保護(hù)信息傳輸過(guò)程數(shù)據(jù)安全性而產(chǎn)生的一種密碼學(xué)(Cryptography)體制。而密鑰的產(chǎn)生是成對(duì)出現(xiàn)的,即密鑰對(duì),它是根據(jù)公鑰體系而建立的,而且每個(gè)密鑰對(duì)都是由一個(gè)公鑰和一個(gè)私鑰組成的。而最早提出公開(kāi)密鑰算法是在1976年,是由美國(guó)斯坦福大學(xué)的迪菲(Diffie)和赫爾曼(Hellman)共同合作提出的,該算法也稱作為非對(duì)稱密鑰算法,使用密鑰對(duì)即專用密鑰和公共密鑰對(duì)數(shù)據(jù)進(jìn)行加密運(yùn)算。
Diffie-Hellman協(xié)議密鑰交互算法是第一個(gè)非常實(shí)用的算法體系,它是在不安全的通信傳輸過(guò)程中建立共享密鑰的一種方法,然而它卻不具備加密的功能。但是,它所產(chǎn)生的密鑰可用于對(duì)數(shù)據(jù)進(jìn)行加解密運(yùn)算,以至于可以確保信道傳輸中數(shù)據(jù)的隱私性。文獻(xiàn)[7,8,9]中概括了DES算法是一種對(duì)稱密碼體制,又被稱為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)。DES算法密鑰長(zhǎng)度是64位,但是第8位、16位、32位、48位、56位、64位是用作奇偶校驗(yàn)位使用的,這樣就使得每個(gè)密鑰都是奇數(shù)個(gè)一,而實(shí)際上加密過(guò)程中只有56位參與DES算法[10]。
3 Diffie-Hellman協(xié)議密鑰交互系統(tǒng)的設(shè)計(jì)
3.1 設(shè)計(jì)思路
Diffie-Hellman密鑰交互是依據(jù)數(shù)學(xué)上離散對(duì)數(shù)設(shè)計(jì)的一種算法。對(duì)其定義如下:任意素?cái)?shù)p及其原根,若i是素?cái)?shù)p的一個(gè)原根,那么數(shù)值是互不相同的以某種排列組合方式組成整數(shù)。
由上可知,Diffie-Hellman算法的描述如下:
1) 假設(shè)任意兩個(gè)公開(kāi)參數(shù),素?cái)?shù)p和整數(shù)g,而且g是p的一個(gè)原根。
2) 假設(shè)兩個(gè)通信雙方A(Alice)和B(Bob)希望獲得通信密鑰,那么通信方A選擇私有密鑰a
3) 通信方A利用計(jì)算密鑰。類似地,B利用計(jì)算密鑰,雖然這兩個(gè)用戶選擇的隨機(jī)數(shù)不同,但是計(jì)算結(jié)果卻是相同的,這就相當(dāng)于雙方已經(jīng)得到了一個(gè)共同的共享密鑰。具體的計(jì)算公式如下:
K = (Y^a) mod p
= (g ^b mod p)^a mod p
= (g ^b)^a mod p
= g ^a^b mod p
= (g ^a)^b mod p
= (g^a mod p)^b mod p
= (X^b) mod p
4) a和b是保密存放的,是私有密鑰。攻擊者可以獲得的參數(shù)只有p、g、X和Y四個(gè)。 若攻擊者想要獲得密鑰,就必須使用離散對(duì)數(shù)來(lái)確定。例如,要獲取B的秘有密鑰,攻擊者就必須先計(jì)算,再使用與B采用同樣方法計(jì)算私有密鑰K,計(jì)算量復(fù)雜繁瑣,不利于獲得,從而保證了數(shù)據(jù)信息的安全性。具體的密鑰交換流程如圖1所示。
通過(guò)密鑰交換的流程可知,Diffie-Hellman密鑰交換算法需要實(shí)現(xiàn)幾個(gè)模塊功能,如公共參數(shù)模塊,公開(kāi)密鑰模塊等。因此,本文設(shè)計(jì)的Diffie-Hellman密鑰交換系統(tǒng)能夠更高效的完成,并且實(shí)現(xiàn)信道上安全傳輸數(shù)據(jù)信息的功能。
3.2 隨機(jī)數(shù)產(chǎn)生模塊
Alice隨機(jī)選取私有密鑰數(shù)據(jù)a
3.3 公開(kāi)密鑰模塊
大素?cái)?shù)p和底數(shù)g已經(jīng)得到,接下來(lái)通信雙方要分別計(jì)算各自的公開(kāi)密鑰數(shù)據(jù)X=(g^a ) mod p和Y=(g^b) mod p,計(jì)算好之后,參與者開(kāi)始把自己計(jì)算得到的密鑰傳輸給對(duì)方,也即交換數(shù)據(jù)。
3.4 共享密鑰生成模塊
通信雙方得到來(lái)自對(duì)方的公開(kāi)密鑰,再根據(jù)自己的私有密鑰a和b以及大素?cái)?shù)p分別計(jì)算K= (Y^a) mod p和K = (X^b) mod p,而計(jì)算得到了一個(gè)相同的共享密鑰,也即完成了Diffie-Hellman密鑰交換算法的設(shè)計(jì)。
4 基于Diffie-Hellman協(xié)議密鑰交互系統(tǒng)的實(shí)現(xiàn)
4.1 概要分析
本文為了實(shí)現(xiàn)Diffie-Hellman密鑰交互系統(tǒng)的實(shí)現(xiàn),需要實(shí)現(xiàn)公共參數(shù)的設(shè)置、產(chǎn)生保密隨機(jī)數(shù)、通過(guò)離散對(duì)數(shù)計(jì)算公開(kāi)密鑰和生成共享密鑰的功能。而其中最主要的部分就是實(shí)現(xiàn)通信雙方公開(kāi)密鑰的計(jì)算和共享密鑰的計(jì)算,在傳輸數(shù)據(jù)信息時(shí),Diffie-Hellman算法通過(guò)公共信道時(shí),通信雙方交換信息,創(chuàng)建一個(gè)可以用于在公共信道上安全通信的共享密鑰,這個(gè)共享數(shù)據(jù)為通信雙方所知,但是各自都有自己的私有密鑰,以此可以在不安全的信道上安全傳輸信息。
4.2 公共參數(shù)的設(shè)置
通過(guò)大數(shù)運(yùn)算隨機(jī)獲取一個(gè)大數(shù)和原根,再根據(jù)Miller-Rabin算法進(jìn)行對(duì)大數(shù)進(jìn)行檢測(cè),判斷是大素?cái)?shù)。通信雙方Alice和Bob隨機(jī)選取保密數(shù)a和b。
首先,包括素?cái)?shù)模p和底數(shù)g;
其次,點(diǎn)擊產(chǎn)生隨機(jī)素?cái)?shù),輸入素?cái)?shù)比特長(zhǎng)度,在點(diǎn)擊產(chǎn)生素?cái)?shù),點(diǎn)擊接受即可產(chǎn)生大素?cái)?shù)p;
最后,產(chǎn)生隨機(jī)素?cái)?shù)成功之后,再生成一個(gè)隨機(jī)自然數(shù)作為底數(shù)的g,接受即可,這樣就完成了公共參數(shù)的設(shè)置。
4.3 隨機(jī)數(shù)模塊的實(shí)現(xiàn)
產(chǎn)生保密的隨機(jī)數(shù),它包括用戶Alice和用戶Bob的設(shè)置:
首先,點(diǎn)擊Alice用戶的保密隨機(jī)數(shù),讓其產(chǎn)生隨機(jī)數(shù)a,在點(diǎn)擊接受即可;
其次,是對(duì)Bob的保密隨機(jī)數(shù)b的設(shè)置,和Alice的設(shè)置是相同的;
最后,產(chǎn)生的隨機(jī)數(shù)也就是通信雙方的私有密鑰,而對(duì)于私有密鑰,在通信過(guò)程中是不被其他人知道的。因此,人們?cè)谠O(shè)置私有密鑰時(shí),展現(xiàn)在眼前的是看不到具體的數(shù)字的,而是使用了特別的符號(hào)來(lái)代替,當(dāng)然作為自己的私有密鑰,自己是保密存放的,相對(duì)于其他的通信方是不知道。
4.4 公開(kāi)密鑰的計(jì)算
根據(jù)離散對(duì)數(shù)的相關(guān)知識(shí),通信方Alice和Bob分別計(jì)算公開(kāi)密鑰X=(g^a )mod p和Y=(g^b) mod p,得到X和Y。對(duì)于這個(gè)公開(kāi)密鑰是對(duì)外開(kāi)放的,也即是公開(kāi)密鑰。
4.5 共享密鑰的生成
有上一步知道了公開(kāi)密鑰,而相對(duì)于對(duì)方還不知道這個(gè)公開(kāi)的密鑰。所以在根據(jù)離散對(duì)數(shù)計(jì)算而得到的密鑰,要使Alice和Bob交換數(shù)據(jù)X和Y之后,再根據(jù)K= (Y^a) mod p和K = (X^b) mod p計(jì)算共享密鑰,最終可得到一個(gè)相同的密鑰,該共享密鑰可以在傳輸過(guò)程中加密數(shù)據(jù)信息,確保數(shù)據(jù)的隱私性。
綜上所述,通過(guò)實(shí)現(xiàn)以上各個(gè)功能模塊,通信雙方獲得共享密鑰,該密鑰用來(lái)作對(duì)稱密鑰使用,從而對(duì)通信雙方的數(shù)據(jù)加密,使雙方可以在不安全信道上完成通信內(nèi)容。最終實(shí)現(xiàn)了Diffie-Hellman協(xié)議密鑰交互系統(tǒng)的功能,完整的示例如圖2所示。
最后,實(shí)現(xiàn)Diffie-Hellman協(xié)議密鑰交互系統(tǒng)相的關(guān)代碼如圖3所示。
5 總結(jié)
本文設(shè)計(jì)與實(shí)現(xiàn)了Diffie-Hellman協(xié)議密鑰交互系統(tǒng),該系統(tǒng)可以在不安全的公共信道上實(shí)現(xiàn)通信,通信方可以用共享密鑰對(duì)傳輸?shù)南⑦M(jìn)行加密和解密。密鑰交互是安全領(lǐng)域的一個(gè)很重要的算法。因此,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)以Diffie-Hellman協(xié)議為核心的密鑰交互系統(tǒng)。而在文中主要實(shí)現(xiàn)了公共參數(shù)的設(shè)置、隨機(jī)數(shù)產(chǎn)生、公開(kāi)密鑰如何計(jì)算以及共享密鑰生成等幾個(gè)部分。
參考文獻(xiàn):
[1] 楊明,胥光輝,齊望東. 密碼編碼學(xué)與網(wǎng)絡(luò)安全-原理與實(shí)踐[M].北京:電子工業(yè)出版社,2001:85.
[2] 盧開(kāi)澄. 計(jì)算機(jī)碼學(xué)-計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)保密與安全[M].北京:清華大學(xué)出版社,2003:370-374.
[3] 肖寧. 基于Diffie-Hellman的密鑰交換協(xié)議[J]. 中國(guó)科技博覽, 2010(34):76-76.
[4] 馮超, 張權(quán), 唐朝京. 計(jì)算可靠的Diffie-Hellman密鑰交換協(xié)議自動(dòng)證明[J]. 通信學(xué)報(bào), 2011, 32(10):118-126.
[5] Liu K, Qing S, Meng Y. An improved way on Kerberos protocol Based on public-key algorithms[J]. Journal of Software, 2001.
[6] Jia K, Chen X, Xu G. The improved Public Key Encryption Algorithm of Kerberos Protocol Based on Braid Groups[C]//the 4th international conference on wireless communications, networking and mobile computing. 2008:1 - 4.
[7] Chueng T P, Yusoff Z M, Sha'Ameri A Z. Implementation of pipelined data encryption standard (DES) using Altera CPLD[J]. 1109/tencon, 2000, 3:17 - 21.
[8] Poornima P V, Amrutha V. Security Enhanced Communication Scheme with Error Correction Capability and Efficient Channel Utilization[J]. International Journal of Computer Science & Information Technology, 2014.
[9] Sun H M, Wu M E, Ting W C, et al. Dual RSA and Its Security Analysis[J]. Information Theory IEEE Transactions on, 2007, 53(8):2922-2933.
[10] 李尚恩. 動(dòng)態(tài)模擬方式詳解DES輪密鑰生成[J]. 智能計(jì)算機(jī)與應(yīng)用, 2013(6).