【Diffie-Hellman】模拟两个客户之间的加密会话过程,理解安全密钥交换的重要性。

实验目的

通过模拟两个客户之间的加密会话过程,理解安全密钥交换的重要性,理解基于Diffie-Hellman协议的安全密钥交换的原理和流程。

 

实验原理

Diffie-Hellman协议进行密钥交换的过程简述如下:

选取两个大数pg并公开,其中p是一个素数,gp的一个模p本原单位根(primitive root module p),所谓本原单位根就是指在模p乘法运算下,g1次方,2次方……(p-1)次方这p-1个数互不相同,并且取遍1p-1

对于Alice(其中的一个通信者),随机产生一个整数aa对外保密,计算Ka = g^a mod p,将Ka发送给Bob

对于Bob(另一个通信者),随机产生一个整数bb对外保密,计算Kb = g^b mod p,将Kb发送给Alice

在Alice方面,收到Bob送来的Kb后,计算出密钥为:key = Kb^a mod p=(g^b)^a=g^(b*a) mod p

对于Bob,收到Alice送来的Ka后,计算出密钥为:key = Ka ^ b mod p=(g^a)^b=g^(a*b) mod p

攻击者知道pg,并且截获了KaKb,但是当它们都是非常大的数的时候,依靠这四个数来计算ab非常困难,这就是离散对数数学难题。

 

要实现Diffie-Hellman密钥交换协议,需要能够快速计算大数模幂,在模幂算法中,仍需计算大数的乘法和模运算,所以整个过程需要三个算法:高精度乘法,高精度除法(用来同时求出一个大数除以另一个大数的商和余数),快速模幂算法。

 

高精度的乘法和除法可以程序模拟手算。快速模幂算法也是从手算中总结出规律来,例如:

5^8 = (5^2)^4 = (25)^4 = (25^2)^2 = (625)^2,这样,原来计算5^8需要做8次乘法,而现在则只需要三次乘法,分别是:5^2, 25^2, 625^2。这就是快速模幂算法的基础。将算法描述出来,那就是:

算法M:输入整数a,b,p,计算a^b mod p

M1.初始化c = 1

M2.如果b0,则c就是所要计算的结果。返回c的值。算法结束。

M3.如果b为奇数,则令c = c * a mod p,令b = b - 1,转到M2

M4.如果b为偶数,则令a = a * a mod p,令b = b / 2,转到M2

 

实验过程

1.打开实验环境,在单机上执行实验程序,双击打开需要运行的程序.。如图1所示

 

2.弹出界面如图,分别为客户A和客户B。如图2所示

 

3.在客户端A输入密码,如123456,生成公钥。如图3所示

 

4.客户端A点击计算并发送X。如图4所示

 

5.在客户端B点击计算并发送出Y,则B利用A的公钥和X计算并发送出Y。如图5所示

 

6.客户端A获取到Y之后,在两个客户端都可以生成相同的会话密钥。

 

7.在客户端A输入要发送的内容。如图7所示

 

8.点击加密,发送。B即可收到密文。如图8所示

 

9.客户端B点击解密,得到明文。如图9所示

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值