肖亚飞
摘要:在网络安全传输过程中,Diffie-Hellman密钥交互协议是一种具有隐私安全的算法,该算法可以在不安全的公共信道上实现通信双方协商一个共享密钥,该密钥可以对通信双方传输的数据进行加解密运算,从而保证数据的安全性。因此,该文设计并实现了一个以Diffie-Hellman协议为核心的密钥交互系统。该系统,主要设计与实现了以下几个部分:设置公共参数、随机数的产生、公开密钥计算、共享密钥生成。
关键词:Diffie-Hellman算法;密钥交互系统;加解密
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)03-0034-03
1 概述
科技迅速发展的今天,通过计算机网络和公开信道设施来传递信息,其信息的保密性越来越受到人们的重视,而对传输信息的安全性有了不同程度的要求,比如QQ聊天,同学之间发送邮件,这些都使用了数据加密。文献[1,2]描述了信息安全,为了实现在公共信道设施上进行安全数据传输信息,采用DES算法对信道上的数据进行加密运算,而且在每次通信或者在一定的时间内都建立一个新的通信密钥,可以避免密钥泄露防止黑客的攻击,这样可以确保数据的安全性。为了解决此类问题的发生,本文设计了一种以Diffie-Hellman协议为核心的密钥交互系统,从而保证公共信道传输数据的安全性。
迪菲-赫尔曼密钥交换是第一个比较实用的,它是在非安全信道中,创建共享密钥确保信道安全的一种方法。文献[3,4]概述了Diffie-Hellman密钥交换算法,该算法可以让通信双方在完全不知对方消息的情况下,通过创建一个共享密钥,从而使得在不安全信道中保护数据信息的安全性,它能在网络通信中为通信的参与者提供相应的身份认证,而且能够为参与者生成一个用来加密解密传递消息的临时会话密钥。
2 相关技术
在文献[5,6]中,公开密码体制是当今时代密码学最重要的发明之一,也是当今研究的主题。一般而言,将公开密码体制理解为保护信息传输过程数据安全性而产生的一种密码学(Cryptography)体制。而密钥的产生是成对出现的,即密钥对,它是根据公钥体系而建立的,而且每个密钥对都是由一个公钥和一个私钥组成的。而最早提出公开密钥算法是在1976年,是由美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)共同合作提出的,该算法也称作为非对称密钥算法,使用密钥对即专用密钥和公共密钥对数据进行加密运算。
Diffie-Hellman协议密钥交互算法是第一个非常实用的算法体系,它是在不安全的通信传输过程中建立共享密钥的一种方法,然而它却不具备加密的功能。但是,它所产生的密钥可用于对数据进行加解密运算,以至于可以确保信道传输中数据的隐私性。文献[7,8,9]中概括了DES算法是一种对称密码体制,又被称为美国数据加密标准。DES算法密钥长度是64位,但是第8位、16位、32位、48位、56位、64位是用作奇偶校验位使用的,这样就使得每个密钥都是奇数个一,而实际上加密过程中只有56位参与DES算法[10]。
3 Diffie-Hellman协议密钥交互系统的设计
3.1 设计思路
Diffie-Hellman密钥交互是依据数学上离散对数设计的一种算法。对其定义如下:任意素数p及其原根,若i是素数p的一个原根,那么数值是互不相同的以某种排列组合方式组成整数。
由上可知,Diffie-Hellman算法的描述如下:
1) 假设任意两个公开参数,素数p和整数g,而且g是p的一个原根。
2) 假设两个通信双方A(Alice)和B(Bob)希望获得通信密钥,那么通信方A选择私有密钥a
3) 通信方A利用计算密钥。类似地,B利用计算密钥,虽然这两个用户选择的随机数不同,但是计算结果却是相同的,这就相当于双方已经得到了一个共同的共享密钥。具体的计算公式如下:
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是保密存放的,是私有密钥。攻击者可以获得的参数只有p、g、X和Y四个。 若攻击者想要获得密钥,就必须使用离散对数来确定。例如,要获取B的秘有密钥,攻击者就必须先计算,再使用与B采用同样方法计算私有密钥K,计算量复杂繁琐,不利于获得,从而保证了数据信息的安全性。具体的密钥交换流程如图1所示。
通过密钥交换的流程可知,Diffie-Hellman密钥交换算法需要实现几个模块功能,如公共参数模块,公开密钥模块等。因此,本文设计的Diffie-Hellman密钥交换系统能够更高效的完成,并且实现信道上安全传输数据信息的功能。
3.2 随机数产生模块
Alice随机选取私有密钥数据a
3.3 公开密钥模块
大素数p和底数g已经得到,接下来通信双方要分别计算各自的公开密钥数据X=(g^a ) mod p和Y=(g^b) mod p,计算好之后,参与者开始把自己计算得到的密钥传输给对方,也即交换数据。
3.4 共享密钥生成模块
通信双方得到来自对方的公开密钥,再根据自己的私有密钥a和b以及大素数p分别计算K= (Y^a) mod p和K = (X^b) mod p,而计算得到了一个相同的共享密钥,也即完成了Diffie-Hellman密钥交换算法的设计。
4 基于Diffie-Hellman协议密钥交互系统的实现
4.1 概要分析
本文为了实现Diffie-Hellman密钥交互系统的实现,需要实现公共参数的设置、产生保密随机数、通过离散对数计算公开密钥和生成共享密钥的功能。而其中最主要的部分就是实现通信双方公开密钥的计算和共享密钥的计算,在传输数据信息时,Diffie-Hellman算法通过公共信道时,通信双方交换信息,创建一个可以用于在公共信道上安全通信的共享密钥,这个共享数据为通信双方所知,但是各自都有自己的私有密钥,以此可以在不安全的信道上安全传输信息。
4.2 公共参数的设置
通过大数运算随机获取一个大数和原根,再根据Miller-Rabin算法进行对大数进行检测,判断是大素数。通信双方Alice和Bob随机选取保密数a和b。
首先,包括素数模p和底数g;
其次,点击产生随机素数,输入素数比特长度,在点击产生素数,点击接受即可产生大素数p;
最后,产生随机素数成功之后,再生成一个随机自然数作为底数的g,接受即可,这样就完成了公共参数的设置。
4.3 随机数模块的实现
产生保密的随机数,它包括用户Alice和用户Bob的设置:
首先,点击Alice用户的保密随机数,让其产生随机数a,在点击接受即可;
其次,是对Bob的保密随机数b的设置,和Alice的设置是相同的;
最后,产生的随机数也就是通信双方的私有密钥,而对于私有密钥,在通信过程中是不被其他人知道的。因此,人们在设置私有密钥时,展现在眼前的是看不到具体的数字的,而是使用了特别的符号来代替,当然作为自己的私有密钥,自己是保密存放的,相对于其他的通信方是不知道。
4.4 公开密钥的计算
根据离散对数的相关知识,通信方Alice和Bob分别计算公开密钥X=(g^a )mod p和Y=(g^b) mod p,得到X和Y。对于这个公开密钥是对外开放的,也即是公开密钥。
4.5 共享密钥的生成
有上一步知道了公开密钥,而相对于对方还不知道这个公开的密钥。所以在根据离散对数计算而得到的密钥,要使Alice和Bob交换数据X和Y之后,再根据K= (Y^a) mod p和K = (X^b) mod p计算共享密钥,最终可得到一个相同的密钥,该共享密钥可以在传输过程中加密数据信息,确保数据的隐私性。
综上所述,通过实现以上各个功能模块,通信双方获得共享密钥,该密钥用来作对称密钥使用,从而对通信双方的数据加密,使双方可以在不安全信道上完成通信内容。最终实现了Diffie-Hellman协议密钥交互系统的功能,完整的示例如图2所示。
最后,实现Diffie-Hellman协议密钥交互系统相的关代码如图3所示。
5 总结
本文设计与实现了Diffie-Hellman协议密钥交互系统,该系统可以在不安全的公共信道上实现通信,通信方可以用共享密钥对传输的消息进行加密和解密。密钥交互是安全领域的一个很重要的算法。因此,本文设计并实现了一个以Diffie-Hellman协议为核心的密钥交互系统。而在文中主要实现了公共参数的设置、随机数产生、公开密钥如何计算以及共享密钥生成等几个部分。
参考文献:
[1] 杨明,胥光辉,齐望东. 密码编码学与网络安全-原理与实践[M].北京:電子工业出版社,2001:85.
[2] 卢开澄. 计算机码学-计算机网络中的数据保密与安全[M].北京:清华大学出版社,2003:370-374.
[3] 肖宁. 基于Diffie-Hellman的密钥交换协议[J]. 中国科技博览, 2010(34):76-76.
[4] 冯超, 张权, 唐朝京. 计算可靠的Diffie-Hellman密钥交换协议自动证明[J]. 通信学报, 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] 李尚恩. 动态模拟方式详解DES轮密钥生成[J]. 智能计算机与应用, 2013(6).