Diffie-Hellman密钥交换算法有破解的可能吗?
本帖最后由 黄色土豆 于 2024-8-7 11:15 编辑目前有这么一个需求,JDBC发送到数据库时的报文中,有一个登录报文,这个报文是JDBC -> 数据库的,里面带着用户名和密码,但是每次发送的都不一样,所以考虑到可能是加密之后的密文,然后发现在这个登录包前面还有一个包,是互相交换自己的秘钥,应该是用互相交换的秘钥,对用户名和密码进行加密后发送的,应该是使用的DH密钥交换算法,请问各位大佬,我对密钥算法这块不是很懂,
目前有一个思路,就是模拟数据库发送给JDBC的秘钥中,每次都是发送这一个,相当于定死一个秘钥给JDBC,让JDBC每次发送请求都使用这一个秘钥对用户名和密码进行加密,这样我就可以使用固定的秘钥进行解密,拿到用户名和密码了,但是发现还是不行,这个思路不通,求大佬给解释一下,这个思路是否可行,或者说这种DH密钥交换算法是否有破解的可能性,有没有大佬给个思路? 发送给对方的都是用来加密的,解密的留在自己手里不暴露的,所以就算你是固定的加密秘钥(公钥),拿不到解密密钥(私钥),也是破解不了的 想要破解的话,有个思路是可行的,就是当他们的中间人 zhouzhiwei90 发表于 2024-7-23 14:53
想要破解的话,有个思路是可行的,就是当他们的中间人
我现在找到了私钥生成的过程,但是每次都是不一样的 zhouzhiwei90 发表于 2024-7-23 14:53
想要破解的话,有个思路是可行的,就是当他们的中间人
你认为私钥是写死的吗?还是也是动态的? 黄色土豆 发表于 2024-7-23 15:38
你认为私钥是写死的吗?还是也是动态的?
你的这个场景应该是动态的 zhouzhiwei90 发表于 2024-7-23 16:12
你的这个场景应该是动态的
这种动态的有什么思路吗? 本帖最后由 定西 于 2024-7-23 16:43 编辑
黄色土豆 发表于 2024-7-23 15:33
我现在找到了私钥生成的过程,但是每次都是不一样的
你拿到的只是加密过后的密文、密文是通过公钥加密的、解密的话需要用到私钥、没有私钥就解不了。
1、如果你是端对端、那你可以hook一下这个加密方法、看看能不能找到公钥和加密方法。
2、如果你是中间端、数据生成由上级系统发过来、除了拿到私钥去解密、那没有其它办法。 定西 发表于 2024-7-23 16:36
你拿到的只是加密过后的密文、密文是通过公钥加密的、解密的话需要用到私钥、没有私钥就解不了。
1、如 ...
我debug看到的,我感觉他的私钥也是通过公钥进行生成的。你感觉有这种操作的吗? 本帖最后由 定西 于 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]