用小学数学来看待ECDH算法

来源:互联网 发布:windows账户格式 编辑:程序博客网 时间:2024/05/16 19:54

ECDH 是什么呢,就是一个算法,具体的概述什么的等下再说,先看如下的,一个例子:

10÷3=3.333333,如果结果用整数表示的话,结果就是3 但是还剩下一个 1是除不尽的,1就是余数

明白余数就在看下面的

   35184372088832(8^15) % 83=67

   9223372036854775808(8^21) % 83=18   

   上面的两行^的意思是次方的意思,%的意思就是取余,取余就是:

(35184372088832(8^15)-67) %83=(9223372036854775808(8^21)-18)%83

 我们把上面的8用 g代替,83用p代替

下来我们看下ECDH概述

  1. Alice 和 Bob 同意使用质数 p 和基础整数 g

    p = 83, g = 8

  2. Alice 选择机密整数 a = 9,然后向 Bob 发送 (g^a) mod p

    (8^9) mod 83 = 5

  3. Bob 选择机密整数 b = 21,然后向 Alice 发送 (g^b) mod p

    (8^21) mod 83 = 18

  4. Alice 计算 ( ( (g^b) mod p)^a) mod p

    (18^9) mod 83 = 24

  5. Bob 计算 ( ( (g^a) mod p)^b) mod p

    (5^21) mod 83 = 24

  6. 用对等式表达:(5^21) mod 83 =(18^9) mod 83(((8^9) mod 83)^21) mod 83 -24 = 0 =(((8^21) mod 83)^9) mod 83 -24假设:在知道上面3个值的情况下:我们只有左边或者右边的一个表达式,怎么样知道另外一个表达式呢有如下几种情况:第一种 我们知道 8 9 21 第二种 我们知道 8 9 24第三种 我们知道 8 21 24第四种 我们知道(8^9) mod 83的值 21 83第五种 我们知道(8^21) mod 83的值 9 83上面的五种情况我们随便知道一种情况 就可以计算出 另外一边的值

但是上面是在双方的值都没有一个固定的情况下。

现在在假设:我知道 8 83 是固定的。看如下表达式

( ( (8^a) mod 83)^b) mod 83= x = ( ( (8^b) mod 83)^a) mod 83

我只要知道任意两个值不就求出另外一个值了。

现在我们在说说ECDH算法在计算机中的实现,此处往下都是我个人的推测具体怎么实现了就不知道。。。。。

( ( (8^a) mod 83)^b) mod 83= x = ( ( (8^b) mod 83)^a) mod 83

假设:8是曲线 a是客户端的私钥,b是服务器的私钥,x是共享秘钥 (8^a) mod 83是客户端的私钥 ,b是服务器的私钥,x是共享秘钥b是客户端的私钥 ,(8^a) mod 83是服务器的私钥,x是共享秘钥 83是曲线 a是客户端的私钥,b是服务器的私钥,x是共享秘钥

................................等等就不一一列出来了

真正在客户端和服务器的数据校验中,我感觉,曲线是固定的 客户端的私钥也是固定的(版本更新替换的不算),共享秘钥一般是校验用的会出现在数据包中。 我个人感觉ECDH算法用在 数据校验中是不安全的。  

如上哪里要是说的不对的,都可以讲出来,大家共同进步学习。