1. 程式人生 > >密碼學_Diffine-Hellman祕鑰交換 2

密碼學_Diffine-Hellman祕鑰交換 2

開始本節之前先問個簡單問題: 加密技術屬於通訊協議模型裡的第幾層裡的應用? 答案:第六層表現層

 Diffine-Hellman祕鑰交換的過程大致如下: 先舉個情景例子

如果Alice 和 Bob 正在通訊,他們共享一個prime:q  和 integer:  α  (α<q) 以及α是q的本原根 (primitive root)

Alice 產生了一個私鑰XA,XA<q, Bob產生一個私鑰 XB,XB<q ,  Alice計算公鑰 YA=α^XA mod q , Bob計算公鑰 YB=α^XB mod q,

到這一步他們開始交換各自的公鑰,Alice得到共享祕鑰K=(YB)^XA mod q, Bob得到共享祕鑰 K=(YA)^XB mod q, 以上就是整個祕鑰交換的全過程. 

注:什麼叫本原根? b≡a^i mod p,  這裡 a 是b和 p的本原根

那演算法怎麼實現? 看下面

prime : q  和 α 是兩個公開的integer,也就是所有人都知道,如果上面的Alice 和 Bob 想交換祕鑰,那麼Alice 可以選擇一個隨機整數

XA<q (A是X的下標), 計算 YA=α^XA mod q, Bob也選擇一個隨機整數 XB<q, 計算 YB=α^XB mod q, 他們兩個人都不告訴對方 X, 也就是Alice不知道XB,Bob不知道XA,但這裡的YA和YB是什麼? 是公鑰,那麼既然是公鑰說明 YA,YB對與雙方都是知道的,是公開的,也就是這兩個公式裡只有XA、XB不知道,別的變數大家都是知道的.  好了,那繼續,Alice現在想產生自己的私鑰,K=(YB)^ XA mod q, Bob也想產生自己的私鑰 K=(YA)^XB mod q, 他們都是用對方的資訊產生自己的私鑰的,但他們產生的各自的私鑰結果其實是相同的,所以這個結果也就是共享祕鑰,但這個過程他們交換了什麼?交換的是各自的公鑰 YA,YB,以上就算完成祕鑰交換了!!!所以他們交換的祕鑰是指的什麼? 指的是公共祕鑰!!

那這個共享祕鑰一般幹什麼用的呢? 通常作為對稱密碼的祕鑰.   (公鑰加密不是不對稱的麼,為什麼這裡又說是作為對稱密碼的祕鑰呢?請自己先思考)

本節說的有點多請看第3節