基于Diffie—Hellman算法的VPN技术实现和网络影响分析

2014-11-15 20:05李清平孟祥芳黄莉平
软件工程 2014年11期

李清平 孟祥芳 黄莉平

摘 要:Diffie-Hellman算法通过密钥交换的方式为企业VPN网络的信息传输提供数据机密性,其有效性依赖于计算离散对数的难度。在描述算法过程的基础上,利用Visual C++语言编程并在Windows XP环境中编译。通过一个具体的企业VPN网络部署和配置,实现了企业内网对等体之间通过VPN隧道的相互通信和对Internet资源的访问,分析了由于加载VPN数据包而对网络性能产生的影响,主要体现在网络吞吐量和网络延迟的变化上。因此提高VPN网络的应用性能和数据传输的质量是今后研究的主要方向。

关键词:Diffie-Hellman算法;VPN技术;网络性能;网络吞吐量;网络延迟

中图分类号:TP391 文献标识码:A

1 引言(Introduction)

Diffie-Hellman算法,简称DH算法,由W.Diffie和M.E.Hellman在1976年公布的一种密钥一致性算法,该算法是一种建立密钥的方法,并非加密方法,但其产生的密钥可用于加密、密钥管理或任何其它的加密方式,这种密钥交换技术的目的在于使两个用户间能安全地交换密钥(KEY)以便用于今后的报文加密[1]。DH密钥交换算法对公开密钥密码编码学产生了深远的影响。

DH算法是一种确保共享KEY安全穿越网络的方法。Internet是一个公共的网络,企业通过Internet来连接远程站点和传输数据,容易造成内部网络的安全威胁。VPN(Virtual Private Network,虚拟专用网络)在公用网络上建立企业网络,通过提供机密性和安全性来保障企业内网数据的安全传输,具有成本低,易于使用的特点。数据机密性包括对称式加密DES、3DES、AES和非对称式加密RSA,这些加密方法都可以通过DH密钥交换来为对等体生成所需的密钥[2-4]。

2 Diffie-Hellman算法描述(Diffie-Hellman

algorithm description)

离散对数:定义素数p的原始根(Primitive Root)是能生成1-(p-1)之间所有数的一个数,设a为p的原始根,则:

a mod p,a2 mod p,…,ap-1 mod p是各不相同的整数,且以某种排列方式组成了从1到p-1的所有整数。对于任意数b及素数p的原始根a,可以找到一个唯一的指数i,满足:

b=ai mod p,其中0≤i≤p-1,那么指数i称为b的以a为基数的模p的离散对数。

Diffie-Hellman算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数p和它的一个原根a后,对于给定的b,要计算出i被认为是很困难的,而给定i计算b却相对容易[5-7]。

假设网络上有两个用户A和B,彼此之间协商共同的密码,算法过程如图1所示。

图1 Diffie-Hellman算法过程示意图

Fig.1 Diagram of Diffie-hellman algorithm process

(1)A和B事先约好大素数p和它的原始根a;

(2)A随机产生一个数x,计算X=ax mod p,然后把X发给B;

(3)B随机产生一个数y,计算Y=ay mod p,然后把Y发给A;

(4)A计算k=Yx mod p;

(5)B计算k* =Xy mod p。

因为k=Yx mod p=(ay)x mod p=(ax)y mod p=Xy mod p;

k* =Xy mod p;

所以k=k* 。

不安全网络上的窃听者只能得到a、p、X、Y,除非能计算离散对数x和y,否则将无法得到密钥k,但对于大素数p,计算离散对数是十分困难的,因此k为用户A和B独立计算出的密钥。

3 Diffie-Hellman算法实现(Diffie-Hellman

algorithm implementation)

编程思路:输入一个素数和它的一个原始根,生成小于此素数的一个随机数,计算出用户的公钥,保存信息。然后再输入对方的公钥,计算出双方的会话密钥。

核心代码如图2所示,程序在Windows XP操作系统下,Visual C++ 2012环境中编译通过。

图2 Diffie-Hellman算法的C++编程核心代码

Fig.2 Core code of diffie-hellman algorithm by C++

4 网络部署和配置(Network deployment and

configuration)

4.1 网络部署和拓扑图

用户A所在的网络和用户B所在的网络分别接入Internet,各自通过公有地址访问Internet上的资源,同时出于通信安全和节省费用的考虑,需要建立彼此之间点到点的VPN隧道,其拓扑图如图3所示。

图3 企业网络VPN部署拓扑图

Fig.3 Topology of enterprise network VPN deployment

4.2 配置命令及解析

