淺淡古典密碼
我們這次聊一個比較古老又很神秘的東西---密碼。
可能很多人一聽到密碼就覺得它很神秘很煩瑣很無聊,其實密碼在我們的生活中十分的常見,而且十分的有用。比如你的銀行密碼,手機電腦開機密碼,QQ微信密碼等等。特別是在當今這個信息時代,密碼的安全性就顯得十分重要了。但有關專家表明,人們在設置密碼的時候其安全性太低或者說根本就沒有安全性。下面我們來看美國SplashData公司選出來的2016和2015美國人們最不安全的25個密碼,看有沒有你還在使用的密碼。
雖然是對美國人的密碼做的分析,但小編還是看到了以前自己用的密碼,比如123456。所以在此想對大家提個醒,密碼不要設的太簡單太隨意,在好記與安全之間尋找好一個平衡,還有一定要定期的更換密碼,像小編的話就是一個月換一次,你肯定想知道小編是如何記住這些密碼的,那就往下看,教你幾種密碼設置的方法。
在開始之前,小編還是想先來說個故事:
幾天前,小編和一高中同學通電話,他就跟我抱怨說,「你們理工科的人太會玩了。」我立馬感覺到這裡面有故事,久套他的話。最後了解到。事情是這樣的,我這哥們在一次大會上認識了個學計算機的妹子,想去追,千方百計要到了QQ號。回去聊天的時候,那女孩子告訴他要他明天晚上8點到「6c696272617279」去見她,然後就沒有任何消息了。看完之後我哥們的內心是崩潰的。
作為一個當初選擇了文科的他,我只能用此圖來描述他當時的表情。肯定不能去當面問,那怎麼辦呢?他便在各大論壇上求救,到處詢問,經過一翻折騰之後,終於找了答案,他說他那一宿沒睡好。在此我先不說答案。
我們來看張圖:
相信你已經知道了,答案就是library。至於後面,他們怎麼樣了,小編就不在此透露了,尊重個人隱私。反正,小編覺得這挺好玩的。
好了,開始我們的正題。
我們這次主要聊古典密碼,至於現代密碼學,以後再說。
先來學習下一些常用術語:
密鑰:分為加密密鑰和解密密鑰。
明文:沒有進行加密,能夠直接代表原文含義的信息。
密文:經過加密處理處理之後,隱藏原文含義的信息。
加密:將明文轉換成密文的實施過程。
解密:將密文轉換成明文的實施過程。
密碼演算法:密碼系統採用的加密方法和解密方法,隨著基於數學密碼技術的發展,加密方法一般稱為加密演算法,解密方法一般稱為解密演算法。
古典密碼編碼方法歸根結底主要有兩種,即置換和代換。
置換密碼
把明文中的字母重新排列,字母本身不變,但其位置改變了,這樣編成的密碼稱為置換密碼。最簡單的置換密碼是把明文中的字母順序倒過來,然後截成固定長度的字母組作為密文。例如:
明文:明晨5點發動攻擊。
MING CHEN WU DIAN FA DONG FAN GONG
密文:GNOGN AFGNO DAFNA IDUWN EHCGA IM
倒序的置換密碼顯然很弱。
我們對其做個改進:把明文按某一順序排成一個矩陣,其中不足部分用符號φ填充,而φ是明文中不會出現的一個符號。然後按另一順序選出的矩陣中的字母以形成密文,最後以固定長度的字母作為密文。例如:
明文:MING CHEN WU DIAN FA DONG FAN GONG
矩陣:MINGCH 寫入順序:按行 ENWUDI 選出順序:按列 ANFADO NGFANG ONGφφφ密文:MEANO INNGN NWFFG GUAAφ CDDNφ HIOGφ
由此看出矩陣的大小和選出順序不同可以得到不同的密碼,我們基於此我們再進一步改進。例如:
明文:MING CHEN WU DIAN FA DONG FAN GONG
密鑰:玉蘭花
YU LAN HUA去掉重複字母:YULANH 6 5 3 1 4 2矩陣:MINGCH 寫入順序:按行 ENWUDI 選出順序:數字順序 ANFADO NGFANG ONGφφφ密文:GUAAφ HIOGφ NWFFG CDDNφ INNGN MEANO
置換密碼比較簡單,經不起已知明文攻擊。我們只要把明文對照,便可以得出置換規律,便可以確定密鑰。但我們如果把它與其它技術相結合,可以得到十分有效的密碼。
代替密碼
代換密碼則是將明文中的字元替代成其他字元。代替密碼又叫代換密碼。按替代所使用的密文的字母表的個數可將代替密碼分為單表代替密碼,多表代替密碼和多名代替密碼。
1
單表代替密碼
下面介紹幾種典型的單表代替密碼:
(1)加法密碼
(2)乘法密碼
(3)仿射密碼
乘法密碼和加法密碼結合其來就是仿射密碼。
(4)密鑰詞語代替密碼
由置換密碼啟發,我們可以隨機選取一個片語或短語做密鑰,去掉重複字母,把結果作為矩陣的第一行,將剩餘字母依次寫入,按某一順序取出字母構成密文字母表。例如:
2
多表代替密碼
單表代替密碼容易破解,我們就想到了要用多表。其中最著名的就是16世紀法國密碼學者Vigenre使用過的Vigenre密碼,當然還有些其他密碼如Vernam密碼,Playfair密碼和Hill密碼等等。
Vigenre密碼:
Vigenre密碼的代替規則就是用明文在下面的矩陣的列和密鑰字母在矩陣的行的交點處的字母來代替明文的字母。
例如:
Vernam密碼:
Playfair密碼:
它依據一個5*5的正方形組成的密碼錶來編寫,密碼錶里排列有25個字母。如果一種語言字母超過25個,可以去掉使用頻率最少的一個。如,法語一般去掉w或k,德語則是把i和j合起來當成一個字母看待。英語中z使用最少,可以去掉它。例如:
若秘鑰為crazy dog
由此可編製成的密碼錶是:
若明文:where there is life,there is hope。將明文每兩個字母組成一對。如果成對後有兩個相同字母緊挨或最後一個字母是單個的,就插入一個字母X。可整理為wh er et he re is li fe th er ei sh op ex 。
然後對明文進行加密規則如下:
1. 若p1 p2在同一行,對應密文c1 c2分別是緊靠p1 p2 右端的字母。其中第一列被看做是最後一列的右方。如,按照前表,ct對應oc
2. 若p1 p2在同一列,對應密文c1 c2分別是緊靠p1 p2 下方的字母。其中第一行被看做是最後一行的下方。 3 .若p1 p2不在同一行,不在同一列,則c1 c2是由p1 p2確定的矩形的其他兩角的字母(至於橫向替換還是縱向替換要事先約好,或自行嘗試)。如,按照前表,wh對應tk或kt。
然後密文為:kt yg wo ok gy nl hj of cm yg kg lm mb wf
將密文變成大寫,然後幾個字母一組排列。
如5個一組就是KTYGW OOKGY NLHJO FCMYG KGLMM BWF
Hill密碼:
運用的是線性代數裡面的知識。基本思想就是將明文分組構成向量,然後選個矩陣,兩者相乘,得到密文。看個例子:
3
多名代替密碼
為了抵抗頻率分析攻擊,希望密文中不殘留明文字母的頻率痕迹,一種方法就是吧密文的頻率分布拉直。這就是多名代替密碼的出發點。我們看個例子。
例如我們把0到99這100數構成26個子集和,根據其整數的個數正比於相應英語字母的相對頻率。從而我們得到了下面這個表。
假如我們要加密:
明文:DATA SECURITY
密文:40 94 8 16 61 37 7 32 92 19 98 67
然後我們來看下古典密碼的統計分析
古典密碼統計分析
隨便閱讀一篇英文文獻,只要不是特別專門化,我們就可以得到以下統計規律
然後由此我們進一步統計就得到以下表格:
上面我們分析了單字母,我們在來看雙字母和三字母。
出現頻率最高的30個雙字母
出現頻率最高的20個三字母
同時我們還可以得到以下兩個結論:
1.英文單詞以E,S,D,T為結尾的超過一半
2.英文單詞以T,A,S,W為起始的字母約站一半。
這些統計規律對密碼的破解十分重要,同時又對密碼的加密提出了挑戰。
編輯不易,歡迎推廣
推薦閱讀: