Diffie-Hellman密钥交换算法
Diffie-Hellman密钥交换算法
之前做过的一个项目中用过DH算法(Diffie-Hellman),这种密钥交换技术的目的在于使得两个用户安全地交换一个共享密钥(shared secret)以便用于以后的报文加密。
DH算法的有效性依赖于计算离散对数的难度。简言之,可以如下定义离散对数:首先定义一个素数p的原根,为其各次幂产生从1 到p-1的所有整数根,也就是说,如果g是素数p的一个原根,那么数值
g mod p, g2 mod p, ..., gp-1 mod p
是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数。
对于一个整数b和素数p的一个原根g,可以找到惟一的指数i,使得
b = gi mod p 其中0 ≤ i ≤ (p-1)
指数 i 称为b的以g为基数的模p的离散对数或者指数。该值被记为indg ,p(b)。
下面是DH算法的原理:
有两个全局公开的参数,一个素数p和一个整数g,g是p的一个原根。
服务端的私钥和公钥分别是a和A,客户端的私钥和公钥分别是b和B;
服务端根据a、p、g,可以计算出公钥A;
服务端将g, p, A明文传送给客户端,客户端可以计算自己的公钥B,以及共享密钥K;
客户端将B明文发送给服务端,服务端也可以计算出共享密钥K。
具体如下图:

