1. 程式人生 > >用小學數學來看待ECDH演算法

用小學數學來看待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概述

  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演算法用在 資料校驗中是不安全的。  

如上哪裡要是說的不對的,都可以講出來,大家共同進步學習。