Diffie-Hellman密钥交换协议

Diffie-Hellman密钥交换协议

一. 介绍

密钥交互协议是一种交互式的密码协议,通过该协议可以使没有任何共享密钥的双方,在公开网络上可以通过某些信息来产生一对共享的安全密钥,安全性是基于离散对数问题的难解性。

二. 数学原理

设p是一个大素数,g是p的原根(即数值g mod p, g^2 mod p, ...., g^(p-1) mod p是各不相同的整数,并且以某种排列顺序组成了从1到p-1的所有正整数)。离散对数问题就是在已知整数b和素数p的一个原根g,求解唯一的指数i,满足b=(g^i)modp。

三. 发展历程

1. 基础算法

  1. A选择一个大数x, 并发送X=(g^x)modp给B
  2. B选择一个大数y, 并计算Y=(g^y)modp给A
  3. A计算Ka=(Y^x)modp, B计算Kb=(X^y)modp
  4. Ka=Kb=(g^(x*y))modp即为双方的密钥

评价:

从gx和gy当中求解x或y是离散对数问题,从gx和gy当中得到g^(x*y)是CDH问题,都是难解问题。但是Diffie-Helleman算法没有身份验证机制,容易中间人攻击。

1717417915212

2. 站到站密钥交换协议

为解决中间人攻击的问题,采取签名认证Diffie-Hellman算法进行分析,基于签名认证来防止中间人攻击。

1717418114917

但是还是存在问题,未知密钥共享攻击可以实现身份的伪装。

攻击者将A中协议发送者的身份换成了E,然后通过转发消息和伪造签名来实现让B认为自己是真实的发送者,从而实施攻击。这个问题的关键就是没有对签名进行认证,对方之前并不知道签名的公钥是什么,所有人都可以伪造签名,从而实现身份的篡改。

1717418260834

为了解决这个问题,提出了STS(站到站协议),通过在签名上再进行一次加密实现避免身份被篡改。

1717418637923

核心就是在原来的基础上,对签名用共享密钥再进行了一次加密,实现身份的认证。

3. SIGMA密钥交换协议

基于Diffie-Hellman的站到站协议虽然实现了较好的安全性,但是上述协议当中核心是保证签名消息的机密性,而实际上目地应该是消息的完整性和验证性,有点本末倒置的感觉。

经过优化采取基于MAC校验实现消息的认证性,提出了著名的SIGMA(Sign and MAC)协议。

主要思想:
通过签名实现消息的认证性,同时利用MAC算法实现消息的完整性和会话密钥确认。在协议当中,响应方B利用k'计算消息(B, g^x, g^y)的MAC校验值,其中k'是k通过密钥生成函数生成的会话密钥,然后B使用私钥对MAC校验值进行签名。通过私钥签名证明自己身份,通过MAC校验证明未被修改,通过会话密钥计算MAC校验值证明其知道会话密钥Km。

1717419818690

对于中间人而已,可以篡改签名但是无法修改签名当中的内容,所以未知密钥共享攻击失效。

posted @ 2024-06-03 21:08  ONE_ZJ  阅读(39)  评论(0编辑  收藏  举报