希爾密碼

希爾密碼

希爾密碼(Hill Cipher)是運用基本矩陣論原理的替換密碼,由Lester S. Hill在1929年發明。每個字母當作26進制數字:A=0, B=1, C=2... 一串字母當成n維向量,跟一個n×n的矩陣相乘,再將得出的結果MOD26。

基本介紹

  • 中文名:希爾密碼
  • 外文名:Hill Cipher
  • 原理:基本矩陣論
  • 類別:替換密碼
  • 提出者:Lester S. Hill
  • 提出時間:1929年
簡介,產生原因,原理,加密,解密,安全性分析,例子,

簡介

希爾密碼是運用基本矩陣論原理的替換密碼,由Lester S. Hill在1929年發明。
每個字母當作26進制數字:A=0, B=1, C=2... 一串字母當成n維向量,跟一個n×n的矩陣相乘,再將得出的結果模26。
注意用作加密的矩陣(即密匙)在
必須是可逆的,否則就不可能解碼。只有矩陣的行列式和26互質,才是可逆的。

產生原因

隨著科技的日新月異和人們對信用卡、計算機的依賴性的加強,密碼學顯得愈來愈重要。密碼學是一門關於加密和解密、密文和明文的學科。若將原本的符號代換成另一種符號,即可稱之為廣義的密碼。狹義的密碼主要是為了保密,是一種防止竊文者得知內容而設的另一種符號文字,也是一般人所熟知的密碼。
使用信用卡、網路賬號及密碼、電子信箱、電子簽名等都需要密碼。為了方便記憶,許多人用生日、電話號碼、門牌號碼記做密碼,但是這樣安全性較差。
為了使密碼更加複雜,更難解密,產生了許多不同形式的密碼。密碼的函式特性是明文對密碼為一對一或一對多的關係,即明文是密碼的函式。傳統密碼中有一種叫移位法,移位法基本型態是加法加密系統C=P+s(mod m)。一般來說,我們以1表示A,2表示B,……,25表示Y,26表示Z,以此類推。由於s=0時相當於未加密,而0≤s≤m-1(s≥m都可用0≤s≤m-1取代),因此,整個系統只有m-1種變化。換言之,只要試過m-1次,機密的信息就會泄漏出去。
由此看來,日常生活中的密碼和傳統的密碼的可靠性較差,我們有必要尋求一種容易將字母的自然頻度隱蔽或均勻化,從而有利於統計分析的安全可靠的加密方法。希爾密碼能基本滿足這一要求。

原理

希爾加密算法的基本思想是,將d個明文字母通過線性變換將它們轉換為d個密文字母。解密只要作一次逆變換就可以了,密鑰就是變換矩陣本身。
希爾密碼是多字母代換密碼的一種。多字母代換密碼可以利用矩陣變換方便地描述,有時又稱為矩陣變換密碼。令明文字母表為Z,若採用L個字母為單位進行代換,則多碼代換是映射f:Z→Z。若映射是線性的,則f是線性變換,可以用Z上的L×L矩陣K表示。若是滿秩的,則變換為一一映射,且存在有逆變換K。將L個字母的數字表示為Z上的L維矢量m,相應的密文矢量c,且mK=c,以K作為解密矩陣,可由c恢復出相應的明文c·K=m。
在軍事通訊中,常將字元(信息)與數字對應(為方便起見,我們將字元和數字按原有的順序對應,事實上這種對應規則是極易被破解的):
abcde…x y z
12345…242526
如信息“NOSLEEPPING”對應著一組編碼14,15,19,12,5,5,16,16,9,14,7。但如果按這種方式直接傳輸出去,則很容易被敵方破譯。於是必須採取加密措施,即用一個約定的加密矩陣K乘以原信號B,傳輸信號為C=KB(加密),收到信號的一方再將信號還原(破譯)為B=KC。如果敵方不知道加密矩陣,則很難破譯。

加密

第一步,設定加密矩陣為K=112-120113,即在希爾密碼中設q=26,L=3,選取滿秩3×3階可逆矩陣。我們之所以取3×3可逆方陣,也是為了計算方便,相應的安全性就要低一些。
第二步,將信息14,15,19,12,5,5,16,16,9,14,7分為4個列矩陣:X1=141519,X2=1255,X3=16169,X4=1470,其中X中的“0”是虛設的,其目的是為了與列矩陣的行數一致。列矩陣的行數3和個數4完全依賴於加密後的信息所對應的數字的多少和加密矩陣階數決定。
第三步,將信息加密。進行矩陣的乘法運算:Y1=KX1=112-120213141519=6716100;Y2=KX2=112-1202131255=27-244;Y3=KX3=112-12021316169=501675;Y4=KX4=112-1202131470=21035。加密後的新碼為67,16,100,27,-2,44,50,16,75,21,0。Y中的35雖然是多餘的信息,但要連同密碼一起發給對方,對方在破解密碼時要參與計算。

解密

第一步,求密匙矩陣K的逆矩陣。K可用Mathematica計算。即K=-614-3125-1-3。
第二步,再次進行矩陣乘法運算:X1=-614-3125-1-3671610=141519;X2=-614-3125-1-327-244=1255;X3=-614-3125-1-3501675=16169;X4=-614-3125-1-321035=1470。這樣原來的信息編碼為14,15,19,12,5,5,16,16,9,14,7。
第三步,對照編碼表,即可獲得對方發來的信息內容為“NOSLEEPPING”。

安全性分析

不難看出,希爾密碼算法中有兩個非常重要的條件。第一個條件是字元(信息)與數字對應表,當加密矩陣的階數n(本文實例中的加密矩陣的階數n=3)越大,破譯的難度就會增大,此時計算量也大,我們可以藉助有關數學軟體如Mathematica提高運算效率。第二個條件是加密矩陣,如何定義、求解這個矩陣對於密碼的加密和破譯至關重要。
從破譯密碼的角度來看,傳統的密碼有一個致命弱點,就是破譯者可從統計出來的字元頻率中找到規律,進而找出破譯的突破口,尤其是在計算機技術高度發達的今天,破譯的速度更快。希爾密碼算法則完全克服了這一缺陷,它通過採用線性代數中的矩陣乘法運算和逆運算,能夠較好地抵抗頻率分析,很難被攻破。
希爾密碼體系為破譯者至少設定了三道關口,加大了破譯難度。破譯希爾密碼的關鍵是猜測文字被轉換成幾維向量(列矩陣的行數)、所對應的字母表是怎樣排列的,更為重要的是要設法獲取加密矩陣A。要破解密碼,向量的維數、字母的排列表和加密矩陣三者缺一不可。古今中外的諜報戰中,敵對雙方總是千方百計地獲取破解對方密碼的鑰匙,但要想獲取希爾密碼的三把鑰匙談何容易。
世界上沒有攻不破的密碼,希爾密碼也不例外。希爾密碼算法的缺點在於線性變換的安全性很脆弱,易被攻擊擊破,黑客正是利用各種密碼的弱點來向用戶頻頻發起攻擊的。儘管如此,希爾密碼仍不失為一種簡便高效的密碼。

例子

考慮訊息ACT,因為A=0,C=2,T=19,訊息是:
設密匙為
確認它是可逆的:
加密過程:
對應的密文便是“POH”。
假設對方知道密文密匙,首先找出密匙的逆矩陣
將逆矩陣和密文相乘:
便得到“ACT”。

相關詞條

熱門詞條

聯絡我們