黄色土豆 发表于 2024-7-23 14:46

Diffie-Hellman密钥交换算法有破解的可能吗?

本帖最后由 黄色土豆 于 2024-8-7 11:15 编辑

目前有这么一个需求,JDBC发送到数据库时的报文中,有一个登录报文,这个报文是JDBC -> 数据库的,里面带着用户名和密码,但是每次发送的都不一样,所以考虑到可能是加密之后的密文,然后发现在这个登录包前面还有一个包,是互相交换自己的秘钥,应该是用互相交换的秘钥,对用户名和密码进行加密后发送的,应该是使用的DH密钥交换算法,请问各位大佬,我对密钥算法这块不是很懂,
目前有一个思路,就是模拟数据库发送给JDBC的秘钥中,每次都是发送这一个,相当于定死一个秘钥给JDBC,让JDBC每次发送请求都使用这一个秘钥对用户名和密码进行加密,这样我就可以使用固定的秘钥进行解密,拿到用户名和密码了,但是发现还是不行,这个思路不通,求大佬给解释一下,这个思路是否可行,或者说这种DH密钥交换算法是否有破解的可能性,有没有大佬给个思路?

zhouzhiwei90 发表于 2024-7-23 14:50

发送给对方的都是用来加密的,解密的留在自己手里不暴露的,所以就算你是固定的加密秘钥(公钥),拿不到解密密钥(私钥),也是破解不了的

zhouzhiwei90 发表于 2024-7-23 14:53

想要破解的话,有个思路是可行的,就是当他们的中间人

黄色土豆 发表于 2024-7-23 15:33

zhouzhiwei90 发表于 2024-7-23 14:53
想要破解的话,有个思路是可行的,就是当他们的中间人

我现在找到了私钥生成的过程,但是每次都是不一样的

黄色土豆 发表于 2024-7-23 15:38

zhouzhiwei90 发表于 2024-7-23 14:53
想要破解的话,有个思路是可行的,就是当他们的中间人

你认为私钥是写死的吗?还是也是动态的?

zhouzhiwei90 发表于 2024-7-23 16:12

黄色土豆 发表于 2024-7-23 15:38
你认为私钥是写死的吗?还是也是动态的?

你的这个场景应该是动态的

黄色土豆 发表于 2024-7-23 16:21

zhouzhiwei90 发表于 2024-7-23 16:12
你的这个场景应该是动态的

这种动态的有什么思路吗?

定西 发表于 2024-7-23 16:36

本帖最后由 定西 于 2024-7-23 16:43 编辑

黄色土豆 发表于 2024-7-23 15:33
我现在找到了私钥生成的过程,但是每次都是不一样的
你拿到的只是加密过后的密文、密文是通过公钥加密的、解密的话需要用到私钥、没有私钥就解不了。
1、如果你是端对端、那你可以hook一下这个加密方法、看看能不能找到公钥和加密方法。
2、如果你是中间端、数据生成由上级系统发过来、除了拿到私钥去解密、那没有其它办法。

黄色土豆 发表于 2024-7-23 17:15

定西 发表于 2024-7-23 16:36
你拿到的只是加密过后的密文、密文是通过公钥加密的、解密的话需要用到私钥、没有私钥就解不了。
1、如 ...

我debug看到的,我感觉他的私钥也是通过公钥进行生成的。你感觉有这种操作的吗?

定西 发表于 2024-7-23 17:33

本帖最后由 定西 于 2024-7-23 17:42 编辑

黄色土豆 发表于 2024-7-23 17:15
我debug看到的,我感觉他的私钥也是通过公钥进行生成的。你感觉有这种操作的吗?
DH密钥交换算法的过程如下: 假设 Alice 和 Bob 进行秘密通信,需要协商出一个密钥。首先,双方选择一个素数 p 和模 p 乘法群的一个生成元g,这两个数可以在不安全的信道上发送。例如,选择 p= 37 ,g= 2 。Alice 选择一个秘密整数 a,计算A=g^a mod p,发给 Bob 。例如,选择 a=7,则 A=2^7 mod 37 = 17。Bob 选择一个秘密整数 b,计算 B=g^b mod p,发给Alice。例如,选择 b=13,则 B= 2^13 mod = 15。此时 Alice 和 Bob 可以共同得出密钥:

K=A^b mod p= B^a mod p = g^ab mod p


你都能Debug了、那直接断点看数据就行了、验证方法可行性、拷贝出来加密解密方法复用
页: [1]
查看完整版本: Diffie-Hellman密钥交换算法有破解的可能吗?