DH方式密钥交换四种表达方式

DH+RSA签名,解决内网向IDC单向通讯,交换密钥的问题(IDC密钥不落地,可以内置公钥)。

如果过程中有中间人,server使用私钥加密,发送给client,假设中间人拦截了,和server协商密钥,则client没有该密钥,

 

下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。 
1,Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。 
2,Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。 
下面是DH交换的过程图: 
这里写图片描述

本图片来自wiki 
下面我们进行一个实例 
1.爱丽丝与鲍伯协定使用p=23以及g=5. 
2.爱丽丝选择一个秘密整数a=6, 计算A = g^a mod p并发送给鲍伯。 
A = 5^6 mod 23 = 8. 
3.鲍伯选择一个秘密整数b=15, 计算B = g^b mod p并发送给爱丽丝。 
B = 5^15 mod 23 = 19. 
4.爱丽丝计算s = B a mod p 
19^6 mod 23 = 2. 
5.鲍伯计算s = A b mod p 
8^15 mod 23 = 2.

 

一、理论化的表达方式

1、Alice与Bob确定两个大素数p和g,这两个数不用保密

2、Alice选择另一个大随机数a,并计算A如下:A=ga mod p

3、Alice将A发给Bob

4、Bob  选择另一个大随机数b,并计算B如下:B=gb mod p

5、Bob将B发给Alice

6、计算秘密密钥K1如下:K1=Ba mod p

7、计算秘密密钥K2如下:K2=Ab mod p

K1=K2,因此Alice和Bob可以用其进行加解密

 

二、数字化的表达方式

1、通信方Alice和通信方Bob约定g=5,p=23,g和p是公开的

2、Alice生成一个随机数a,a是保密的,如a=6

3、Alice计算g^a%p发送给Bob,g^a%p=5^6%23=8

4、Bob生成一个随机数b,b是保密的,如b=15

5、Bob计算g^b%p发送给Alice,g^b%p=5^15%23=19

6、Alice接收到g^b%p后,再使用保密的a,计算(g^b%p)^a%p=19^6%23=2

7、Bob接收到g^a%p后,再使用保密的b,计算(g^a%p)^b%p=8^15%23=2

8、这样通信方Alice和Bob得到一个相同的密钥:2

 

三、实践化的表达方式

1、Server Key Exchange消息

server端:用DH算法产生整数p,g,pubkey(即A=ga mod p),将这三个参数放到Server Key Exchange消息中。为了防止消息被恶意篡改,Server Key exchange消息中还要包含一个对公钥参数的签名signature。

Client端:收到此消息后,会把消息中的 p,g,pubkey(即A=ga mod p) 三个参数记录下来,有了这些,可以依据pubkey(即A=ga mod p)和 private(即b)计算出 pre-master。

 

2、Client Key Exchange消息

Client端:把产生的pubkey(即B=gb mod p) 放入Client Key Exchange消息中发给 server 。

server端:收到此消息后,会把消息中的pubkey(即B=gb mod p) 记录下来,可以依据pubkey(即B=gb mod p)和 private(即a)计算出 pre-master。

 

四、图形化表达方式


 

五,其他

   RSA密钥交换

RSA密钥交换的过程十分直截了当。客户端生成预主密钥(46字节随机数),使用服务器公钥对其加密,将其包含在ClientKeyExchange消息中,最后发送出去。服务器只需要解密这条消息就能取出预主密钥。TLS使用的是RFC 3447定义的RSAES-PKCS-v1_5加密方案。

注意 因为RSA算法可以同时用于加密和数字签名,所以RSA密钥交换可以按照这种方式工作。其他流行的密钥类型,比如DSA(DSS)和ECDSA,只能用于签名。

 RSA密钥交换的简单性也是它最大的弱点。用于加密主密钥的服务器公钥,一般会保持多年不变。任何能够接触到对应私钥的人都可以恢复主密钥,并构建相同的主密钥,从而危害到会哈安全性。
 对目标的攻击并不需要实时进行,强大的对手可以制定长期行动。攻击者会揭露所有加密的流量,耐心等待有朝一日可以得到密钥。比如,计算机能力的进步使暴力破解成为可能;也可以通过法律强制力、政治高压、贿赂或强行进入使用该密钥的服务器取得密钥。只要密钥泄漏,就可以解密之前记录的所有流量了。
 TLS中其他常见的密钥交换方式都不受这个问题的影响,被称为支持前向保密。使用那些密钥交换时,每个连接使用的主密钥相互独立。泄漏的服务器密钥可以用于冒充服务器,但不能用于追溯解密任何流量。


 

 

参考 :

https://blog.csdn.net/zbw18297786698/article/details/53609794

https: https://www.jianshu.com/p/39ad3e40f7af 

密钥交换 https://www.jianshu.com/p/8837640221af

取模:https://blog.csdn.net/weixin_41679015/article/details/81093244

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值