根据上述流程,客户端于服务端之间明文传输的是g、p、A、B,然后双方就可以得到一个同样的共享密钥K,并以K对后续要传输的数据进行对称加密、解密即可。
由于计算K需要一方的私钥和另一方的公钥,所以理论上,只要双方的私钥a、b不被第三方知道,这个共享密钥K就是安全可用的。
DH算法具有两个吸引力的特征:
- 仅当需要时才生成密钥,减小了将密钥存储很长一段时间而致使遭受攻击的机会;
- 除对全局参数的约定外,密钥交换不需要事先存在的基础结构;
然而,该技术也存在许多不足:
- 没有提供双方身份的任何信息;
- 计算密集性,因此容易遭受阻塞性攻击,即对手请求大量的密钥。受攻击者花费了相对多的计算资源来求解无用的幂系数而不是在做真正的工作;
- 没办法防止重演攻击;
- 容易遭受中间人的攻击。第三方C在和A通信时扮演B;和B通信时扮演A。A和B都与C协商了一个密钥,然后C就可以监听和传递通信量。中间人的攻击按如下进行:
- B在给A的报文中发送他的公开密钥YB。
- C截获并解析该报文。C将B的公钥保存下来并给A发送报文,该报文具有B的用户ID但使用C的公钥YC,但仍按照好像是来自B的样子被发送出去。A收到C的报文后,将YC和B的用户ID存储在一块。类似地,C使用YC向B发送好像来自A的报文。
- B基于私钥XB和YC计算共享密钥K1,A基于私钥XA和YC计算共享密钥K2,C使用私钥XC和YB计算K1,并使用XC和YA计算K2。
- 从现在开始,C就可以转发A发给B的报文或转发B发给A的报文,在途中根据需要修改它们的密文。使得A和B都不知道他们在和C共享通信。
Oakley算法是对Diffie-Hellman密钥交换算法的优化,它保留了后者的优点,同时克服了其弱点。
Oakley算法具有五个重要特征:
1、它采用称为cookie程序的机制来对抗阻塞攻击。
2、它使得双方能够协商一个全局参数集合。
3、它使用了现时来保证抵抗重演攻击。
4、它能够交换Diffie-Hellman公开密钥。
5、它对Diffie-Hellman交换进行鉴别以对抗中间人的攻击。
Oakley可以使用三个不同的鉴别方法:
1、数字签名:通过签署一个相互可以获得的散列代码来对交换进行鉴别;每一方都使用自己的私钥对散列代码加密。散列代码是在一些重要参数上生成的,如用户ID和现时。
2、公开密钥加密:通过使用发送者的私钥对诸如ID和现时等参数进行加密来鉴别交换。
3、对称密钥加密:通过使用某种共享密钥对交换参数进行对称加密,实现交换的鉴别。
Diffie-Hellman密钥交换算法的更多相关文章
- DH 密钥交换算法
1.引言 CSDN搞什么短信验证,7年的账号居然登陆不了,真心抓狂,WTF!!!! DH,全称为"Diffie-Hellman",这是一种确保共享KEY安全穿越不安全网络的方法,换 ...
- 深入浅出Diffie–Hellman
一.作者 这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie).马丁·赫尔曼(Martin Edward Hellman)于1976年发表. 二.说明 它是一种安全协 ...
- 浅析Diffie–Hellman
一.作者 这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie).马丁·赫尔曼(Martin Edward Hellman)于1976年发表. 二.说明 它是一种安全协 ...
- SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法
本文转载自SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法 导语 作为一名安全爱好者,我一向很喜欢SSL(目前是TLS)的运作原理.理解这个复杂协议的基本原理花了我好几天的时间,但只要 ...
- Nodejs进阶:使用DiffieHellman密钥交换算法
## 简介 Diffie-Hellman(简称DH)是密钥交换算法之一,它的作用是保证通信双方在非安全的信道中安全地交换密钥.目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端.服务端利 ...
- Diffie–Hellman key exchange
General overview[edit] Illustration of the idea behind Diffie–Hellman key exchange Diffie–Hellman ...
- DH密钥交换算法
DH密钥交换算法:DH的全称为Diffie-Hellman ,该算法可以在需要安全传输的前提下,确定双方的对称密钥,该算法的核心在于双方的私钥没有进入网络传输流程,根据对方的公钥和己方的私钥,可以计算 ...
- 廖雪峰Java10加密与安全-4加密算法-4密钥交换算法
1DH算法 1.1.原根公式:g^i mod P 条件:1<g<P,0<i<P 原根:介于[1, p-1]之间的任意2个数i,j(p为素数,i≠j)的结果不相等,即 g^i m ...
- 图解 ECDHE 密钥交换算法
HTTPS 常用的密钥交换算法有两种,分别是 RSA 和 ECDHE 算法. 其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的.而 ECDHE 算法具有前向安全 ...
随机推荐
- ASP.NET Cookie(二)--控制Cookie的范围
默认情况下,一个站点的全部Cookie都一起存储在客户端上,而且所有Cookie都会随着对该站点发送的任何请求一起发送到服务器.也就是说,一个站点中的每个页面都能获得该站点的所有Cookie.但是,可 ...
- shell 1>&2 2>&1 &>filename重定向的含义和区别
当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...
- 如何安装appium-linux
准备工作: JDK/Android sdk (记得把android sdk的环境变量命名成ANDROID_HOME ) 确保ADB命令可用 git python 和 pip 一,安装node.js和n ...
- 安装TFS(2015)工作组模式代理服务器(Agent)
TFS的代理服务器(agent)用于持续集成编译和发布,为开发.测试团队和运维团队带来的非常便捷高效的发布和测试速度,许多企业和研发团队都在自己的研发测试平台中广泛使用这一技术. 在部署TFS代理服务 ...
- C# 闭包问题-你被”坑“过吗?
引言 闭包是什么?以前看面试题的时候才发现这个名词. 闭包在实际项目中会有什么问题?现在就让我们一起来看下这个不太熟悉的名词. 如果在实际工作中用到了匿名函数和lamada表达式,那你就应该高度注意啦 ...
- SQL操作符
Oracle中的操作符算术操作符:无论是在sqlserver,或者是java中,每种语言它都有算术操作符,大同小异. Oracle中算术操作符(+)(-)(*)(/) 值得注意的是:/ 在oracle ...
- linux重启mysql无法启动
如VPS新建后,重启则无法启动,出现类似 Starting MySQL ... * The server quit without updating PID file (/var/run/mysqld ...
- [LeetCode] Multiply Strings 字符串相乘
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- NPOI操作EXCEL(三)——反射机制进行excel表格数据的解析
我们先来回忆回忆上篇文章讲到的通过xml配置文件实现excel批量模板解析的整体思路: 1.对每个excel模板制定xml配置规则集,实现xml配置文件的解析服务 2.为每个excel模板制定DTO, ...
- 如何为Surface Dial设备开发自定义交互功能
随着Surface Studio的发布,微软发布了与之相配套的外设硬件Surface Dial,用户可以将Surface Dail吸附在Surface Studio的屏幕上面,用旋转和点击的实体操作来 ...