DH密钥交换协议
密钥交换
密钥交换简单点来说就是允许两名用户在公开媒体上交换信息以生成“一致”的、可以共享的密钥。也就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通信中作为对称密钥来加密通讯内容。
离散对数问题
如果p 是一个素数,g 和x 是整数,计算 \(y = g^x mod p\) 非常快。但是相反的过程:先知道 p, g 和y,要求某个x(离散对数),满足等式\(y = g^x mod p\),通常十分困难。此相反求离散对数的过程称为“离散对数问题”。例如:如果\(15 = 3^xmod 17\), 则x = 6。
g和p的选择对此类系统的安全性影响很大。为了保证无法求解离散对数问题,p应该是一个很大的素数,例如1024bit的,而且 (p-1)/2也应该是素数。g要求是p的primitive root,也就是讲整数序列: \(g^0 mod p,g^1 mod p, g^2 mod p, …., g^{p-1} mod p\)中的p个元素均是不同的整数。
DH协议
问题
Alice和Bob 想共有一个密钥,用于对称加密。但是他们之间的通信渠道是不安全的。所有经过此渠道的信息均会被敌对方:Eve看到。哪他们要如何交换信息,才能不让Eve知道这个密钥呢?
方法
DH 算法的安全性依赖于计算离散对数问题,DH协议的方案:
1、Alice和Bob先对p 和g达成一致,而且公开出来。Eve也就知道它们的值了。
2、Alice取一个私密的整数a,不让任何人知道,发给Bob 计算结果:\(A=g^a mod p\). Eve 也看到了A的值。
3、类似,Bob 取一私密的整数b,发给Alice计算结果\(B=g^b mod p\).同样Eve也会看见传递的B是什么。
4、Alice 计算出\(K'=B^a mod p=(g^b)^a mod p=g^{ab} mod p\).
5、Bob 也能计算出\(K=A^b mod p=(g^a)^b mod p=g ^{ab} mod p\).
6、Alice 和 Bob 现在就拥有了一个共用的密钥K/K'.
7、虽然Eve看见了p,g, A and B, 但是鉴于计算离散对数的困难性,她无法知道a和b 的具体值。所以Eve就无从知晓密钥K/K' 是什么了。
中间人攻击
简单描述为:一个中间人“丙”在信道的中间进行两次DH密钥交换,一次和甲,另一次和乙,就能够成功的向甲假装自己是乙,反之亦然。
而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。
有很多种安全身份验证解决方案使用到了DH密钥交换。例如当甲和乙共有一个公钥基础设施时,可以将他们的返回密钥进行签名。
参考
1、DH 密钥交换算法
2、Diffie–Hellman 密钥交换协议简介
DH密钥交换协议的更多相关文章
- DH 密钥交换算法
1.引言 CSDN搞什么短信验证,7年的账号居然登陆不了,真心抓狂,WTF!!!! DH,全称为"Diffie-Hellman",这是一种确保共享KEY安全穿越不安全网络的方法,换 ...
- 密钥交换协议之IKEv2
1. IKEv2 1.1 IKEv2简介 IKEv2(Internet Key Exchange Version 2,互联网密钥交换协议第 2 版)是第 1 版本的 IKE 协议(本文简称 IKEv1 ...
- 转: DH密钥交换和ECDH原理
转自:http://www.tuicool.com/articles/em6zEb DH密钥交换和ECDH原理 时间 2013-06-24 18:50:55 CSDN博客 原文 http://bl ...
- DH密钥交换和ECDH原理(转)
DH密钥交换和ECDH原理 时间 2013-06-24 18:50:55 CSDN博客相似文章 (0) 原文 http://blog.csdn.net/sudochen/article/detail ...
- DH密钥交换算法
DH密钥交换算法:DH的全称为Diffie-Hellman ,该算法可以在需要安全传输的前提下,确定双方的对称密钥,该算法的核心在于双方的私钥没有进入网络传输流程,根据对方的公钥和己方的私钥,可以计算 ...
- DH密钥交换
DH密钥交换 密模运算 所谓幂模,就是先做一次幂运算,再做一次模运算. 模运算有以下性质: 也就是说,先模再乘和先乘再模,只要最后都模了同一个模数,结果都是一样. 有了这个性质,我们首先得到幂模运算的 ...
- DH密钥交换非对称加密
迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称"D–H") 是一种安全协议. 它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起 ...
- 网络密钥交换协议——Diffie-Hellman
Diffie-Hellman算法是一种交换密钥的算法. 它是眼下比較经常使用的密钥交换算法. 这样的算法的优点是能让两台计算机在不安全的网络环境中完毕密钥的交换. 下面是整个算法的过程.当中红色字体表 ...
- 加密解密(9)Diffie-Hellman密钥交换协议
过程如下 : 1,小李把KeyX经过加密变化,生成MsgA传给老王. 2,老王得到MsgA,保存在本地. 3,老王把KeyY经过加密变化,生成MsgB传给小李, 4,小李得到MsgB保存在本地, 5, ...
随机推荐
- 《剑指offer》面试题46. 把数字翻译成字符串
问题描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
- dubbo 实现简易分布式服务
dubbo 实现简易分布式服务 服务器需要搭建zookeeper环境 zookeeper端口2181 还需要有java环境 1.需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我 ...
- Solon Web 开发,七、视图模板与Mvc注解
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- 【笔记】thanos receiver的router模式
- 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义
代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...
- STC89C52引脚图(彩色)
不知道大家有没有见过像这样的arduino引脚功能图: 还有ESP系列: 还有stm32的: 给人的第一感觉就是漂亮,清晰明了,相比之下STC51的就...... 楼主搜罗了一下,目前网络上还没有 ...
- JavaScript之Promise实现原理(手写简易版本 MPromise)
手写 Promise 实现 Promise的基本使用 Promise定义及用法详情文档:Promise MAD文档 function testPromise(param) { return new P ...
- springboot 配置mybatis 配置mapper.xml
# 插件 进行配置 也可以用yml # 1. 配置 Tomcat 修改端口号 server.port=8848 server.context-path=/zxf #2.配置数据源 spring.dat ...
- 回顾 2021 中国 .NET 开发者峰会
.NET Conf China 2021 是面向开发人员的社区峰会,基于 .NET Conf 2021,庆祝 .NET 6 的发布和回顾过去一年来 .NET 在中国的发展.峰会由来自北京.上海.苏州. ...
- 求一个number数组中的最大值和最小值的差
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...