用小學數學來看待ECDH演算法
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
但是上面是在雙方的值都沒有一個固定的情況下。
現在在假設:我知道 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演算法用在 資料校驗中是不安全的。
如上哪裡要是說的不對的,都可以講出來,大家共同進步學習。