密碼學_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節