VPN使用数据机密性、数据完整性、认证等加密技术以及隧道技术来允许企业在Internet上建立安全的端到端私有网络。数据机密性包括DES、3DES、AES对称式加密算法和RSA非对称性式加密算法,两者都可以通过Diffie-Hellman密钥交换生成对等体双方的密钥[2,8]。数据完整性目前有两种常用的散列算法:HMAC-MD5和HMAC-SHA-1,HMAC-SHA-1算法更安全,但占用的资源也相对较多[2,9]。认证包含两种方法:预共享密钥(Pre-Shared Key,PSK)和RSA签名,预共享密钥比较容易配置,但扩展性不是很好[10,11]。现以用户A所在网络的路由器Enterprise Router 1(简称ER1)为例配置VPN并进行解析,用户B所在网络的路由器Enterprise Router 2可参考此配置,不再赘述。主要配置命令如下:endprint

// IKE(Internet Key Exchange Protocol,Internet 密钥交换协议)配置

ER1(config)#crypto isakmp policy 1 // 建立isakmp策略

ER1(config-isakmp)#hash md5 // 哈希采用md5验证

ER1(config-isakmp)#encryption 3des // 采用3des加密

ER1(config-isakmp)#authentication pre-share // 采用预共享密钥认证方式

ER1(config)#crypto isakmp key ﹡ address ※ // ﹡代表预共享密钥,※表示对等体的路由器IP地址

ER1(config)#crypto ipsec transform-set # ah-md5-hmac esp-des // 创建交换集,#为交换集名称,后面两项为加密传输算法

ER1(config)#crypto map §1 ipsec-isakmp // 创建加密图§,序号为1

ER1(config-crypto-map)#set transform-set # // 使用创建的交换集#

ER1(config-crypto-map)#set peer ※ // VPN隧道对端的IP地址※

ER1(config-crypto-map)#match address 101 // 创建访问控制列表ACL,确定受保护的感兴趣流。ACL的具体配置这里从略,需要说明的是VPN不能使用标准ACL,只能使用扩展ACL。

ER1(config)#interface serial 1/0

ER1(config-if)#crypto map § // 加密图§与接口绑定

4.3 外网服务器配置

为了验证企业内网用户访问Internet上的资源,在WWW Server服务器中制作一个简单的web网页index.html,域名为http://www.dhalgorithm.com,如图4所示,同时使用公有IP地址202.101.172.1在DNS Server中创建与域名的对应解析,如图5所示。

图4 在WWW Server服务器中制作的web网页

Fig.4 Web page making in WWW server

图5 在DNS Server中建立的域名解析

Fig.5 Domain name resolution making in DNS server

5 结果验证(Result validation)

企业内网用户A和用户B之间能相互ping通,彼此之间能通过VPN隧道进行信息交流,如图6所示。

图6 用户A ping 用户B的结果

Fig.6 Result of user A ping user B

企业内网用户A和用户B均能通过公有IP地址访问Internet上WWW Server中的web页面,如图7所示。

图7 用户访问Internet资源的结果

Fig.7 Result of the user accessing internet resource

6 网络影响分析(Network influence analysis)

当用户A和用户B建立通信时,双方执行IKE验证,协商加密方式,此时网络的吞吐量比较小且平稳,网络延迟降低。此后所有的数据流都将使用双方协商的加密机制进行加密,再封装于隧道包头内,用户A所在网络的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查并封装构造一个新的VPN数据包,然后将封装后的原数据包作为VPN数据包的负载发送到Internet。用户B所在网络的VPN网关对接收到的数据包进行检查并解封装,然后将还原后的原始数据包发送至目标终端B,在终端B看来,它收到的数据包就和从终端A直接发过来的一样。从终端B返回终端A的数据包处理过程与上述相同。由于VPN技术的加密与解密、封装和解封装,在此过程会产生新的VPN数据包,使得网络吞吐量加大,网络延迟也相应增加。之后数据包发送完毕,网络吞吐量和网络延迟也缓慢下降,分别如图8和图9所示。

图8 企业网络吞吐量情况

Fig.8 Enterprise network throughput

图9 企业网络的网络延迟情况

Fig.9 Enterprise network delay

7 结论(Conclusion)

VPN允许远程站点或企业分支机构使用Internet等公共互联网络的路由基础设施以安全的方式建立连接,具有节约成本、增强安全性、容易扩展、支持新兴应用等特点。Diffie-Hellman算法为VPN网络对等体双方提供加密和解密所需的密钥,以保证通信双方的数据机密性。VPN技术在企业内网中的配置较为复杂,另外由于隧道技术、数据机密性、完整性和认证等安全保障策略,导致网络吞吐量随着VPN数据包的生成而增大,网络延迟也相应增加,使得网络产生抖动,数据的传输质量也随之减低,因此提高VPN网络的应用性能是亟待解决的问题。

