- Java加密與解密的藝術(第2版)
- 梁棟
- 309字
- 2018-12-31 23:24:39
第2章
企業應用安全的銀彈—密碼學
通過對第1章內容的學習,我們基本了解了這枚解決企業應用安全的銀彈—密碼學。密碼學并不是最近才興起的新學科,它的歷史最早可以追溯到幾千年以前,而且古今中外都有密碼學運用的記載。在《破譯者》一書中戴維·卡恩曾說過:“人類使用密碼的歷史幾乎與使用文字的時間一樣長”。在經歷戰火的洗禮,步入現代以后,計算機科學與數學應用科學的快速發展,促進了密碼學的進步。密碼學成為應對計算機系統安全問題當之無愧的安全衛士,它廣泛應用于計算機與網絡安全領域,并逐步進入我們的日常生活:自動柜員機芯片卡、公交IC卡、電子商務等等,都是密碼學應用的實例。計算機科學的迅速發展,使得密碼學在我們的生活中變得越來越重要。
2.1 密碼學的發家史
可以這么說,密碼學是靠著戰爭發家的。自從有了戰爭,就有了密碼學的應用環境。在戰爭中,對陣雙方要保護自己的通信安全并竊取、破譯對方的情報,于是就有了密碼學。用著名的密碼學專家羅納德·李維斯特(Ronald L. Rivest)的話說,“密碼學是關于如何在敵人存在的環境中通信”。縱觀密碼學的發展歷程,我們大體可以將其分為三個階段,即手工加密階段、機械加密階段和計算機加密階段。
2.1.1 手工加密階段
密碼學很早就廣泛應用于古代戰爭中,使用手工方式完成加密操作,以確保戰爭中軍事信息的秘密傳送,這一階段稱為手工加密階段。這一階段是古典密碼學蓬勃發展的時期,稱為古典加密階段。
周朝兵書《六韜·龍韜》中記載了公元前1000年左右,即武王伐紂時期,周朝著名軍事家姜子牙為戰時通信制定的兩種軍事通信密碼:陰符和陰書。陰符是使用雙方在通信前事先制造的一套尺寸不等、形狀各異的“符”,共八種,每種都代表一定的意義,只有通信雙方知道。陰符可算是密碼學中的替代法。陰書是在陰符的基礎上繼續發展而來的,它應用“一合而再離,三發而一知”的理論,也就是密碼學中的移位法。將一份完整的軍事文書一分為三,分三人傳遞,必須要把三份文書重新合并后才能獲得完整的軍事信息。即使途中一人或二人被捕,也不至于暴露軍事機密。
公元前480年,波希戰爭。波斯大量軍隊秘密集結,意圖對雅典和斯巴達發動一次突襲。恰逢希臘人狄馬拉圖斯(Demaratus)在波斯的蘇薩城內看到了這次集結,于是他在木板上記錄了波斯突襲希臘的意圖,然后用蠟把木板上的字封住。這塊木板就這樣在蠟封的掩蓋下送到了希臘,最終使得波斯海軍覆沒于雅典附近的薩拉米灣,這就是著名的薩拉米灣海戰。
公元前404年,斯巴達征服希臘。斯巴達在波斯帝國的幫助下,征服了希臘。斯巴達北路軍司令萊薩德還沒來得及慶祝就接到密探送來的信函。萊薩德接過密探的腰帶,將其纏繞在斯巴達密碼棒(Scytale)上,得知波斯帝國意圖吞并他的城池。萊薩德當機立斷,成功反擊了波斯帝國的進攻。斯巴達密碼棒實際上是一個指揮棒,將羊皮紙卷在密碼棒上,把要保密的信息寫在羊皮紙上。由上述“腰帶”的含義可知,羊皮紙沿卷軸繞行方向做了切割,切割后的羊皮紙上的信息雜亂無章,信息得以加密。
公元前100年,高盧戰爭。羅馬帝國的凱撒大帝(Caesar)使用以自己的名字命名的密碼—凱撒密碼,對重要的軍事信息進行加密,這是一種簡單的單字母替代密碼,屬于替代法。在當時,凱撒的敵人大多數是目不識丁的,對于這種“移形換位”大法,可謂是根本不知所云。凱撒密碼的加密強度,在當時來看是相當有效的。
公元1040年,北宋時期。火藥鼻祖曾公亮(999—1078年)與北宋文字訓詁學家丁度(990—1053年)等奉敕集體編撰了《武經總要》,共40卷,該書詳細記載了中國古代已知的軍事情報通信密碼。其中,收集了軍隊中常用的40種戰斗情況,編成40條短語,分別編碼產生密碼本。這套密碼的使用方法是,由軍事部門指定一首沒有重復字的五言律詩(40字),作為解密密鑰。詩中的每個字都與短語一一對應,短語順序在戰前臨時隨機排列。密碼本由戰時前后兩方高級將領保管,前后方通過該密碼本進行戰時通信。
公元1578年,瑪麗女王被伊麗莎白女王軟禁,安東尼·貝平頓(Anthony Babington)及其同黨意圖營救。英國人菲力普·馬尼斯(Philip van Marnix)利用頻度分析法,成功破解了安東尼發給瑪麗的密碼信。信件除了包括營救瑪麗女王的計劃外,還計劃行刺伊麗莎白女王。因為信件的破解才得以將安東尼及其同黨一舉抓獲,審判并處死了瑪麗女王。
2.1.2 機械加密階段
19世紀末至20世紀初,工業革命促進了機械和機電技術的發展,密碼學進入機械加密階段。工業革命為密碼學的發展提供了基礎,世界大戰的爆發為密碼學的飛躍提供了契機。
在第一次世界大戰中,密碼分析有了重大突破,它是戰爭能否取得勝利的重要決定因素之一;在第二次世界大戰中,密碼學經歷了它的黃金時代,在戰爭中扮演了更重要的角色。
1.第一次世界大戰
19世紀末,無線電技術的發明和使用使通信工具發生了革命性的變革。由此產生了以密碼技術為核心的包括偵察、測向、信號分析、通信分析等一整套無線電信號偵察以及對抗這種偵察的信號保密技術。軍事電報的加密與破解成為同盟國與協約國之間成敗的關鍵。
1914年8月,俄國在芬蘭灣口擊沉德國“馬格德堡”輕巡洋艦,在德國軍艦殘骸里,俄國潛水員意外發現了一份德國海軍的密碼本,并將其提供給英國,使英國人輕而易舉地破譯了德國海軍的無線電密碼。1916年5月30日下午,英國情報部門憑借截獲的德國海軍無線電密碼,破譯德國海軍電報,日德蘭海戰以英國皇家海軍勝利告終。
1917年1月16日,德意志帝國外交秘書阿瑟·齊默爾曼向德國駐墨西哥大使亨尼希·馮·艾克哈爾特(Heinrich von Eckardt)發出一份加密電報—齊默爾曼電報,電報內容建議墨西哥與德意志帝國結成對抗美國的軍事聯盟。在這個緊要關頭,電報內容被英國破譯密碼的專門機構“40號房間”所截獲,利用繳獲的德國密碼本破譯了電報的內容,此次事件被稱為“情報史上最偉大的密碼破譯事件”。“齊默爾曼電報”的破譯,促使美國放棄中立而直接參戰,改變了戰爭進程。
2.第二次世界大戰
20世紀初,機械及機電技術的快速發展,加速了密碼設備的變革,最具代表性的就是轉輪密碼機的發明。轉輪密碼機的出現是密碼學的重要標志之一,促進了傳統密碼學的進展,提高了機密系統的加密復雜度。轉輪密碼機Enigma(別名“謎”或恩尼格瑪密碼機)的出現,成為密碼學界劃時代的豐碑。德國發明家亞瑟·謝爾比烏斯(Arthur Scherbius)發明了Enigma;波蘭數學家馬里安·雷耶夫斯基(Marian Rejewski)初步破解了簡單的Enigma;而英國數學家阿蘭·圖靈(AlanTuring)
徹底終結了最高難度的Enigma。
1941年12月8日,美國對日本宣戰。在整個太平洋上,美軍與日軍展開了全面的島嶼爭奪戰。在電影《風語者》中,日軍因成功破解美軍軍事通信密碼,占據戰場上的優勢,極大地阻礙了美軍前進的步伐。1942年,美軍征召納瓦霍人(Navajo,美國最大的印第安部落)加入海軍,并訓練他們使用納瓦霍語言作為通信密碼。所謂“風語者”,就是使用納瓦霍語言的通信兵。這是密碼學和語言學的成功結合,使得納瓦霍語成為唯一沒有被日本破獲的密碼,并且成為贏得這場戰爭的關鍵。
1942年1月,大西洋海戰進入第二階段。德軍以高人一等的密碼通信能力,使用“狼群”戰術發動大規模無限制潛艇戰,致使同盟國節節受挫。在電影《獵殺U-571》中,美軍為截獲德軍密碼機在大西洋上與德軍潛艇U-571展開了殊死的斗爭,最終以截獲德軍密碼機告終。德軍密碼機的截獲,使美軍迅速破譯了德軍指令,扭轉了大西洋戰事,有力地回擊了德軍的無限制大規模潛艇戰爭,加速了第二次世界大戰的終結。
2.1.3 計算機加密階段
第二次世界大戰后,計算機與電子學快速發展,促進并推動了密碼學進入計算機加密階段。在這一階段,計算機成為密碼設計與破譯的平臺:利用計算機可以設計出更為復雜的加密算法,避免了徒手設計時容易造成的錯誤;利用計算機可以對加密算法進行破譯,縮短了破譯時間。當然,許多設計高明的加密算法的運算速度通常都很快而且占用資源少,但破解它卻需要消耗大量的資源,破解通常以失敗告終。在1949年之前,密碼學是一門藝術;在1949~1975年,密碼學成為科學;1976年以后,密碼學有了的新方向—公鑰密碼學;1977年以后,密碼學廣泛應用于各種場所。
1949年,信息論始祖克勞德·艾爾伍德·香農(Claude Elwood Shannon)發表了《保密系統的通信理論》一文,把密碼學建立在嚴格的數學基礎之上,為密碼學的發展奠定了理論基礎。密碼學由此成為一門真正的科學。在此之前,密碼學完全是一門藝術,密碼的設計和分析完全依賴于密碼專家的直覺。
1976年,密碼學專家迪菲(Whitfield Diffie)和赫爾曼(Martin E. Hellman)兩人發表了《密碼學的新方向》一文,解決了密鑰管理的難題,把密鑰分為加密的公鑰和解密的私鑰,提出了密鑰交換算法(Diffie-Hellman,D-H),這是密碼學的一場革命。
1977年,美國國家標準技術研究所(National Institute of Standards and Technology,NIST)制定數據加密標準(Data Encryption Standard,DES),將其頒布為國家標準,這是密碼學歷史上一個具有里程碑意義的事件。
同年,密碼學專家羅納德·李維斯特(Ronald L. Rivest)、沙米爾(Adi Shamir)和阿德勒曼(Len Adleman)在美國麻省理工學院,共同提出第一個較完善的公鑰密碼體制—RSA體制,這是一種建立在大數因子分解基礎上的算法。RSA為數字簽名奠定了基礎。RSA源于整數因子分解問題,DSA源于離散對數問題。RSA和DSA是兩種最流行的數字簽名機制。數字簽名是公鑰基礎設施(Public Key Infrastructure,PKI)以及許多網絡安全機制(SSL/TLS,VPNs等)的基礎。自此以后,密碼學成為通信、計算機網絡、計算機安全等方面的重要工具。
1985年,英國牛津大學物理學家戴維·多伊奇(David Deutsch)提出了量子計算機的初步設想。利用量子計算機,僅需30秒即可完成傳統計算機要花上100億年才能完成的大數因子分解,從而使破解RSA加密的信息成為可能。
同年,物理學家貝內特(Charles H. Bennett)根據多伊奇關于量子密碼術的協議,在實驗室第一次實現了量子密碼加密信息的通信。盡管通信距離僅有30厘米,但仍舊證明了量子密碼術的實用性。
1997年1月,美國國家標準技術研究所征集新一代數據加密標準,即高級數據加密標準(Advanced Encryption Standard,AES)。最終,比利時密碼學家兼計算機科學家Vincent Rijmen和Joan Daemen設計的Rijndael加密算法入選,因此AES算法也稱為Rijndael算法。高級數據加密標準用以替代原先的DES,謀求更加安全的加密算法。2002年5月26日,美國國家標準技術研究所將其定為有效的加密標準。
2003年,位于日內瓦的id Quantique公司和位于紐約的MagiQ技術公司,推出了傳送量子密鑰的距離超越了貝內特實驗中30厘米的商業產品。由此,量子密碼學進入商業化。
進入計算機加密階段后,密碼學應用不再局限于軍事、政治和外交領域,逐步擴大到商務、金融等社會的其他各個領域。密碼學的研究和應用已大規模擴展到了民用方面。
- .NET之美:.NET關鍵技術深入解析
- Java 9 Concurrency Cookbook(Second Edition)
- Java入門很輕松(微課超值版)
- Django開發從入門到實踐
- JMeter 性能測試實戰(第2版)
- Raspberry Pi for Secret Agents(Third Edition)
- 算法精粹:經典計算機科學問題的Python實現
- Processing互動編程藝術
- Python 3網絡爬蟲實戰
- Web程序設計(第二版)
- Python完全自學教程
- C語言課程設計
- OpenCV 4計算機視覺項目實戰(原書第2版)
- Python機器學習算法: 原理、實現與案例
- Hadoop 2.X HDFS源碼剖析