密碼學發展簡史
密碼學早在公元前400多年前就已經産生,人類使用密碼的曆史幾乎與使用文字的時間一樣長,密碼學的發展大緻可以分為3個階段:
- 1949年之前的古典密碼學階段;
- 1949年至1975年密碼學成為科學的分支;
- 1976 年以後對稱密鑰密碼算法得到進一步發展,産生了密碼學的新方向—公鑰密碼學。1976 年,W.Diffie 和 M.Hellman 在發表的文章“密碼學的新方向”中首次公開提出了公鑰密碼( Public-key Cryptography) 的概念。公鑰密碼的提出實作了加密密鑰和解密密鑰之間的獨立,解決了對稱密碼體制中通信雙方必須共享密鑰的問題,在密碼學界具有劃時代的意義。
幾種常見的古典密碼
古典密碼學的曆史可以追溯到公元前400年,斯巴達人發明了“塞塔式密碼”,即把長條紙螺旋形地斜繞在一個多棱棒上,将文字沿棒的水準方向從左到右書寫,寫一個字旋轉一下,寫完一行再另起一行從左到右寫,直到寫完。解下來後,紙條上的文字消息雜亂無章、無法了解,這就是密文,但将它繞在另一個同等尺寸的木棒上後,就能看到原始的消息。這是最早的密碼技術。
大陸古代也早有以藏頭詩、藏尾詩、漏格詩及繪畫等形式,将要表達的真正意思或“密語”隐藏在詩文或畫卷中特定位置的記載,一般人隻注意詩或畫的表面意境,而不會去注意或很難發現隐藏其中的“話外之音”。如《水浒傳》中梁山為了拉盧俊義入夥,“智多星”吳用和宋江便生出一段“吳用智賺玉麒麟”的故事來,利用盧俊義正為躲避“血光之災”的惶恐心理,口占四句卦歌,其中暗藏“盧俊義反”四字。結果,成了官府治罪的證據,終于把盧俊義“逼”上了梁山。
蘆花叢中一扁舟
俊傑俄從此地遊
義士若能知此理
反躬難逃可無憂
更廣為人知的是唐伯虎寫的“我愛秋香”:
我畫藍江水悠悠
愛晚亭上楓葉愁
秋月溶溶照佛寺
香煙袅袅繞經樓
古典密碼學更像是一門藝術,其核心手段是代換和置換。代換是指明文中的每一個字元被替換成密文中的另一個字元,接收者對密文做反向替換便可恢複出明文;置換是密文和明文字母保持相同,但順序被打亂。
代換密碼的著名例子有古羅馬的凱撒密碼(公元前1世紀)和法國的維吉尼亞密碼(16世紀)。凱撒密碼是對字母表中每個字母用它之後的第k個字母來代換,如,将“comeatnine”加密為“htrjfysnsj”(k=5)。但這種加密方式無法掩蓋各字母的頻率特征,易被破解。維吉尼亞密碼相比之下提升了安全性,它的密鑰通常是一個單詞,如,“hear”,對于上述明文“comeatnine”,加密時将第1個字母後移8位(密鑰“hear”的第一個字母h處于字母表第8位),第2個字母後移5位(密鑰的第二個字母e處于字母表第5位),……,是以加密後的結果是“jsmvhxnzui”。
我們大家應該都看過抗戰片,裡面發封包的時候發的是密文,這個密文會對應一個密碼本,比方說《三國演義》這本書。它的加密方式會告訴你加密的文字屬于書中的那個字,當你解密完成之後,就可以得到明文的封包。這是一種常見的古典加密方法。
1.滾桶密碼
為了保證通信資訊的密碼性,古希臘人通過使用一根叫scytale的棍子,将資訊進行加密。送信人先将一張羊皮條繞棍子螺旋形卷起來,然後把要寫的資訊按某種順序寫在上面,接着打開羊皮條卷,通過其他管道将信送給收信人。如果不知道棍子的粗細是不容易解密裡面的内容的,但是收信人可以根據事先和寫信人的約定,用同樣的scytale的棍子将書信解密。下面是一個例子:
密文:經大們的意日那方過家參名被的些式短啟觀字埋涼投進暫程了和在風奔行的去一生教吹他着歡一個前堂來的溝迎家大從裡,靈通儀中教事,庭魂。式國堂的是院就後餐。職因裡在,館圍業為的風一吃繞。據古中本飯着副說樹,正。一市這沙和經途個長樣沙一的中天說他作群市。井們響不長副的那死,信公市石底後讓神幹長闆下的人的去先路埋位惬中了生上着置意國,又,死離,人愛興許人上也用開緻多。帝讓一玩勃石人最人種笑勃闆們近覺超的地上之。得越市帶刻所一上語長領着以陣帝言和我人願夏和的
經過滾筒解密後的明文如圖示:
2.掩格密碼
16世紀米蘭的實體學和數學家Cardano發明的掩格密碼,可以事先設計好方格的開孔,将所要傳遞的資訊和一些其他無關的符号組合成無效的資訊,使截獲者難以分析出有效資訊。
3.棋盤密碼
我們可以建立一張表,使每一個字元對應一數 , 是該字元所在行标号, 是列标号。這樣将明文變成形式為一串數字密文。
4.凱撒(Caesar)密碼
在羅馬帝國時期,凱撒大帝曾經設計過一種簡單的移位密碼,用于戰時通信。這種加密方法就是将明文的字母按照字母順序,往後依次遞推相同的字母,就可以得到加密的密文,而解密的過程正好和加密的過程相反。
原理:把一個字母替換為它後面固定位置的另一個字母(單表代換密碼)。
A B C D E F G …… X Y Z
D E F G H I J …… A B C
明文:Caesar cipher is a shift substitution
密文:FDHVDU FLSKHU LV D VKLIW VXEVWLWXWLRQ
5.弗納姆密碼
1918年Gilbert Vernam 為AT&T設計的一種一次一密亂碼本密碼(多表代換密碼)。原理:使用一個任意長的不重複數字序列,把它和明文組合在一起。
明文: V E R N A M C I P H E R
等價數字:21 4 17 13 0 12 2 8 15 7 4 17
+随機數: 76 48 16 82 44 3 58 11 60 5 48 88
和mod26: 19 0 7 17 18 15 8 19 23 12 0 1
密文: t a h r s p i t x m a b
6.圓盤密碼
人們對凱撒密碼進一步改善,隻要将字母按照不同的順序進行移動就可以提高破解的難度,增加資訊的保密程度。如15世紀佛羅倫薩人Alberti發明圓盤密碼就是這種典型的利用單表置換的方法加密的方法。如圖在兩個同心圓盤上,内盤按不同(雜亂)的順序填好字母或數字,而外盤按照一定順序填好字母或數字,轉動圓盤就可以找到字母的置換方法,很友善的進行資訊的加密與解密。凱撒密碼與圓盤密碼本質都是一樣的,都屬于單表置換,即一個明文字母對應的密文字母是确定的,截獲者可以分析對字母出現的頻率,對密碼體制進行有效的攻擊。Alberti的圓盤理論是古典密碼學的主要代表之一, 在粘土圓盤的表面刻上帶有空格的字母, 成為最初人類的加密方式, 這種方式至今還無人能破戒。
7.維吉尼亞密碼
為了提高密碼的破譯的難度,人們有發明一種多表置換的密碼,即一個明文字母可以表示為多個密文字母,多表密碼加密算法結果将使得對單表置換用的簡單頻率分析方法失效,其中維吉尼亞密碼就是一種典型的加密方法。維吉尼亞密碼是使用一個詞組(語句)作為密鑰,詞組中每一個字母都作為移位替換密碼密鑰确定一個替換表,維吉尼亞密碼循環的使用每一個替換表完成明文字母到密文字母的變換,最後所得到的密文字母序列即為加密得到的密文。維吉尼亞是古典密碼理論發展上的一個重要裡程碑,他的理論又被稱為多字母編碼。
m個移位代換表由m個字母組成的密鑰字确定
明文:w e a r d i s c o v e r e d s a v e
密鑰:d e c e p t i v e d e c e p t i v e
對應數字:3 4 2 15 19 8 21
密文:Z I C V T WQNGRZGVTWAVZH
8.換位密碼(置換密碼)
換位就是将明文中的字母的位置重排。最簡單的換位就是逆序法:
明文:computer system
密文:metsys retupmoc
列置換(縱行換位):把明文中的字元按列重新排列。例如:
明文:THIS IS A MESSAGE.
T H I S I
S A M E S
S A G E X
密文:TSSHAAIMGSEEISX
更新引入密鑰“k”:
如k=COMPUTER,明文為:WHAT CAN YOU LEARN FROM THIS BOOK
密文為:WORO NNSX ALMK HUOO TETX YFBX ARIX CAHX
9.Enigma(英格碼)轉輪組的加密
Enigma轉輪組的加密原理,正是多表替代——它通過不斷改變明文和密文的字母映射關系,對明文字母們進行着連續不斷的換表加密操作。三個轉子不同的方向組成了262626=17576種不同可能性;三個轉子間不同的相對位置為6種可能性;連接配接闆上兩兩交換6對字母的可能性數目非常巨大,有100391791500種;于是一共有175766100391791500,大約為10000000000000000,即一億億種可能性。當時一台Enigma轉輪組的加密24萬人民币。
20世紀30年代上司波蘭密碼學家率先對德國使用的Enigma密碼進行了系統性的研究和破譯。在破譯過程中,雷耶夫斯基首次将嚴格的數學化方法應用到密碼破譯領域,這在密碼學的曆史上是一個重要成就。雷耶夫斯基等人在二戰期間破譯了大量來自德國的資訊,他們的工作成為整個二戰期間盟國破譯德軍Enigma密碼的基礎。雷耶夫斯基與波蘭數學家傑爾茲·羅佐基和亨裡克·佐加爾斯基并稱為密碼研究領域的“波蘭三傑”。