参考文献(References)

[1] Diffie W,Hellman M E.New Directions in Cryptography[J].

IEEE Transactions on Information Theory,1976,22(06):644-654.

[2] 崔北亮.CCNA认证指南(640-802)[M].北京:电子工业出版

社,2009:551-556.

[3] 余海冰,潘泽宏.Diffie-Hellman密钥交换技术综述[J].科技信

息,2007(10):51-52.

[4] 汪志达,叶 伟.Diffie-Hellman密钥交换的算法实现与应用研

究[J].计算机应用与软件,2008,25(05):260-261.

[5] 李必涛,等.一种能够抵抗主动攻击的改进Diffie-Hellman密

钥协商方案[J].中央民族大学学报(自然科学版),2008,17(04):

54-57.

[6] 阎军智,李凤华,马建峰.基于Diffie-Hellman算法的分层密钥

分配方案[J].电子学报,2011(01):119-123.

[7] 杨增福.基于Diffie-Hellman方法的密钥协商协议的设计与分

析[D].郑州:郑州大学,2012:3-14.

[8] 寇应展,等.基于IPSec的VPN实现技术研究[J].科学技术与工

程,2006,06(14):2171-2173.

[9] 陈旭.虚拟专用网VPN 在企业办公中的应用[J].计算机安全,

2007(09):59-61.

[10] 李绪亮.校园网的VPN方案设计[D].济南:山东大学,2011:

13-25.

[11] 董芳.虚拟专用网(VPN)的研究与实现[J].集宁师范学院学

报,2013,35(02):107-108;114.

作者简介:

李清平(1969-),男,本科,副教授.研究领域:计算机网络技

术教学与应用.

孟祥芳(1978-),女,本科,讲师.研究领域:高职教学管理.

黄莉平(1986-),女,硕士,软件设计师.研究领域:网站开发

和编程.endprint

// IKE(Internet Key Exchange Protocol,Internet 密钥交换协议)配置

ER1(config)#crypto isakmp policy 1 // 建立isakmp策略

ER1(config-isakmp)#hash md5 // 哈希采用md5验证

ER1(config-isakmp)#encryption 3des // 采用3des加密

ER1(config-isakmp)#authentication pre-share // 采用预共享密钥认证方式

ER1(config)#crypto isakmp key ﹡ address ※ // ﹡代表预共享密钥,※表示对等体的路由器IP地址

ER1(config)#crypto ipsec transform-set # ah-md5-hmac esp-des // 创建交换集,#为交换集名称,后面两项为加密传输算法

ER1(config)#crypto map §1 ipsec-isakmp // 创建加密图§,序号为1

ER1(config-crypto-map)#set transform-set # // 使用创建的交换集#

ER1(config-crypto-map)#set peer ※ // VPN隧道对端的IP地址※

ER1(config-crypto-map)#match address 101 // 创建访问控制列表ACL,确定受保护的感兴趣流。ACL的具体配置这里从略,需要说明的是VPN不能使用标准ACL,只能使用扩展ACL。

ER1(config)#interface serial 1/0

ER1(config-if)#crypto map § // 加密图§与接口绑定

4.3 外网服务器配置

为了验证企业内网用户访问Internet上的资源,在WWW Server服务器中制作一个简单的web网页index.html,域名为http://www.dhalgorithm.com,如图4所示,同时使用公有IP地址202.101.172.1在DNS Server中创建与域名的对应解析,如图5所示。

图4 在WWW Server服务器中制作的web网页

Fig.4 Web page making in WWW server

图5 在DNS Server中建立的域名解析

Fig.5 Domain name resolution making in DNS server

5 结果验证(Result validation)

企业内网用户A和用户B之间能相互ping通,彼此之间能通过VPN隧道进行信息交流,如图6所示。

图6 用户A ping 用户B的结果

Fig.6 Result of user A ping user B

企业内网用户A和用户B均能通过公有IP地址访问Internet上WWW Server中的web页面,如图7所示。

图7 用户访问Internet资源的结果

Fig.7 Result of the user accessing internet resource

6 网络影响分析(Network influence analysis)

