|
三、狄飛、赫爾曼、麥克兒(Diffie, Hellmon, Merkle)法 |
此法是由上列三位電機工程師兼數學家(科學本是一家,觸類旁通,稱他們是什麼家並不正確,也不重要),
在1976及1978年所發表的方法。在此方法中,所有的信號必須寫成二進位的形式,
例如前面的我字代碼3314,若以二進位表示則為
即
110011110010
我們將任何一位信號分成許多段,每段含n個0與1的數,即(x1,x2,…,xn),以下是本密碼法的收發程序(參看圖1)
- 1.由收報者秘密的取一組滿足定理2.4的正整數列(a1,a2,…,an)及任一大於
的質數m,及另一數w,令
- 2.(公開)發出(a10,a20,…,an0)給發報者(敵方可以知道)
- 3.發報者用a10,a20,…,an0與要發的0,1信號x1,x2,…,xn,求出
並將c0之值告訴發報者(敵方可以知道c0)
- 4.收報者收到c0之後,可以解出原信號x1,x2,…,xn(而敵方卻不容易用已知的a10,a20,…,an0及c0解出信號,原因馬上會談到)。
圖1 在此種操作中,敵方僅知(a10,…,an0)及 c0,而發方除了自己的信號外並不比敵方多知道什麼密碼的機密;只有發方完全掌握了解碼的方法。
|
我們先看收方如何解出xi,由定理2.2之系可知存在一且
(mod m)若將收到之信號方程式兩邊乘以θ可使
變成
但
故令
(3.2)即成為
因
,上式與c=x1a1+x2a2+… +xnan相同,根據定理2.4之說明,一下子就可以解出x1,x2,…,xn可是敵方在整個的過程中知道(3.1)之關係,因ai0並不見得是一個有ai那樣規則的數列,到目前為止只有硬試一途,即
等一個一個的試,對小的n這並不難,但對大的n而言,譬如說n=1000(這並不是一個很長的信號),則平均要試21000-1=10301次才可以解開,這是一個天文數字,若電腦在一秒鐘內可以做一百萬次檢驗(目前尚辦不到) ,則一年只可以做
3.15 x 1013檢驗,那麼要解開(3.1)需要10288年,前面談過地球的年齡不過5 x 109年而已,我們且舉一個簡單的例子。
- 例:令n=5,(a1,a2,a3,a4,a5)=(1,3,6,12,25),w=13,m=51,則收方發出的密碼法(a10,a20,a30,a40,a50)分別為
這即是發報者收到的作密碼的a0,假定發方所要發的情報是10101,則因
c0=13+27+19=59
故收方所收到的密碼是59,要解開此碼,收方先得找到θ使
(mod 51)。用輾轉相除法很快得到θ=4,故收方所要解的是
即
32=x1+3x2+6x3+12x4+25x5=1+6+25
即原信號為10101,至於敵方所要解的是
59=13x1+39x2+27x3+3x4+19x5
這自然不算太難,但我們可以看見 ai0 失去了任何規則,當 n 很大時就不容易解開了。
|
|
|