博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DH 密钥交换算法
阅读量:6478 次
发布时间:2019-06-23

本文共 1038 字,大约阅读时间需要 3 分钟。

1、引言

CSDN搞什么短信验证,7年的账号居然登陆不了,真心抓狂,WTF!!!!

DH,全称为“Diffie-Hellman”,这是一种确保共享KEY安全穿越不安全网络的方法,换句话说就是密钥一致协议,由公开密钥密码体制的奠基人Diffie和Hellman所提出的一种思想。

简单的说就是允许两名用户在公开媒体上交换信息以生成“一致”的、可以共享的密钥。也就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。

2、DH密钥交换模型分析

那具体是怎样的一个流程呢?我们还是以甲乙双方发送数据为模型进行分析

  • 1、甲方(消息发送方,下同)构建密钥对(公钥+私钥),甲方公布公钥给乙方(消息接收方,下同)
  • 2、乙方以甲方发送过来的公钥作为参数构造密钥对(公钥+私钥),将构造出来的公钥公布给甲方
  • 3、甲方用“甲方的私钥+乙方的公钥”构造本地密钥
  • 4、乙方用“乙方的私钥+甲方的公钥”构造本地的密钥
  • 5、这个时候,甲乙两方本地新构造出来的密钥应该一样,甲乙双方可以通过本地密钥进行数据的加密和解密
  • 6、然后就可以使用AES这类对称加密算法进行数据的安全传送了。

3、DH密钥交换算法数学原理

有两个全局公开的参数,一个素数p和一个整数g,g是p的一个原根。

服务端的私钥和公钥分别是a和A,客户端的私钥和公钥分别是b和B;

服务端根据a、p、g,可以计算出公钥A;

服务端将g, p, A明文传送给客户端,客户端可以计算自己的公钥B,以及共享密钥K;

客户端将B明文发送给服务端,服务端也可以计算出共享密钥K。

 4、中间人攻击

在最初的描述中,迪菲-赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务,因此它很容易受到中间人攻击。 

一个中间人“丙”在信道的中央进行两次迪菲-赫尔曼密钥交换,一次和甲,另一次和乙,就能够成功的向甲假装自己是乙,反之亦然。
而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。
有很多种安全身份验证解决方案使用到了迪菲-赫尔曼密钥交换。例如当甲和乙共有一个公钥基础设施时,可以将他们的返回密钥进行签名。

 

转载于:https://www.cnblogs.com/ZP1015/p/7092082.html

你可能感兴趣的文章
centos 下载安装mysql
查看>>
Redis主从切换,官方说明(中文翻译)
查看>>
iphone 资源
查看>>
鸟哥Linux私房菜基础学习篇 第二部分 Linux 文件、目录与磁盘格式_Linux文件权限与 目录配置_Linux磁盘与文件系统管理...
查看>>
Apache Maven Dependency Plugin使用记录
查看>>
css3 Tab Menus Without Javascript
查看>>
android P设置状态栏字体图标颜色
查看>>
【ZZ】HTTP status codes
查看>>
Druid数据库密码加密
查看>>
Win7设置FTP详细过程
查看>>
Android ViewPager使用详解
查看>>
webservice调用报异常,xfire,nullpointer,serialize……
查看>>
向tomcat学习jmx
查看>>
win7删除SVN脚本
查看>>
我的友情链接
查看>>
Android 一个改善的okHttp封装库
查看>>
centos6.x 抓取ssh登录的用户名和密码
查看>>
我从程序猿到DBA的进化之路
查看>>
ClassLoader原理扩展
查看>>
MongoDB基本使用
查看>>