当用户A和用户B建立通信时,双方执行IKE验证,协商加密方式,此时网络的吞吐量比较小且平稳,网络延迟降低。此后所有的数据流都将使用双方协商的加密机制进行加密,再封装于隧道包头内,用户A所在网络的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查并封装构造一个新的VPN数据包,然后将封装后的原数据包作为VPN数据包的负载发送到Internet。用户B所在网络的VPN网关对接收到的数据包进行检查并解封装,然后将还原后的原始数据包发送至目标终端B,在终端B看来,它收到的数据包就和从终端A直接发过来的一样。从终端B返回终端A的数据包处理过程与上述相同。由于VPN技术的加密与解密、封装和解封装,在此过程会产生新的VPN数据包,使得网络吞吐量加大,网络延迟也相应增加。之后数据包发送完毕,网络吞吐量和网络延迟也缓慢下降,分别如图8和图9所示。

图8 企业网络吞吐量情况

Fig.8 Enterprise network throughput

图9 企业网络的网络延迟情况

Fig.9 Enterprise network delay

7 结论(Conclusion)

VPN允许远程站点或企业分支机构使用Internet等公共互联网络的路由基础设施以安全的方式建立连接,具有节约成本、增强安全性、容易扩展、支持新兴应用等特点。Diffie-Hellman算法为VPN网络对等体双方提供加密和解密所需的密钥,以保证通信双方的数据机密性。VPN技术在企业内网中的配置较为复杂,另外由于隧道技术、数据机密性、完整性和认证等安全保障策略,导致网络吞吐量随着VPN数据包的生成而增大,网络延迟也相应增加,使得网络产生抖动,数据的传输质量也随之减低,因此提高VPN网络的应用性能是亟待解决的问题。

参考文献(References)

[1] Diffie W,Hellman M E.New Directions in Cryptography[J].

IEEE Transactions on Information Theory,1976,22(06):644-654.

[2] 崔北亮.CCNA认证指南(640-802)[M].北京:电子工业出版

社,2009:551-556.

[3] 余海冰,潘泽宏.Diffie-Hellman密钥交换技术综述[J].科技信

息,2007(10):51-52.

[4] 汪志达,叶 伟.Diffie-Hellman密钥交换的算法实现与应用研

究[J].计算机应用与软件,2008,25(05):260-261.

[5] 李必涛,等.一种能够抵抗主动攻击的改进Diffie-Hellman密

钥协商方案[J].中央民族大学学报(自然科学版),2008,17(04):

54-57.

[6] 阎军智,李凤华,马建峰.基于Diffie-Hellman算法的分层密钥

分配方案[J].电子学报,2011(01):119-123.

[7] 杨增福.基于Diffie-Hellman方法的密钥协商协议的设计与分

析[D].郑州:郑州大学,2012:3-14.

[8] 寇应展,等.基于IPSec的VPN实现技术研究[J].科学技术与工

程,2006,06(14):2171-2173.

[9] 陈旭.虚拟专用网VPN 在企业办公中的应用[J].计算机安全,

2007(09):59-61.

[10] 李绪亮.校园网的VPN方案设计[D].济南:山东大学,2011:

13-25.

[11] 董芳.虚拟专用网(VPN)的研究与实现[J].集宁师范学院学

报,2013,35(02):107-108;114.

作者简介:

李清平(1969-),男,本科,副教授.研究领域:计算机网络技

术教学与应用.

孟祥芳(1978-),女,本科,讲师.研究领域:高职教学管理.

黄莉平(1986-),女,硕士,软件设计师.研究领域:网站开发

和编程.endprint

// IKE(Internet Key Exchange Protocol,Internet 密钥交换协议)配置

ER1(config)#crypto isakmp policy 1 // 建立isakmp策略

ER1(config-isakmp)#hash md5 // 哈希采用md5验证

ER1(config-isakmp)#encryption 3des // 采用3des加密

ER1(config-isakmp)#authentication pre-share // 采用预共享密钥认证方式

ER1(config)#crypto isakmp key ﹡ address ※ // ﹡代表预共享密钥,※表示对等体的路由器IP地址

ER1(config)#crypto ipsec transform-set # ah-md5-hmac esp-des // 创建交换集,#为交换集名称,后面两项为加密传输算法

ER1(config)#crypto map §1 ipsec-isakmp // 创建加密图§,序号为1

ER1(config-crypto-map)#set transform-set # // 使用创建的交换集#

ER1(config-crypto-map)#set peer ※ // VPN隧道对端的IP地址※

ER1(config-crypto-map)#match address 101 // 创建访问控制列表ACL,确定受保护的感兴趣流。ACL的具体配置这里从略,需要说明的是VPN不能使用标准ACL,只能使用扩展ACL。

ER1(config)#interface serial 1/0

ER1(config-if)#crypto map § // 加密图§与接口绑定

