Diffie-Hellman(迪菲-赫尔曼)秘钥交换协议

1. 协议背景

        对称密码体制:

                Bob利用对称密钥K对信息进行加密并将加密结果发送给Alice,Alice收到信息之后,用同样的密钥进行解密。

        问题1:Alice是如何知道对称密钥K的?------即,Bob首先需要将对称密钥K发送给Alice,Alice才能对信息进行解密。即:通信双方需要达成共识,也就是用什么样的秘钥进行加密。

        由此推出:传递信息的前提是需要关于密钥达成共识,也就是传递密钥。

       问题2:Diffile-Hellman未出现之前,即以往传递密钥采用什么样的方式?

        (1)主要通过物理手段进行秘钥的传递,例如书信?等

        问题(3)采用物理手段传递密钥有什么风险?

举例:假设采用书信的方式去传递密钥,那么会面临,首先是 书信可能会丢,其次,快递员如果打开书信就可以直接获取到密钥。显然不安全,极其容易被人截获。那么一旦秘钥被掌握,信息也就没有隐私可言。

        问题(4)在不可信的环境下,如何实现密钥的传递?

                答:Diffie-Hellman 秘钥交换。

        1976年-Diffie-Hellman 在《New Direction in Cryptography》密码学新方向 论文中,提出秘钥交换协议,首次提出所谓的公钥思想。也为后面公钥密码体制的提出奠定了基础。(注:对称密钥面临最大的问题其实就是密钥分发。

2. 秘钥交换协议详解

****************************************************************************************

2.1  数学基础(参考至抽象代数(近视代数))

       2.1.1 简要了解(抽象代数的历史)

         我们都知道一次,二次,三次,四次代数方程存在根式解

那么五次及以上是否存在根式解?(1)

即:抽象代数最初就是为了研究这个问题产生的一门学科。

如何一步一步对上述问题展开 研究的?

 &阶段1:

(1)欧拉  1707-1783

   (2) 拉格朗日 1736-1813

(3)数学王子-高斯  1777-1855

(1)(2)(3)这个阶段,做出的贡献就是证明了五次及以上代数方程不存在根式解。

&阶段2

(4)阿贝尔 Abel 1802-1829   除了证明五次及以上代数方程不存在根式解,之外,还找出一类特殊方程可用根式解。 例如:ax^{5}+b=0  很显然,是存在根式解的。

在数学中,一个问题有没有被彻底解决,最终看的 是否完成了充要条件。

********(5)伽罗瓦  一些理论彻底解决了这个问题,即 充要条件。

********************************************************************************************************

        2.1.2 模运算 (求余运算)

         理解同余的概念   模n同余

        2.1.3 本原根

                如果使得a^m≡1 mod n成立的最小正幂m满足m=φ(n),则称a是n的本原根。 其中φ(n)为欧拉函数。

       2.1.4 欧拉定理:

                若正整数n和整数a互质,那么就有,a^{\varphi (n)} \equiv 1(modn)

其中欧拉函数φ(n)是小于n的正整数中和n互质的数的个数。

例如   n=17 那么欧拉函数 φ(n)等于多少?

 附加:

        密码学三大数学困难问题

1:大素数分解问题 
(1) 给定两个素数p,q,计算乘积p·q=n很容易;
(2) 给定大整数n,求n的素因素p,q使得n=p·q非常困难.
   应用  RSA算法

2:离散对数难题

        已知有限循环群G={g∧k∣k=0,1,2,…}及其生成元g和阶n=∣G∣.
(1)给定整数a,计算元素g∧a=h很容易;
  (2) 给定元素h,计算整数x,0≤x≤n,使得g∧x=h非常困难

3:椭圆曲线上的离散对数问题

        已知有限域F_p上的椭圆曲线点群
E(F_p)={(x,y)∈F_p×F_p∣y²=x³+ax+b,a,b∈F_p}∪{O},
点P=(x,y)的阶为一个大素数.
(1)给定整数a,计算整数x,使得xP=(x_a,y_a)=Q很容易;
(2) 给定点Q,计算整数x,使得xP=Q非常困难. 

注:在椭圆曲线上定义群的加法

2.2  协议(算法)流程

        1:Alice随机选择两个大素数p,n再次随机选择一个数x

        2: Alice通过运算生成一个数p     p=a^{x}modn

Alice将a,n p 发送给Bob

        3: Bob随机选择一个数y,计算q      q=a^{y}modn

Bob将 计算计算出的q 发送给Alice

                密钥  Key1=q^{x}modn^{}     Key2=p^{y}modn

                                        Key1=Key2

                证明如下:(交换律)

                        Key1=q^{x}modn=(a^{y})^{x}modn=a^{yx}modn

                       Key2=p^{y}modn=(a^{x})^{y}modn=a^{xy}modn

 分析:

        (1)p=a^{x}modn

上述公式中,已知a,p求解x是困难的。(著名的离散对数问题)

缺点:DH秘钥交换算法容易遭到中间人攻击

如何实现中间人攻击?

         既然存在中间人攻击,后人肯定会对其进行改造。--------》Oakley算法

你可能感兴趣的:(3.0,红队特训营,python)