关于Diffie-Hellman密钥协商机制以及中间人攻击

    前两天学习了有关认证机制的内容,学到一个Diffie-Hellman密钥协商机制,阅读的文章说其极易受到中间人攻击,一开始只知其大略,后来在老师帮助下才想明白。
    先简要介绍下Diffie-Hellman密钥协商机制,Alice 与Bob 想要通信,首先Alice 创建公开值g,p,和一个秘密值a。其中,p是一个大素数。并运算出  A=g^a mod p,这里A也是公开值,并将g , p ,A 发给Bob,Bob收到这三个值以后,创建一个秘密值b,并计算 B =g^b mod p,将B发回Alice。之后Alice与Bob用收到的消息创建密钥,Alice方创建密钥 K = B^a mod p,Bob方创建密钥 K = A^b mod p,这样双方的密钥都是 K= B^a mod p = (g^b mod p) ^a mod p = g^ab mod p = (g^a mod p)^b mod p = A^b mod p, 是一样的。这说明是一个无第三方的对称密钥加密协议。从密钥可以看出,如果素数p是一个比如说几百位的大素数,a,b也有几百位长,这样几乎不可能通过g,p,A这些公开值中求出秘密值a,这是一个典型的离散对数问题。
    从其原理之中可以看出,a,b值并没有什么关系,或者说a,b不能证明通信双方Alice与Bob的身份,这使得重放攻击可以轻易产生。假设一个攻击者Tom,当A向B发送g,p,A时,Tom截获了信息,并(假装自己是Bob)向Alice发送了T =g^t mod p,其中t是Tom的秘密值。同时 Tom(假装自己是Alice)向Bob发送g,p,T =g^t mod p,这样B以为这是A发过来的,就向T发送了B =g^b mod p。这样在Alice与Tom之间,创建的密钥就是K‘ = g^at mod p,两方密钥相同。在Tom与Bob之间,创建的密钥就是K'’ = g^tb mod p,两方密钥相同。这样,密钥创建完成,Alice与Bob都认为自己与对方分享了只有他们两人所知的密钥,实际上并不是。当Alice想要发信息给Bob时,Alice就会将信息用K' = g^at mod p加密后发出,消息Bob无法解密,但会被Tom收到并解密,这样Tom可以或者扣留信息,或者篡改信息用K'‘ = g^tb mod p加密后发给Bob,这样Bob会收到他认为是Alice发来的,其实是Tom发过来的经过篡改的信息。这样重放攻击就产生了。
    刚刚开始学安全,就把一些印象深的知识写下来,主要是加深记忆,还可以分享一下,希望大家指教。
  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值