DH密钥交换和ECDH原理

 原文 http://blog.csdn.net/sudochen/article/details/9164427

下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。

1,Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。

2,Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。

下面是DH交换的过程图:

本图片来自wiki

下面我们进行一个实例

1.爱丽丝与鲍伯协定使用p=23以及g=5.

2.爱丽丝选择一个秘密整数a=6, 计算A = g^a mod p并发送给鲍伯。  

A = 5^6 mod 23 = 8. 

3.鲍伯选择一个秘密整数b=15, 计算B = g^b mod p并发送给爱丽丝。  

B = 5^15 mod 23 = 19. 

4.爱丽丝计算s = B a mod p  

19^6 mod 23 = 2. 

5.鲍伯计算s = A b mod p  

8^15 mod 23 = 2. 


ECDH密钥交换:

ECDH:

       ECC算法和DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。交换双方可以在不共享任何秘密的情况下协商出一个密钥。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解Q=kP很容易;给定一个点P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。密钥磋商过程:

假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

1) Alice生成随机整数a,计算A=a*G。 #生成Alice公钥

2) Bob生成随机整数b,计算B=b*G。 #生产Bob公钥

3) Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。

    由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。

4) Bob将B传递给Alice。同理,B的传递可以公开。

5) Bob收到Alice传递的A,计算Q =b*A#Bob通过自己的私钥和Alice的公钥得到对称密钥Q

6) Alice收到Bob传递的B,计算Q`=a*B#Alice通过自己的私钥和Bob的公钥得到对称密钥Q'

Alice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q' (交换律和结合律),即双方得到一致的密钥Q。

        目前Openssl里面的ECC算法的套件支持是ECDSA/ECDH。在国密的SSL套件中,可以使用ECDSA/ECC(密钥加密传输),ECDSA/ECDH(密钥磋商)两种套件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PBKDF2是什么? PBKDF2(Password-Based Key Derivation Function)...
    Fitz_Lee阅读 2,270评论 0 0
  • DH算法原理 DH 是 Diffie-Hellman的首字母缩写,是Whitefield与Martin Hellm...
    spyder_men阅读 4,696评论 0 0
  • 一、准备知识 在开始介绍前,需要首先了解一下消息摘要、数字签名、数字证书的知识 1、消息摘要 - Message ...
    浪够_阅读 2,765评论 1 2
  • 一言半句便通玄,何用丹经千万篇?人若不为形所累,眼前便是 大罗天。若要炼形炼神,须识归根复命。所以道:“归根自有归...
    地中海的传说阅读 2,070评论 1 1
  • 大概喜欢你是我犯得最大的一个错了,把自己折磨成现在这个样子,我有时候很烦,不想谈恋爱不想结婚,但我觉得我可能应该静...
    sunshineghfg阅读 210评论 0 0