4.3 外网服务器配置

为了验证企业内网用户访问Internet上的资源,在WWW Server服务器中制作一个简单的web网页index.html,域名为http://www.dhalgorithm.com,如图4所示,同时使用公有IP地址202.101.172.1在DNS Server中创建与域名的对应解析,如图5所示。

图4 在WWW Server服务器中制作的web网页

Fig.4 Web page making in WWW server

图5 在DNS Server中建立的域名解析

Fig.5 Domain name resolution making in DNS server

5 结果验证(Result validation)

企业内网用户A和用户B之间能相互ping通,彼此之间能通过VPN隧道进行信息交流,如图6所示。

图6 用户A ping 用户B的结果

Fig.6 Result of user A ping user B

企业内网用户A和用户B均能通过公有IP地址访问Internet上WWW Server中的web页面,如图7所示。

图7 用户访问Internet资源的结果

Fig.7 Result of the user accessing internet resource

6 网络影响分析(Network influence analysis)

当用户A和用户B建立通信时,双方执行IKE验证,协商加密方式,此时网络的吞吐量比较小且平稳,网络延迟降低。此后所有的数据流都将使用双方协商的加密机制进行加密,再封装于隧道包头内,用户A所在网络的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查并封装构造一个新的VPN数据包,然后将封装后的原数据包作为VPN数据包的负载发送到Internet。用户B所在网络的VPN网关对接收到的数据包进行检查并解封装,然后将还原后的原始数据包发送至目标终端B,在终端B看来,它收到的数据包就和从终端A直接发过来的一样。从终端B返回终端A的数据包处理过程与上述相同。由于VPN技术的加密与解密、封装和解封装,在此过程会产生新的VPN数据包,使得网络吞吐量加大,网络延迟也相应增加。之后数据包发送完毕,网络吞吐量和网络延迟也缓慢下降,分别如图8和图9所示。

图8 企业网络吞吐量情况

Fig.8 Enterprise network throughput

图9 企业网络的网络延迟情况

Fig.9 Enterprise network delay

7 结论(Conclusion)

VPN允许远程站点或企业分支机构使用Internet等公共互联网络的路由基础设施以安全的方式建立连接,具有节约成本、增强安全性、容易扩展、支持新兴应用等特点。Diffie-Hellman算法为VPN网络对等体双方提供加密和解密所需的密钥,以保证通信双方的数据机密性。VPN技术在企业内网中的配置较为复杂,另外由于隧道技术、数据机密性、完整性和认证等安全保障策略,导致网络吞吐量随着VPN数据包的生成而增大,网络延迟也相应增加,使得网络产生抖动,数据的传输质量也随之减低,因此提高VPN网络的应用性能是亟待解决的问题。

参考文献(References)

[1] Diffie W,Hellman M E.New Directions in Cryptography[J].

IEEE Transactions on Information Theory,1976,22(06):644-654.

[2] 崔北亮.CCNA认证指南(640-802)[M].北京:电子工业出版

社,2009:551-556.

[3] 余海冰,潘泽宏.Diffie-Hellman密钥交换技术综述[J].科技信

息,2007(10):51-52.

[4] 汪志达,叶 伟.Diffie-Hellman密钥交换的算法实现与应用研

究[J].计算机应用与软件,2008,25(05):260-261.

[5] 李必涛,等.一种能够抵抗主动攻击的改进Diffie-Hellman密

钥协商方案[J].中央民族大学学报(自然科学版),2008,17(04):

54-57.

[6] 阎军智,李凤华,马建峰.基于Diffie-Hellman算法的分层密钥

分配方案[J].电子学报,2011(01):119-123.

[7] 杨增福.基于Diffie-Hellman方法的密钥协商协议的设计与分

析[D].郑州:郑州大学,2012:3-14.

[8] 寇应展,等.基于IPSec的VPN实现技术研究[J].科学技术与工

程,2006,06(14):2171-2173.

[9] 陈旭.虚拟专用网VPN 在企业办公中的应用[J].计算机安全,

2007(09):59-61.

[10] 李绪亮.校园网的VPN方案设计[D].济南:山东大学,2011:

13-25.

[11] 董芳.虚拟专用网(VPN)的研究与实现[J].集宁师范学院学

报,2013,35(02):107-108;114.

作者简介:

李清平(1969-),男,本科,副教授.研究领域:计算机网络技

术教学与应用.

孟祥芳(1978-),女,本科,讲师.研究领域:高职教学管理.

黄莉平(1986-),女,硕士,软件设计师.研究领域:网站开发

和编程.endprint