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概述
Alice 和 Bob 同意使用质数 p 和基础整数 g:
p = 83, g = 8
Alice 选择机密整数 a = 9,然后向 Bob 发送 (g^a) mod p:
(8^9) mod 83 = 5
Bob 选择机密整数 b = 21,然后向 Alice 发送 (g^b) mod p:
(8^21) mod 83 = 18
Alice 计算 ( ( (g^b) mod p)^a) mod p:
(18^9) mod 83 = 24
Bob 计算 ( ( (g^a) mod p)^b) mod p:
(5^21) mod 83 = 24
用对等式表达:(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算法用在 数据校验中是不安全的。
如上哪里要是说的不对的,都可以讲出来,大家共同进步学习。