美文网首页嵌牛IT观察
简要介绍DH密钥交换算法

简要介绍DH密钥交换算法

作者: BLASSREITER | 来源:发表于2017-11-15 16:08 被阅读0次

姓名:朱睿琦

学号:15180288015

参考:https://baike.baidu.com/item/Diffie-Hellman/9827194?fr=aladdin

http://blog.csdn.net/fw0124/article/details/8462373

【嵌牛导读】:随着互联网络的高速发展,计算机运算能力的提升,对信息的保密也有了更近一步的要求——不仅信息要保密,密钥也要保密。DH(Diffie-Hellman)算法就提供了使密钥安全通过不安全网络的方法。

【嵌牛鼻子】:DH算法,密钥,网络信息安全

【嵌牛提问】:DH算法是用来保护什么在网络中的通信安全?DH密钥交换的基本原理是什么?

【嵌牛正文】:(1)、算法描述

离散对数的概念:

原根:如果a是素数p的一个原根,那么数值:

amodpa^2modp,…,a^(p-1)modp

是各不相同的整数,且以某种排列方式组成了从1p-1的所有整数。

离散对数:如果对于一个整数b和素数p的一个原根a,可以找到一个唯一的指数i,使得:

b=(a的i次方)modp其中0ip-1

那么指数i称为b的以a为基数的模p的离散对数。

Diffie-Hellman算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数p和它的一个原根a后,对给定的b,要计算i,被认为是很困难的,而给定i计算b却相对容易。

Diffie-Hellman算法:

假如用户A和用户B希望交换一个密钥。

取素数p和整数aap的一个原根,公开a和p。

A选择随机数XA<p,并计算YA=a^XA mod p。

B选择随机数XB<p,并计算YB=a^XB mod p。

每一方都将X保密而将Y公开让另一方得到。

A计算密钥的方式是:K=(YB) ^XA modp

B计算密钥的方式是:K=(YA) ^XB modp

证明:

(YB)^ XA modp= (a^XB modp)^ XA modp

= (a^XB)^ XA modp= (a^XA) ^XB modp(<-- 密钥即为 a^(XA*XB) modp)

=(a^XA modp)^ XB modp= (YA) ^XB modp

由于XA和XB是保密的,而第三方只有pa、YB、YA可以利用,只有通过取离散对数来确定密钥,但对于大的素数p,计算离散对数是十分困难的。

例子:

假如用户Alice和用户Bob希望交换一个密钥。

取一个素数p=97和97的一个原根a=5。

Alice和Bob分别选择秘密密钥XA=36和XB=58,并计算各自的公开密钥:

YA=a^XA modp=5^36 mod 97=50

YB=a^XB modp=5^58 mod 97=44

Alice和Bob交换了公开密钥之后,计算共享密钥如下:

Alice:K=(YB) ^XA modp=44^36 mod 97=75

Bob:K=(YA) ^XB modp=50^58 mod 97=75

(2)、安全性

当然,为了使这个例子变得安全,必须使用非常大的XA, XB 以及p, 否则可以实验所有的可能取值。(总共有最多97个这样的值, 就算XA和XB很大也无济于事)。

如果p是一个至少 300 位的质数,并且XA和XB至少有100位长, 那么即使使用全人类所有的计算资源和当今最好的算法也不可能从a,p和a^(XA*XB) modp中计算出 XA*XB。

这个问题就是著名的离散对数问题。注意g则不需要很大, 并且在一般的实践中通常是2或者5。

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

一个中间人在信道的中央进行两次迪菲-赫尔曼密钥交换,一次和Alice另一次和Bob,就能够成功的向Alice假装自己是Bob,反之亦然。

而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。

有很多种安全身份验证解决方案使用到了迪菲-赫尔曼密钥交换。例如当Alice和Bob共有一个公钥基础设施时,他们可以将他们的返回密钥进行签名。

相关文章

  • 简要介绍DH密钥交换算法

    姓名:朱睿琦 学号:15180288015 参考:https://baike.baidu.com/item/Dif...

  • [ 加密 ] DH 安全地传输密钥 要想人不知?

    如何传递密钥? 密钥交换算法即DH算法:Diffie-Hellman算法应运而生。 DH算法是一个密钥协商算法,双...

  • Diffie-Hellman算法

    0x0 Diffie-Hellman介绍 Diffie-Hellman简称DH算法,用于密钥交换,两端使用相同p,...

  • 3.1 DH算法简介

    非对称加密算法 - DH算法 DH算法是非对称加密算法的鼻祖,为非对称加密算法奠定了基础,主要用途是进行密钥交换。...

  • Diffie-Hellman 密钥交换算法

    Diffie-Hellman 密钥交换算法 DH算法的特点是可以在非加密的传输线路上,交换好密钥,然后服务器客户端...

  • Java DH密钥交换及加解密

    描述 DH算法的作用:只能用于密钥的交换,而不能进行消息的加密和解密。密钥交换的过程:image.png具体步骤:...

  • JAVA实现非对称加密

    高级加密算法 双保险 公钥、私钥 DH(Diffie-Hellman)密钥交换算法 RSA - 基于因子分解 El...

  • 非对称加密算法

    扩展欧几里得算法 DH密钥交换 ECC椭圆曲线加密原理参考1 椭圆曲线密码学简介 椭圆曲线密码学的简单介绍 RSA...

  • 非对称加密解密:DH算法+RSA算法+ElGamal算法[小戴某

    非对称加密算法是一种基于密钥的保密方法,需要公开密钥和私有密钥,在文件加密、尤其是网银中应用广泛。 DH密钥交换算...

  • DH密钥交换算法学习

    what's Diffie–Hellman key exchange 维基定义: 是一种安全协议。它可以让双方在完...

网友评论

    本文标题:简要介绍DH密钥交换算法

    本文链接:https://www.haomeiwen.com/subject/kcchvxtx.html