一种不依赖公开密钥算法的密钥交换(公钥分发)方法

在这个越来越不安全的网络环境中,要想保证两个节点间通信中的数据是安全的,通常需要混合使用公开密钥算法(非对称加密算法)来进行密钥交换,然后使用对称加密算法将数据加密,使用单向散列函数生成数据指纹,使用签名算法生成数据签名,然后一起将加密数据,数据指纹,数据签名一起发送给对方。 本文介绍一种不使用公开密钥算法来进行密钥交换的方法。

假设通信双方为A和B, 方法中x为随机数,y为需要交换的n位加密密钥,n是固定值

1、A 使用随机数算法,生成x, 生成n位密钥y, 使用y对x进行对称加密生成密文Sx

2、A重复步骤1 执行m次,生成m个Sx。 因为x是随机生成的,所以m个x,y,Sx都是不一样的

3、A将m个x,Sx 发送给B

4、B从m个x,Sx中随机选择一对,然后进行穷举破解,破解出y。

5、B将选中的x发送给A。此时A 与 B都知道了密钥y。之后使用y加密数据进行通信即可。

此方法的可行性主要在单次穷举破解的复杂性以及消息的数量m。 破解的复杂度太高不行,消息的数量m太少也不行。

当然,上述方法还存在其他问题,比如如果在第3步,第5步数据被截获,虽然通过第3步暂时无法破解具体的x,y,但是第5步是可以破解x,y的。 如果在后续的通信中,仅使用y对数据加密,也存在数据完整性和防抵赖方面的问题。

有一种情况是比较适合使用此方式的。就是双方在不知道对方公钥的情况下,可以依赖此方式进行安全的密钥交换和公钥分发以及安全通信。

1、上述步骤1,2不变。

2、A将m个x,Sx,Pxa发送给B,其中Pxa为 使用y加密Pa的结果,Pa为A的公钥;

3、B随机选择一个暴力破解出y,同时也知道了Pa;

4、B使用Pa加密x,使用y加密Pb发送给A;

5、A收到使用私钥解开x,则知道了y,使用y可以知道Pb。至此,A,B都知道y,以及对方的公钥;

从安全性上,即使第2步,第4步中,即使数据包被截获,攻击者也无法从m个x,Sx中破解出来需要的y,也无法知道各自的公钥。

以上方案其实还解决了另一个问题,就是公钥的分发问题。现在常用的公钥分发都是先将公钥存储在集中的数据库中,然后到数据库中获取对应的公钥,但是由于事前用户并不知道需要跟谁通信,因此就必须保证用户计算机与数据库服务器是连通的。

THE END!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值