官术网_书友最值得收藏!

第2章 企業(yè)應用安全的銀彈—密碼學

通過對第1章內(nèi)容的學習,我們基本了解了這枚解決企業(yè)應用安全的銀彈—密碼學。密碼學并不是最近才興起的新學科,它的歷史最早可以追溯到幾千年以前,而且古今中外都有密碼學運用的記載。引用《破譯者》書中戴維·卡恩的話,“人類使用密碼的歷史幾乎與使用文字的時間一樣長”。在經(jīng)歷戰(zhàn)火的洗禮,步入現(xiàn)代以后,計算機科學與數(shù)學應用科學的快速發(fā)展,促進了密碼學的進步。密碼學成為應對計算機系統(tǒng)安全問題當之無愧的安全衛(wèi)士,它廣泛應用于計算機與網(wǎng)絡(luò)安全領(lǐng)域,并逐步進入我們的日常生活:自動柜員機芯片卡、公交IC卡、電子商務,等等。計算機科學的迅速發(fā)展,使得密碼學在我們的生活中變得越來越重要。

2.1 密碼學的發(fā)家史

可以這么說,密碼學是靠著戰(zhàn)爭發(fā)家的。自從有了戰(zhàn)爭,就有了密碼學的應用環(huán)境。在戰(zhàn)爭中,對陣雙方要保護自己的通信安全并竊取、破譯對方的情報,于是就有了密碼學。用著名的密碼學專家羅納德·李維斯特(Ronald L. Rivest)的話說,“密碼學是關(guān)于如何在敵人存在的環(huán)境中通信”。縱觀密碼學的發(fā)展歷程,我們大體可以將其分為三個階段,即手工加密階段、機械加密階段和計算機加密階段。

2.1.1 手工加密階段

密碼學很早就廣泛應用于古代戰(zhàn)爭中,使用手工方式完成加密操作,以確保戰(zhàn)爭中軍事信息的秘密傳送,這一階段稱為手工加密階段。這一階段是古典密碼學蓬勃發(fā)展的時期,稱為古典加密階段。

公元前1000年左右,武王伐紂時期。見于周朝兵書《六韜·龍韜》,書中記載了周朝著名軍事家姜子牙為戰(zhàn)時通信制定的兩種軍事通信密碼:陰符和陰書。陰符是使用雙方在通信前事先制造的一套尺寸不等、形狀各異的“陰符”,共八種,每種都代表一定的意義,只有通信雙方知道。陰符,可算是密碼學中的替代法。陰書在陰符的基礎(chǔ)上繼續(xù)發(fā)展,它應用“一合而再離,三發(fā)而一知”的理論,也就是密碼學中的移位法。將一份完整的軍事文書一分為三,分三人傳遞,必須要把三份文書重新合并后才能獲得完整的軍事信息。即使途中一人或二人被捕,也不至于暴露軍事機密。

公元前480年,波希戰(zhàn)爭。波斯大量軍隊秘密集結(jié),意圖對雅典和斯巴達發(fā)動一次突襲。恰逢希臘人狄馬拉圖斯(Demaratus)在波斯的蘇薩城內(nèi)看到了這次集結(jié),于是他在木板上記錄了波斯突襲希臘的意圖,然后用蠟把木板上的字封住。這塊木板就這樣在蠟封的掩蓋下送到了希臘,最終使得波斯海軍覆沒于雅典附近的薩拉米灣—薩拉米灣海戰(zhàn)。

公元前404年,斯巴達征服希臘。斯巴達在波斯帝國的幫助下,征服了希臘。斯巴達北路軍司令萊薩德還沒來得及慶祝就接到密探送來的信函。萊薩德接過密探的腰帶,將其纏繞在斯巴達密碼棒(Scytale)上,得知波斯帝國意圖吞并他的城池。萊薩德當機立斷,成功反擊了波斯帝國的進攻。斯巴達密碼棒實際上是一個指揮棒,將羊皮紙卷在密碼棒上,把要保密的信息寫在羊皮紙上。由上述“腰帶”的含義可知,羊皮紙沿卷軸繞行方向做了切割,切割后的羊皮紙上的信息雜亂無章,信息得以加密。

公元前100年,高盧戰(zhàn)爭。羅馬帝國的凱撒大帝(Caesar)使用以自己的名字命名的密碼—凱撒密碼,對重要的軍事信息進行加密,這是一種簡單的單字母替代密碼,屬于替代法。在當時,凱撒的敵人大多數(shù)是目不識丁的,對于這種“移形換位”大法,可謂是根本不知所云。凱撒密碼的加密強度,在當時來看是相當有效的。

公元1040年,北宋時期。火藥鼻祖曾公亮(999~1078)與北宋文字訓詁學家丁度(990~1053)等奉敕集體編撰了《武經(jīng)總要》,共40卷,該書詳細記載了中國古代已知最早的軍事情報通信密碼。其中,收集了軍隊中常用的40種戰(zhàn)斗情況,編成40條短語,分別編碼產(chǎn)生密碼本。這套密碼的使用方法是,由軍事部門指定一首沒有重復字的五言律詩(40字),作為解密密鑰。詩中的每個字都與短語一一對應,短語順序在戰(zhàn)前臨時隨機排列。密碼本由戰(zhàn)時前后兩方高級將領(lǐng)保管,前后方通過該密碼本進行戰(zhàn)時通信。

公元1578年,瑪麗女王被伊麗莎白女王軟禁,安東尼·貝平頓(Anthony Babington)及其同黨意圖營救。英國人菲力普·馬尼斯(Philip van Marnix)利用頻度分析法,成功破解了安東尼發(fā)給瑪麗的密碼信。信件內(nèi)容除了營救瑪麗女王的計劃外,還計劃行刺伊麗莎白女王。信件的破解將安東尼及其同黨一舉抓獲,審判并處死了瑪麗女王。

2.1.2 機械加密階段

19世紀末至20世紀初,工業(yè)革命促進了機械和機電技術(shù)的發(fā)展,密碼學進入機械加密階段。工業(yè)革命為密碼學的發(fā)展提供了基礎(chǔ),世界大戰(zhàn)的爆發(fā)為密碼學的飛躍提供了契機。

在第一次世界大戰(zhàn)中,密碼分析有了重大突破,它是戰(zhàn)爭能否取得勝利的重要因素之一;在第二次世界大戰(zhàn)中,密碼學經(jīng)歷了它的黃金時代,在戰(zhàn)爭中扮演了更重要的角色。

1.第一次世界大戰(zhàn)

19世紀末,無線電技術(shù)的發(fā)明和使用使通信工具發(fā)生了革命性的變革。由此產(chǎn)生了以密碼技術(shù)為核心的包括偵察、測向、信號分析、通信分析等一整套無線電信號偵察以及對抗這種偵察的信號保密技術(shù)。軍事電報的加密與破解成為同盟國與協(xié)約國取得成敗的關(guān)鍵。

1914年8月,俄國在芬蘭灣口擊沉德國“馬格德堡”輕巡洋艦,在德國軍艦殘骸里,俄國潛水員意外發(fā)現(xiàn)了一份德國海軍的密碼本,并將其提供給英國,使英國人輕而易舉地破譯了德國海軍的無線電密碼。1916年5月30日下午,英國情報部門憑借截獲的德國海軍無線電密碼,破譯德國海軍電報,日德蘭海戰(zhàn)以英國皇家海軍勝利告終。

1917年1月16日,德意志帝國外交秘書阿瑟·齊默爾曼向德國駐墨西哥大使亨尼希·馮·艾克哈爾特(Heinrich von Eckardt)發(fā)出的加密電報—齊默爾曼電報,電報內(nèi)容建議墨西哥與德意志帝國結(jié)成對抗美國的軍事聯(lián)盟。在這個緊要關(guān)頭,電報內(nèi)容被英國破譯密碼的專門機構(gòu)“40號房間”所截獲,利用繳獲的德國密碼本破譯了電報的內(nèi)容,此次事件被稱為“情報史上最偉大的密碼破譯事件”。“齊默爾曼電報”的破譯,促使美國放棄中立參戰(zhàn),改變了戰(zhàn)爭進程。

2.第二次世界大戰(zhàn)

20世紀初,機械及機電技術(shù)的快速發(fā)展,加速了密碼設(shè)備的變革—轉(zhuǎn)輪密碼機的發(fā)明。轉(zhuǎn)輪密碼機的出現(xiàn)是密碼學的重要標志之一,促進了傳統(tǒng)密碼學的進展,提高了機密系統(tǒng)的加密復雜度。轉(zhuǎn)輪密碼機EnigmaEnigm在密碼學界絕對是劃時代的豐碑。而且,它所凝聚而成的不是一座豐碑,而是兩座:研究并制造出Enigma是一座,研究并破解掉Enigma是另一座。只要稍微了解Enigma的歷史,或許很多人就會被其中閃耀的人類智慧之美所折服。如果要向這樣輝煌的智慧敬獻花環(huán),主要應該獻給3個人:首先是德國人亞瑟·謝爾比烏斯,其次是波蘭人馬里安·雷耶夫斯基,然后是英國人阿蘭·圖靈。,別名“謎”(恩尼格瑪密碼機)的出現(xiàn),成為密碼學界劃時代的豐碑。德國發(fā)明家亞瑟·謝爾比烏斯(Arthur Scherbius)發(fā)明了Enigma;波蘭數(shù)學家馬里安·雷耶夫斯基(Marian Rejewski)初步破解了簡單的Enigma,而英國數(shù)學家阿蘭·圖靈(Alan Turing)英國數(shù)學家、邏輯學家,被稱為人工智能之父。1931年圖靈進入劍橋大學國王學院,畢業(yè)后到美國普林斯頓大學攻讀博士學位,第二次世界大戰(zhàn)爆發(fā)后回到劍橋,后曾協(xié)助軍方破解德國的著名密碼系統(tǒng)Enigma,幫助盟軍取得了第二次世界大戰(zhàn)的勝利。徹底終結(jié)了最高難度的Enigma。

1941年12月8日,美國對日本宣戰(zhàn)。在整個太平洋上,美軍與日軍展開了全面的島嶼爭奪戰(zhàn)。在電影《風語者》中,日軍以成功破解美軍軍事通信密碼,占據(jù)戰(zhàn)場上的優(yōu)勢,極大地阻礙著美軍前進的步伐。1942年,美軍征召納瓦霍人(Navajo,美國最大的印第安部落)加入海軍,并訓練他們使用納瓦霍語言作為通信密碼。所謂“風語者”,就是使用納瓦霍語言的通信兵。這是密碼學和語言學的成功結(jié)合,使得納瓦霍語成為唯一沒有被日本破獲的密碼,并且成為贏得這場戰(zhàn)爭的關(guān)鍵。

1942年1月,大西洋海戰(zhàn)進入第二階段。德軍以高人一等的密碼通信能力,使用“狼群”戰(zhàn)術(shù)發(fā)動大規(guī)模無限制潛艇戰(zhàn),致使同盟國節(jié)節(jié)受挫。在電影《獵殺U-571》中,美軍為截獲德軍密碼機在大西洋上與德軍潛艇U-571展開了殊死的斗爭,最終以截獲德軍密碼機告終。德軍密碼機的截獲,使美軍迅速破譯了德軍指令,扭轉(zhuǎn)了大西洋戰(zhàn)事,有力地回擊了德軍的無限制大規(guī)模潛艇戰(zhàn)爭,加速了第二次世界大戰(zhàn)的終結(jié)。

2.1.3 計算機加密階段

第二次世界大戰(zhàn)后,計算機與電子學快速發(fā)展,促進并推動了密碼學進入計算機加密階段。在這一階段,計算機成為密碼設(shè)計與破譯的平臺:利用計算機可以設(shè)計出更為復雜的加密算法,避免了徒手設(shè)計時容易造成的錯誤;利用計算機可以對加密算法進行破譯,縮短了破譯時間。當然,許多設(shè)計高明的加密算法的速度通常都很快而且占用資源少,但破解它卻需要消耗大量的資源,破解通常以失敗告終。在1949年之前,密碼學是一門藝術(shù);在1949~1975年,密碼學成為科學;1976年以后,密碼學有了的新方向—公鑰密碼學;1977年以后,密碼學廣泛應用于各種場所。

1949年,信息論始祖克勞德·艾爾伍德·香農(nóng)(Claude Elwood Shannon)發(fā)表了《保密系統(tǒng)的通信理論》一文,把密碼學建立在嚴格的數(shù)學基礎(chǔ)之上,為密碼學的發(fā)展奠定了理論基礎(chǔ)。密碼學由此成為一門真正的科學。在此之前,密碼學完全是一門藝術(shù),密碼的設(shè)計和分析完全依賴于密碼專家的直覺。

1976年,密碼學專家迪菲(Whitfield Diffie)和赫爾曼(Martin E. Hellman)兩人發(fā)表了《密碼學的新方向》一文,解決了密鑰管理的難題,把密鑰分為加密的公鑰和解密的私鑰,提出了密鑰交換算法(Diffie-Hellman,D-H),這是密碼學的一場革命。

1977年,美國國家標準枝術(shù)研究所(National Institute of Standards and Technology,NIST)制定數(shù)據(jù)加密標準(Data Encryption Standard,DES),將其頒布為國家標準,這是密碼學歷史上一個具有里程碑意義的事件。

同年,密碼學專家羅納德·李維斯特(Ronald L.Rivest)、沙米爾(Adi Shamir)和阿德勒曼(Len Adleman)在美國麻省理工學院,共同提出第一個較完善的公鑰密碼體制—RSA體制,這是一種建立在大數(shù)因子分解基礎(chǔ)上的算法,RSA為數(shù)字簽名奠定了基礎(chǔ)。RSA源于整數(shù)因子分解問題,DSA源于離散對數(shù)問題。RSA和DSA是兩種最流行的數(shù)字簽名機制。數(shù)字簽名是公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)以及許多網(wǎng)絡(luò)安全機制(SSL/TLS,VPNs等)的基礎(chǔ)。自此以后,密碼學成為通信、計算機網(wǎng)絡(luò)、計算機安全等方面的重要工具。

1985年,英國牛津大學物理學家戴維·多伊奇(David Deutsch)提出了量子計算機的初步設(shè)想。利用量子計算機,僅需30秒鐘即可完成傳統(tǒng)計算機要花上100億年才能完成的大數(shù)因子分解,從而破解RSA運用這個大數(shù)產(chǎn)生公鑰來加密的信息。

同年,物理學家貝內(nèi)特(Charles H. Bennett)根據(jù)多伊奇關(guān)于量子密碼術(shù)的協(xié)議,在實驗室第一次實現(xiàn)了量子密碼加密信息的通信。盡管通信距離僅有30厘米,仍舊證明了量子密碼術(shù)的實用性。

1997年1月,美國國家標準技術(shù)研究所征集新一代數(shù)據(jù)加密標準,即高級數(shù)據(jù)加密標準(Advanced Encryption Standard,AES)。最終,比利時密碼學家兼計算機科學家Vincent Rijmen和Joan Daemen設(shè)計的Rijndael加密算法入選,因此AES算法也稱為Rijndael算法。高級數(shù)據(jù)加密標準用以替代原先的DES,謀求更加安全的加密算法。2002年5月26日,美國國家標準技術(shù)研究所將其定為有效的加密標準。

2003年,位于日內(nèi)瓦的id Quantique公司和位于紐約的MagiQ技術(shù)公司,推出了傳送量子密鑰的距離超越了貝內(nèi)特實驗中30厘米的商業(yè)產(chǎn)品。由此,量子密碼學進入商業(yè)化。

進入計算機加密階段后,密碼學應用不再局限于軍事、政治和外交領(lǐng)域,逐步擴大到商務、金融和社會的其他各個領(lǐng)域。密碼學的研究和應用已大規(guī)模擴展到了民用方面。

2.2 密碼學定義、術(shù)語及其分類

歷經(jīng)四千多年的風風雨雨,密碼學逐步發(fā)展成為一門學科,對于它的定義也越來越清晰,那么什么是密碼學呢?

? 密碼學:主要是研究保密通信和信息保密的問題,包括信息保密傳輸和信息加密存儲等。密碼學包含密碼編碼學(Cryptography)和密碼分析學(Cryptanalyst)兩個分支。編碼學與分析學相互促進,又相互制約。一方面,兩者在加強密碼分析的安全上相互促進;另一方面,兩者在實施更為有效的攻擊方面也相互影響。

? 密碼編碼學:主要研究對信息進行編碼,實現(xiàn)對信息的隱蔽,是密碼學理論的基礎(chǔ),也是保密系統(tǒng)設(shè)計的基礎(chǔ)。

? 密碼分析學:主要研究加密消息的破譯或消息的偽造,是檢驗密碼體制安全性最為直接的手段,只有通過實際密碼分析考驗的密碼體制,才是真正可用的。

2.2.1 密碼學常用術(shù)語

在簡要了解了密碼學的一些基本概念后,讓我們來看一下密碼學常用術(shù)語,如下所示:

? 明文(Plaintext):指待加密信息。明文可以是文本文件、圖片文件、二進制數(shù)據(jù)等。

? 密文(Ciphertext):指經(jīng)過加密后的明文。密文通常以文本、二進制數(shù)據(jù)等形式存在。

? 發(fā)送者(Sender):指發(fā)送消息的人。

? 接收者(Receiver):指接收消息的人。

? 加密(Encryption):指將明文轉(zhuǎn)換為密文的過程。

? 加密算法(Encryption Algorithm):指將明文變化為密文的轉(zhuǎn)換算法。

? 加密密鑰(Encryption Key):指通過加密算法進行加密操作用的密鑰。

? 解密(Decryption):指將密文轉(zhuǎn)換成明文的過程。

? 解密算法(Decryption Algorithm):指將密文轉(zhuǎn)換為明文的轉(zhuǎn)換算法。

? 解密密鑰(Decryption Key):指通過解密算法進行解密操作用的密鑰。

? 密碼分析(Cryptanalysis):指截獲密文者試圖通過分析截獲的密文從而推斷出原來的明文或密鑰的過程。

? 密碼分析者(Cryptanalyst):等同于密碼破譯者,指從事密碼分析的人。

? 被動攻擊(Passive Attack):指對一個保密系統(tǒng)采取截獲密文并對其進行分析和攻擊。這種攻擊對密文沒有破壞作用。

? 主動攻擊(Active Attack):指攻擊者非法入侵密碼系統(tǒng),采用偽造、修改、刪除等手段向系統(tǒng)注入假消息進行欺騙。這種攻擊對密文具有破壞作用。

? 密碼體制(Cipher System):由明文空間、密文空間、密鑰空間、加密算法和解密算法五部分構(gòu)成。

? 密碼協(xié)議(Cryptographic Protocol):有時也稱為安全協(xié)議,是指以密碼學為基礎(chǔ)的消息交換的通信協(xié)議,其目的是在網(wǎng)絡(luò)環(huán)境中提供各種安全服務。密碼協(xié)議與密碼算法同等重要,堪稱當今密碼學研究的兩大課題。密碼學是網(wǎng)絡(luò)安全的基礎(chǔ),但網(wǎng)絡(luò)安全不能單純依靠安全的密碼算法。密碼協(xié)議是網(wǎng)絡(luò)安全的一個重要組成部分,通過密碼協(xié)議進行實體之間的認證、在實體之間安全地分配密鑰或其他各種秘密、確認發(fā)送和接收的消息的不可否認性等。

? 密碼系統(tǒng)(Cryptography):指用于加密和解密的系統(tǒng)。加密時,系統(tǒng)輸入明文和加密密鑰,加密變化后,輸出密文;解密時,系統(tǒng)輸入密文和解密密鑰,解密變換后,輸入明文。一個密碼系統(tǒng)由信源、加密變換、解密變化、信宿和攻擊者組成。密碼系統(tǒng)強調(diào)密碼方案的實際應用,通常應當是一個包含軟、硬件的系統(tǒng)。

? 柯克霍夫原則(Kerckhoffs’ Principle):數(shù)據(jù)的安全基于密鑰而不是算法的保密。換句話說,系統(tǒng)的安全性取決于密鑰,對密鑰保密,對算法公開。信息論始祖克勞德·艾爾伍德·香農(nóng)(Claude Elwood Shannon)將其改為“敵人了解系統(tǒng)”,這樣的說法稱為香農(nóng)箴言。柯克霍夫原則是現(xiàn)代密碼學設(shè)計的基本原則。

2.2.2 密碼學分類

密碼學起源于古代,發(fā)展于現(xiàn)代。隨著時間的推移,密碼學不斷完善,逐步擁有了眾多分類。可以從時間上劃分,也可以從保密內(nèi)容的算法上劃分,還可以從密碼體制上劃分,下面將詳細介紹這3類密碼。

1.按時間劃分

從時間上可以分為古典密碼和現(xiàn)代密碼,古典密碼以字符為基本加密單元,2.4節(jié)中將會有詳細的闡述;現(xiàn)代密碼以信息塊為基本加密單元。

2.按保密內(nèi)容的算法劃分

根據(jù)保密內(nèi)容的算法可分為受限制算法和基于密鑰算法。

? 受限制(Restricted)算法:算法的保密性基于保持算法的秘密。一般不贊成使用這種算法,除非應用于類似軍事一類的應用,算法由專業(yè)機構(gòu)開發(fā)、驗證,確保其算法的安全性。這是古典密碼學的主要特征。

? 基于密鑰(Key-Based)算法:算法的保密性基于對密鑰的保密。這其實是基于柯克霍夫原則設(shè)計的算法,這樣做的好處是:算法的公開有助于算法安全性的驗證,算法的漏洞得以及時修正,避免算法的設(shè)計者在算法上留下后門等。這正是現(xiàn)代密碼學的主要特征。

3.按密碼體制劃分

根據(jù)密碼體制可分為對稱密碼體制和非對稱密碼體制。

? 對稱密碼體制(Symmetric Cryptosystem):也稱為單鑰密碼體制或私鑰密碼體制,將在2.5節(jié)詳細闡述。指該密碼體制中的加密密鑰與解密密鑰相同,即加密過程與解密過程使用同一套密鑰。

? 非對稱密碼體制(Asymmetric Cryptosystem):也稱為雙鑰密碼體制或公鑰密碼體制。指該密碼體制中的加密密鑰與解密密鑰不同,密鑰分為公鑰與私鑰。公鑰對外公開,私鑰對外保密。

與上述密碼體制對應的算法有對稱密碼算法和非對稱密碼算法。

? 對稱密碼算法(Symmetric Cipher):也稱為單鑰密碼算法或私鑰密碼算法。指對應于對稱密碼體制的加密、解密算法。常見的DES、AES算法都是對稱密碼算法的典范。

? 非對稱密碼算法(Asymmetric Cipher):也稱為雙鑰密碼算法或公鑰密碼算法。指對應于非對稱密碼體制的加密、解密算法。大名鼎鼎的RSA算法就是非對稱密碼算法,多應用于數(shù)字簽名、身份認證等。當然,非對稱密碼算法的相對于對稱密碼算法有著更高的安全性,卻有著不可回避的加密解密的耗時長的問題。

4.按明文的處理方法劃分

根據(jù)明文的處理方法可分為分組密碼和流密碼。

? 分組密碼(Block Cipher):指加密時將明文分成固定長度的組,用同一密鑰和算法對每一塊加密,輸出也是固定長度的密文。分組密碼多應用于網(wǎng)絡(luò)加密。

? 流密碼(Stream Cipher):也稱為序列密碼。指加密時每次加密一位或一個字節(jié)的明文。手機平臺對應用使用系統(tǒng)資源有著極為苛刻的要求,這恰恰給了對系統(tǒng)資源要求極低的流密碼以用武之地。RC4是相當有名的流密碼算法。

在手工加密階段和機械加密階段,流密碼曾是當時的主流。現(xiàn)代密碼學的研究主要關(guān)注分組密碼和流密碼及其應用。在對稱密碼體制中,大部分加密算法屬于分組密碼。關(guān)于分組密碼和流密碼的詳細內(nèi)容,請閱讀2.5節(jié)。

2.3 保密通信模型

密碼學并不是孤立地存在的,它需要有一個環(huán)境,就是保密通信模型。在了解了密碼學的基本術(shù)語后,我們來討論保密通信模型。

密碼學的目的在于確保信息的保密傳送。通常這樣理解這層含義,信息的發(fā)送者和接收者在不安全的信道上進行通信,而破譯者不能理解他們通信的內(nèi)容。用保密通信模型來詮釋這種信息傳送方式,如圖2-1所示。

在上述模型中,信息的發(fā)送者和接收者要在不安全的信道上交換機要信息,為避免破譯者竊聽,需要對機要信息進行加密和解密處理。加密信息在傳送過程中即使被破譯者截獲,也不能被破譯。基于柯克霍夫原則,只要密鑰安全,即便破譯者知道該密碼系統(tǒng)的加密算法,也無法對加密信息進行破譯。在這個模型中,加密密鑰很可能和解密密鑰是同一個密鑰,或者說由一方密鑰可以推導出另一方密鑰,這就是對稱加密密碼體制;反之,加密密鑰與解密密鑰不同,由一方密鑰難以推導出另一方密鑰,這就是非對稱加密密碼體制。

圖2-1 保密通信模型

2.4 古典密碼

古典密碼(Classical Cipher)起始于古代終止于19世紀末,是現(xiàn)代密碼的基礎(chǔ)。當時生產(chǎn)力水平較低,普遍采用紙、筆或簡單器械完成加密、解密操作,正是密碼學發(fā)展史上手工加密階段迅速發(fā)展的時期。雖然,古典密碼由于安全性較低、效率低等多種缺陷已經(jīng)退出了歷史舞臺,但古典密碼對于密碼學的研究卻有著不可替代的作用。

古典密碼受限于當時的環(huán)境,以語言學為基礎(chǔ)對文字進行字符變化,也就是對字符加密,以達到信息加密的目的。古典加密算法最常用、最核心的兩種加密技巧是移位和替代,這同樣是對稱加密算法最常用的方法。

? 移位密碼(Transposition Cipher):也稱錯位密碼。將字符的順序重新排列。例如,將“1234567890”變成“3216549870”。這種加密算法看似簡單,但卻十分有效。如果不能領(lǐng)會其中的規(guī)律,很難辨別其內(nèi)容的真正含義。

? 替代密碼(Substitution Cipher):也稱置換密碼。將明文中的一組字符替代成其他的字符,形成密文。例如,“Encryption algorithm”變成“Fodszqujpo bmhpsjuin”(每個字母用下一個字母替代)。接收者對密文做反向替代就可以恢復明文。著名的凱撒密碼就應用了替代式算法。

在古典加密時代,替代密碼發(fā)展迅速,而且變得更加復雜,擁有眾多分支,又分為如下幾種。

? 單表替代密碼(Monoalphabetic Cipher):也稱簡單替代密碼。明文的一個字符用相應的一個密文字符代替。加密過程中是從明文字母表到密文字母表的一一映射。主要包括移位(shift)密碼、乘數(shù)(multiplicative)密碼、仿射(affine)密碼、多項式(Polynomial)密碼、密鑰短語(Key Word)密碼。

? 同音替代密碼(Homophonic Substitution Cipher):也稱多名替代密碼。與單表替代系統(tǒng)相似,唯一的不同是單個字符明文可以映射成密文的幾個字符之一,例如,A可能對應于5、13、25或56,“B”可能對應于7、19、31或42,所以,同音代替的密文并不唯一。電影《風語者》中,美軍征召納瓦霍人加入海軍,訓練他們使用納瓦霍語言作為通

信密碼,這實際上是應用了多名替代密碼。

? 多表替代密碼(Ployalphabetic Substitution Cipher):明文中的字符映射到密文空間的字符還依賴于它在上下文中的位置。由多個簡單的代替密碼構(gòu)成,例如,可能有5個被使用的不同的簡單代替密碼,單獨的一個字符用來改變明文的每個字符的位置。弗吉尼亞(Vigenere)密碼、博福特(Beaufort)密碼、滾動密鑰(running-key)密碼、弗納姆(Vernam)密碼、轉(zhuǎn)子機(rotor machine)密碼均為多表替代密碼。第二次世界大戰(zhàn)中,德軍用的轉(zhuǎn)子加密機—Enigma,正是多表替代密碼應用的典范。

? 多字母替代密碼(Polygram Substitution Cipher):明文中的字符被成組加密,例如“ABA”可能對應于“RTQ”,ABB可能對應于“SLL”等。希爾(Hill)密碼、Playfair密碼均為多字母替代密碼。在第一次世界大戰(zhàn)中英國人就采用了這種密碼。

不管是移位算法還是替代算法,終究脫離不開人類語言。針對該特點,通過對密文進行語義分析使得古典密碼在破譯上有章可循。例如,凱撒密碼是單表替代密碼,要破解凱撒密碼,只要以語言學為基礎(chǔ),找出使用頻度最高的字符,如' '和 'e',用ASCII碼表示就是32和101,差值69。如果明文中兩個出現(xiàn)頻率最高的字符的ASCII碼相差69,那么加密后密文中相應出現(xiàn)頻率最高的字符的ASCII碼相差也一定是69。很顯然,通過這樣的分析方法,只要找出密文中與之對應的字符,計算偏移量—密鑰,就可以破譯密文,這就是著名的頻度分析法。公元1578年,瑪麗女王營救計劃因密信被破解而以失敗告終,當時使用的破解方法就是頻度分析法。

2.5 對稱密碼體制

對稱密碼體制并不是現(xiàn)代密碼學的新生產(chǎn)物,它是古典密碼學的進一步延續(xù)。古典密碼常用的兩種技巧—替代和移位,仍然是對稱密碼體制中最重要的加密技巧。

對稱密碼體制的保密通信模型如圖2-2所示。對稱密碼體制要求加密與解密使用同一個共享密鑰,解密是加密的逆運算,由于通信雙方共享同一個密鑰,這就要求通信雙方必須在通信前商定該密鑰,并妥善保存該密鑰,該密鑰稱為秘密密鑰。秘密密鑰的存在使得對稱密碼體制開放性變差。

圖2-2 對稱密碼體制的保密通信模型

對稱密碼體制分為兩種:一種是對明文的單個位(或字節(jié))進行運算,稱為流密碼,也稱為序列密碼;另一種是把明文信息劃分成不同的組(或塊)結(jié)構(gòu),分別對每個組(或塊)進行加密和解密,稱為分組密碼。

2.5.1 流密碼

流密碼是軍事、外交等機要部門中應用最為廣泛的對稱密碼體制。同時,它也是手機應用平臺最常用的加密手段。流密碼實現(xiàn)較為簡單,加密時將明文按字符(或字節(jié))逐位進行加密,解密時將密文按字符(字節(jié))逐位解密。加密、解密可以是簡單的位運算,如模n運算。明文加密后,生成的密文幾乎和明文保持同樣的長度。流密碼加密與解密的流程如圖2-3所示。

圖2-3 流密碼加密與解密流程

流密碼分為同步流(序列)密碼和自同步流(序列)密碼。

1.同步流密碼

信息發(fā)送方和接收方在傳遞信息時,同步進行加密解密操作,明文與密文一一對應。密文的內(nèi)容如果在傳輸過程中被篡改、刪除或插入,可導致同步失效,以致密文解密失敗,必須通過重新同步來實現(xiàn)解密、恢復密文。在密文傳輸過程中,如果一個密文位發(fā)生變化,那么該位的變化只影響該位的恢復,對后續(xù)密文位不影響,這是同步流密碼的一個重要特點。但是,根據(jù)該特性主動攻擊者可以有選擇地對密文字符進行改動,并準確知道這些改動對明文的影響。因此,同步流密碼具有同步性、無錯誤傳遞性及主動攻擊性三種特性。同步流密碼適用于為音頻和視頻數(shù)據(jù)提供版權(quán)保護。

2.自同步流密碼

與同步流密碼相比,自同步流密碼是一種有記憶變換的密碼。每一個密鑰與已產(chǎn)生的固定數(shù)量的密文位有關(guān),密鑰由已生成的密文決定。在密文傳輸過程中,如果一個密文位發(fā)生變化,那么該位的變化會影響到后續(xù)有限位(如n位)的密文位的正確解密。所以,自同步流密碼有錯誤傳遞現(xiàn)象。但是,在接收n位正確密文字符后,密碼自身會實現(xiàn)重新同步。基于這一特點,如果主動攻擊者對密文做了修改,接收方仍然不能檢測出密文的完整性。與同步流密碼相比,自同步流密碼的密碼分析更加困難,安全性更高。因此,自同步流密碼具有自同步性、錯誤傳遞有限性、主動攻擊性及明文統(tǒng)計擴散性四種特性。

流密碼實現(xiàn)簡單、便于硬件計算、加密與解密處理速度快、錯誤傳播率低等優(yōu)點。但是,流密碼對錯誤的產(chǎn)生不夠敏感,這是流密碼的缺點。為了彌補這一缺點,流密碼通常配合其他技術(shù)驗證信息的完整性。流密碼涉及大量的理論知識,受限于應用場合(目前主要用于軍事和外交等機要部門),許多研究成果并未完全公開。目前使用較多的流密碼是自同步流密碼。流密碼的常用算法有RC4和SEAL等。

流密碼的安全強度依賴于密鑰流生成器所產(chǎn)生的密鑰流序列的特征,關(guān)鍵在于密鑰生成器的設(shè)計以及信息收發(fā)兩端密鑰流產(chǎn)生的同步技術(shù)。

2.5.2 分組密碼

分組密碼多應用于網(wǎng)絡(luò)加密,是對稱密碼體制中發(fā)展最為完善的密碼體制。分組密碼對固定長度的一組明文進行加密,這一固定長度稱為分組長度。分組長度是分組密碼的一個參數(shù),它與分組算法的安全性成正比,其取值范圍取決于實際應用的環(huán)境。為保證分組算法的安全性,分組長度越長越好,分組長度越長,則密碼分析越困難;為保證分組密碼的實用性,分組長度越短越好,分組長度越短,則越便于操作和運算。分組長度的設(shè)定需要權(quán)衡分組算法的安全性與實用性,一般設(shè)置為56位。但隨著密碼學的發(fā)展,分組長度只有56位的分組密碼已經(jīng)不能確保算法的安全性。目前,分組密碼多選擇128位作為算法的分組長度。

分組密碼的加密過程是對一個分組長度為n位的明文分組進行加密操作,相應地產(chǎn)生一個n位的密文分組,由此可見,不同的n位明文分組共有2n個。考慮到加密算法的可逆性(即保證解密過程的可行性),每一個不同的n位明文分組都應該產(chǎn)生一個唯一的密文分組,加密過程對應的變換稱為可逆變換或非奇異變換。所以,分組密碼算法從本質(zhì)上來說是定義了一種從分組的明文到相應的密文的可逆變換。

分組密碼是現(xiàn)代密碼學的重要組成部分,具有代表的分組加密算法有DES、AES等,我們將在后續(xù)章節(jié)具體探討如何實現(xiàn)分組密碼。

1.分組密碼設(shè)計原則

分組密碼的設(shè)計原則包括安全性和實現(xiàn)性兩個方面。前者主要研究如何設(shè)計安全算法,分組長度和密鑰長度,后者主要討論如何提高算法的執(zhí)行速度。

(1)針對安全的一般設(shè)計原則

安全性原則也稱為不可破譯原則,它包含理論上不可破譯和實際上不可破譯兩重含義。香農(nóng)認為:在理想密碼系統(tǒng)中,密文的所有統(tǒng)計特性都與所使用的密鑰獨立。關(guān)于實用密碼的兩個一般的設(shè)計原則是香農(nóng)提出的混亂原則和擴散原則。

? 擴散(Diffusion)原則:人們所設(shè)計的密碼應使得密鑰的每一位數(shù)字影響到密文的多位數(shù)字,以防止對密鑰進行逐段破譯,而且明文的每一位數(shù)字也影響密文的多位數(shù)字以便隱藏明文數(shù)字的統(tǒng)計性。

? 混亂(Confusion)原則:人們所設(shè)計的密碼應使得密鑰和明文以及密文之間的信賴關(guān)系相當復雜以至于這種信賴性對密碼分析者來說是無法利用的。

如何衡量一個密碼體制的安全性?

主要有以下幾個方面:

1)密碼體制的破譯所需要的時間和費用超出了現(xiàn)有的資源和能力。

2)密碼體制的破譯所需要的時間超過了該體制所保護的信息的有效時間。

3)密碼體制的破譯所需要的費用超過了該體制所保護的信息的價值。

(2)針對實現(xiàn)的設(shè)計原則

分組密碼可以用軟件和硬件來實現(xiàn)。硬件實現(xiàn)的優(yōu)點是可獲得高效率,而軟件實現(xiàn)的優(yōu)點是靈活性強、代價低。

? 軟件實現(xiàn)的設(shè)計原則:使用子塊和簡單的運算。密碼運算在子塊上進行,要求子塊的長度能自然地適應軟件編程,如8、16、32位等。應盡量避免按位置換,在子塊上所進行的密碼運算盡量采用易于軟件實現(xiàn)的運算。最好是用處理器的基本運算,如加法、乘法、移位等。

? 硬件實現(xiàn)的設(shè)計原則:加密和解密的相似性,即加密和解密過程的不同應局限于密鑰使用方式上,以便采用同樣的器件來實現(xiàn)加密和解密,以節(jié)省費用和體積。盡量采用標準的組件結(jié)構(gòu),以便能適應于在超大規(guī)模集成電路中實現(xiàn)。

2.分組密碼工作模式

我們以DES算法工作模式為例,DES算法根據(jù)其加密算法所定義的明文分組的大小(56位),將數(shù)據(jù)分割成若干56位的加密區(qū)塊,再以加密區(qū)塊為單位,分別進行加密處理。如果最后剩下不足一個區(qū)塊的大小,我們稱之為短塊,短塊的處理方法有填充法、流密碼加密法、密文挪用技術(shù)。

1980年12月,DES算法工作模式被美國聯(lián)邦信息處理標準組織(Federal Information Processing Standard,F(xiàn)IPS)標準化。加密算法應用的復雜性,有的強調(diào)效率,有的強調(diào)安全,有的強調(diào)容錯性。根據(jù)數(shù)據(jù)加密時每個加密區(qū)塊間的關(guān)聯(lián)方式來區(qū)分,可以分為4種工作模式:電子密碼本模式(Electronic Code Book,ECB)、密文鏈接模式(Cipher Book Chaining,CBC)、密文反饋模式(Cipher Feed Back,CFB)、輸出反饋模式(Output Feed Back,OFB)。AES標準除了推薦上述4種工作模式外,還推薦了一種新的工作模式:計數(shù)器模式(Counter,CTR)。這些工作模式可適用于各種分組密碼算法。

? 電子密碼本模式—ECB

電子密碼本模式如圖2-4所示,它是最基本、最易理解的工作模式。每次加密均產(chǎn)生獨立的密文分組,每組的加密結(jié)果不會對其他分組產(chǎn)生影響,相同的明文加密后對應產(chǎn)生相同的密文,無初始化向量(也稱為加密向量)。可以認為有一個非常大的電碼本,對任意一個可能的明文分組,電碼本中都有一項對應于它的密文,這也是該模式名稱的由來。

? 優(yōu)點:易于理解且簡單易行;便于實現(xiàn)并行操作;沒有誤差傳遞的問題。

? 缺點:不能隱藏明文的模式,如果明文重復,對應的密文也會重復,密文內(nèi)容很容易被替換、重排、刪除、重放;對明文進行主動攻擊的可能性較高。

? 用途:適合加密密鑰,隨機數(shù)等短數(shù)據(jù)。例如,安全地傳遞DES密鑰,ECB是最合適的模式。

圖2-4 電子密碼本模式

? 密文鏈接模式—CBC

密文鏈接模式如圖2-5所示,它是目前應用最廣泛的工作模式。明文加密前需先與前面的密文進行異或運算(XOR)后再加密,因此只要選擇不同的初始向量,相同的明文加密后產(chǎn)生不同的密文。

? 優(yōu)點:密文鏈接模式加密后的密文上下文關(guān)聯(lián),即使在明文中出現(xiàn)重復的信息也不會產(chǎn)生相同的密文;密文內(nèi)容如果被替換、重排、刪除、重放或網(wǎng)絡(luò)傳輸過程中發(fā)生錯誤,后續(xù)密文即被破壞,無法完成解密還原;對明文的主動攻擊的可能性較低。

? 缺點:不利于并行計算,目前沒有已知的并行運算算法;誤差傳遞,如果在加密過程中發(fā)生錯誤,則錯誤將被無限放大,導致加密失敗;需要初始化向量。

? 用途:可加密任意長度的數(shù)據(jù);適用于計算產(chǎn)生檢測數(shù)據(jù)完整性的消息認證碼MAC。

? 密文反饋模式—CFB

密文反饋模式如圖2-6所示,它類似于自同步流密碼,分組加密后,按8位分組將密文和明文進行移位異或后得到輸出同時反饋回移位寄存器。它的優(yōu)點是可以按字節(jié)逐個進行加密解密,也可以按n位字節(jié)處理。CFB是上下文相關(guān)的,明文的一個錯誤會影響后面的密文(錯誤擴散)。CFB需要一個初始化向量,加密后與第一個分組進行異或運算產(chǎn)生第一組密文;然后,對第一組密文加密后再與第二個分組進行異或運算取得第二組密文,以此類推,直到加密完畢。

圖2-5 密文鏈接模式

圖2-6 密文反饋模式

? 優(yōu)點:隱藏了明文的模式,每一個分組的加密結(jié)果必受其前面所有分組內(nèi)容的影響,即使出現(xiàn)多次相同的明文,均產(chǎn)生不同的密文;分組密碼轉(zhuǎn)化為流模式,可產(chǎn)生密鑰流;可以及時加密傳送小于分組的數(shù)據(jù)。

? 缺點:與CBC相類似。不利于并行計算,目前沒有已知的并行運算算法;存在誤差傳送,一個單元損壞影響多個單元;需要初始化向量。

? 用途:因錯誤傳播無界,可用于檢查發(fā)現(xiàn)明文密文的篡改。

? 輸出反饋模式—OFB

輸出反饋模式如圖2-7所示,它將分組密碼作為同步流密碼運行,和CFB相似,不過OFB用的是前一個n位密文輸出分組反饋回移位寄存器,OFB沒有錯誤擴散問題。該模式產(chǎn)生與明文異或運算的密鑰流,從而產(chǎn)生密文,這一點與CFB大致相同,唯一的差異是與明文分組進行異或的輸入部分是反復加密后得到的。

圖2-7 輸出反饋模式

? 優(yōu)點:隱藏了明文的模式;分組密碼轉(zhuǎn)化為流模式;無誤差傳送問題;可以及時加密傳送小于分組的數(shù)據(jù)。

? 缺點:不利于并行計算;對明文的主動攻擊是可能的,安全性較CFB差。

? 用途:適用于加密冗余性較大的數(shù)據(jù),比如語音和圖像數(shù)據(jù)。

? 計數(shù)器模式—CTR

計數(shù)器模式如圖2-8所示,它的特點是將計數(shù)器從初始值開始計數(shù)所得到的值發(fā)送給分組密碼算法。隨著計數(shù)器的增加,分組密碼算法輸出連續(xù)的分組來構(gòu)成一個位串,該位串被用來與明文分組進行異或運算。計數(shù)器模式是用來提取分組密碼的最大效能以實現(xiàn)保密性的。在AES的實際應用中,經(jīng)常會選擇CBC模式和CTR模式,但更多的是選擇CTR模式。

圖2-8 計數(shù)器模式

? 優(yōu)點:可并行計算;安全性至少與CBC模式一樣好;加密與解密僅涉及密碼算法的加密。

? 缺點:沒有錯誤傳播,因此不易確保數(shù)據(jù)完整性。

? 用途:適用于各種加密應用。

2.6 非對稱密碼體制

1976年,密碼學專家Diffie和Hellman在《密碼學的新方向》一文中提出了公開密鑰密碼體制的思想,開創(chuàng)了現(xiàn)代密碼學的新領(lǐng)域,非對稱密碼體制的篇章由此揭開。

非對稱密碼體制的保密通信模型如圖2-9所示。非對稱密碼體制與對稱密碼體制相對,其主要的區(qū)別在于:非對稱密碼體制的加密密鑰和解密密鑰不相同,分為兩個密鑰,一個公開,一個保密。公開的密鑰稱為公鑰,保密的密鑰稱為私鑰。因此,非對稱密碼體制也稱為公鑰密碼體制。非對稱密碼體制使得發(fā)送者和接收者無密鑰傳輸?shù)谋C芡ㄐ懦蔀榭赡埽瑥浹a了對稱密碼體制的缺陷。

圖2-9 非對稱密碼體制的保密通信模型

在非對稱密碼體制中,公鑰和私鑰均可用于加密與解密操作,但它與對稱密碼體制有極大的不同。公鑰與私鑰分屬通信雙方,一份消息的加密與解密需要公鑰與私鑰共同參與。公鑰加密則需要私鑰解密,反之,私鑰加密則需要公鑰解密。我們把通信雙方定義為甲乙兩方,甲乙兩方分場景扮演信息發(fā)送者或接收者。公鑰與私鑰分屬甲乙兩方,甲方擁有私鑰,乙方擁有公鑰。為了更好地描述非對稱密碼體制通信流程,我們通過圖2-10、圖2-11來說明甲乙雙方如何完成一次完整的會話。

甲方(發(fā)送方)用私鑰加密數(shù)據(jù)向乙方發(fā)送數(shù)據(jù),乙方(接收方)接收到數(shù)據(jù)后使用公鑰解密數(shù)據(jù),如圖2-10所示。

圖2-10 私鑰加密-公鑰解密的保密通信模型

乙方(發(fā)送方)用公鑰加密數(shù)據(jù)向甲方發(fā)送數(shù)據(jù),甲方(接收方)接收到數(shù)據(jù)后使用私鑰解密數(shù)據(jù),如圖2-11所示。

非對稱密碼體制的主要優(yōu)點是可以適應開放性的使用環(huán)境,密鑰管理問題相對簡單,可以方便、安全地實現(xiàn)數(shù)字簽名和驗證。RSA是非對稱密碼體制的典范,它不僅可以完成一般的數(shù)據(jù)保密操作,同時它也支持數(shù)字簽名與驗證。關(guān)于數(shù)字簽名,請參見2.8節(jié)。除了數(shù)字簽名,非對稱密碼體制還支持數(shù)字信封等技術(shù)。我們將在后續(xù)章節(jié)詳細講述該類技術(shù)的具體實現(xiàn)。

非對稱密碼算法的安全性完全依賴于基于計算復雜度上的難題,通常來自于數(shù)論。例如, RSA源于整數(shù)因子分解問題;DSA—數(shù)字簽名算法,源于離散對數(shù)問題;ECC—橢圓曲線加密算法,源于離散對數(shù)問題。由于這些數(shù)學難題的實現(xiàn)多涉及底層模數(shù)乘法或指數(shù)運算,相對于分組密碼需要更多的計算資源。為了彌補這一缺陷,非對稱密碼系統(tǒng)通常是復合式的:用高效率的對稱密碼算法對信息進行加密解密處理;用非對稱密鑰加密對稱密碼系統(tǒng)所使用的密鑰。通過這種復合方式增進效率。

圖2-11 公鑰加密-私鑰解密的保密通信模型

2.7 散列函數(shù)

在講到對稱密碼體制的流密碼實現(xiàn)方式時,曾經(jīng)提到過對于信息完整性驗證需要其他技術(shù)來支持,這種技術(shù)就是由散列函數(shù)提供的消息認證技術(shù)。

散列函數(shù),也稱做哈希函數(shù)、消息摘要函數(shù)、單向函數(shù)或雜湊函數(shù)。與上述密碼體制不同的是,散列函數(shù)的主要作用不是完成數(shù)據(jù)加密與解密的工作,它是用來驗證數(shù)據(jù)的完整性的重要技術(shù)。通過散列函數(shù),可以為數(shù)據(jù)創(chuàng)建“數(shù)字指紋”(散列值)。散列值通常是一個短的隨機字母和數(shù)字組成的字符串。消息認證流程如圖2-12所示。

圖2-12 消息認證流程

在上述認證流程中,信息收發(fā)雙方在通信前已經(jīng)商定了具體的散列算法,并且該算法是公開的。如果消息在傳遞過程中被篡改,則該消息不能與已獲得的數(shù)字指紋相匹配。

散列函數(shù)具有以下一些特性:

? 消息的長度不受限制。

? 對于給定的消息,其散列值的計算是很容易的。

? 如果兩個散列值不相同,則這兩個散列值的原始輸入消息也不相同,這個特性使得散列函數(shù)具有確定性的結(jié)果。

? 散列函數(shù)的運算過程是不可逆的,這個特性稱為函數(shù)的單向性。這也是單向函數(shù)命名的由來。

? 對于一個已知的消息及其散列值,要找到另一個消息使其獲得相同的散列值是不可能的,這個特性稱為抗弱碰撞性。這被用來防止偽造。

? 任意兩個不同的消息的散列值一定不同,這個特性稱為抗強碰撞性。

散列函數(shù)廣泛用于信息完整性的驗證,是數(shù)據(jù)簽名的核心技術(shù)。散列函數(shù)的常用算法有MD—消息摘要算法、SHA—安全散列算法及MAC—消息認證碼算法。我們將在后續(xù)章節(jié)詳述上述散列函數(shù)的算法實現(xiàn)。

2.8 數(shù)字簽名

通過散列函數(shù)可以確保數(shù)據(jù)內(nèi)容的完整性,但這還遠遠不夠。此外,還需要確保數(shù)據(jù)來源的可認證(鑒別)性和數(shù)據(jù)發(fā)送行為的不可否認性。完整性、認證性和不可否認性,正是數(shù)字簽名的主要特征。數(shù)字簽名針對以數(shù)字形式存儲的消息進行處理,產(chǎn)生一種帶有操作者身份信息的編碼。執(zhí)行數(shù)字簽名的實體稱為簽名者,簽名過程中所使用的算法稱為簽名算法(Signature Algorithm),簽名操作中生成的編碼稱為簽名者對該消息的數(shù)字簽名。發(fā)送者通過網(wǎng)絡(luò)將消息連同其數(shù)字簽名一起發(fā)送給接收者。接收者在得到該消息及其數(shù)字簽名后,可以通過一個算法來驗證簽名的真?zhèn)我约白R別相應的簽名者。這一過程稱為驗證過程,其過程中使用的算法稱為驗證算法(Verification Algorithm),執(zhí)行驗證的實體稱為驗證者。數(shù)字簽名離不開非對稱密碼體制,簽名算法受私鑰控制,且由簽名者保密;驗證算法受公鑰控制,且對外公開。RSA算法則既是最為常用的非對稱加密算法,也是最為常用的簽名算法。DSA算法是典型的數(shù)字簽名算法,雖然本身屬于非對稱加密算法不具備數(shù)據(jù)加密與解密的功能。

數(shù)字簽名滿足以下三個基本要求:

? 簽名者任何時候多無法否認自己曾經(jīng)簽發(fā)的數(shù)字簽名。

? 信息接收者能夠驗證和確認收到的數(shù)字簽名,但任何人無法偽造信息發(fā)送者的數(shù)字簽名。

? 當收發(fā)雙方對數(shù)字簽名的真?zhèn)萎a(chǎn)生爭議時,通過仲裁機構(gòu)(可信賴的第三方)進行仲裁。

數(shù)字簽名認證流程如圖2-13所示。在這里提請大家注意:私鑰用于簽名,公鑰用于驗證。簽名操作只能由私鑰完成,驗證操作只能有公鑰完成;公鑰與私鑰成對出現(xiàn),用公鑰加密的消息只能用私鑰解密,用私鑰加密的消息只能用公鑰解密。

那么,數(shù)字簽名認證是怎樣一個流程呢?我們暫定甲方擁有私鑰,并且甲方將公鑰發(fā)布給乙方;當甲方作為消息的發(fā)送方時,甲方使用私鑰對消息做簽名處理,然后將消息加密后連同數(shù)字簽名發(fā)送給乙方。乙方使用已獲得的公鑰對接收到的加密消息做解密處理,然后使用公鑰及數(shù)字簽名對原始消息做驗證處理。

圖2-13 數(shù)字簽名認證流程

當然,我們可以對消息先加密,然后對加密后的消息做簽名處理,這樣乙方獲得消息后,先做驗證處理,如果驗證通過則對消息解密。反之,驗證失敗則拋棄消息。這樣做顯然可以提高系統(tǒng)的處理速度,但即便如此,作者仍建議大家對消息先做簽名,再做加密處理。加密與簽名都應該只針對原始消息(明文)做處理。加密是為了確保消息在傳送過程中避免被破解,簽名是為了確保消息的有效性。消息本身可能就是一個可執(zhí)行的文件,消息的接收方通過對消息的驗證來判別該文件是否有權(quán)執(zhí)行,而這個文件本身是不需要加密的。

由于簽名不可偽造,甲方不能否認自己已發(fā)送的消息,而乙方可驗證消息的來源以及消息是否完整。數(shù)字簽名可提供OSI參考模型五類安全服務中的三種服務:認證(鑒別)服務、抗否認服務和數(shù)據(jù)完整性服務。正因如此,數(shù)字簽名成為公鑰基礎(chǔ)設(shè)施以及許多網(wǎng)絡(luò)安全機制的基礎(chǔ)。

在上述認證過程的描述中,似乎大家有這樣一個疑問:當乙方作為發(fā)送方,通過公鑰將消息加密后發(fā)送給甲方時,由于算法、公鑰公開,任何一個已獲得公鑰的竊聽者都可以截獲乙方發(fā)送的消息,替換成自己的消息發(fā)送給甲方,而甲方無法辨別消息是否來源于乙方。也就是說,上述的認證方式是單向的,屬于單向認證。如果有兩套公私鑰,甲乙兩方都對數(shù)據(jù)做簽名及驗證就可以避免這一問題。沒錯,這種認證方式正是雙向認證。以網(wǎng)銀交易為例,一般的網(wǎng)銀交易使用的都是單向認證方式,無法驗證使用者的身份;而要求較高的網(wǎng)銀交易則都是雙向認證方式,交易雙方身份都可以得到驗證。

2.9 密碼學的未來

密碼學歷經(jīng)四千年錘煉,從古代走到了現(xiàn)代,從軍用走向了民用,逐步貼近我們生活領(lǐng)域的每一個角落。密碼學也有“新陳代謝”,各種國際著名的密碼算法被攻破,預示著更加安全的密碼算法即將誕生。

2.9.1 密碼算法的破解

密碼算法并不像我們想象的那么安全,我們所熟知的、常用的各種算法竟然在歷史的昨天就被破解。

1997年1月28日,美國的RSA數(shù)據(jù)安全公司在RSA安全年會上公布了一項“秘密密鑰挑戰(zhàn)”競賽,其中包括懸賞1萬美元破譯密鑰長度為56位的DES。位于美國科羅拉多州的程序員Verser從1997年2月18日起,用了96天時間,在網(wǎng)絡(luò)上數(shù)萬名志愿者的協(xié)同工作下,成功地找到了DES的密鑰,贏得了懸賞的1萬美元。

1998年7月,電子前沿基金會(EFF)使用一臺25萬美元的電腦在56小時內(nèi)破譯了密鑰長度為56位的DES。

1999年1月,RSA數(shù)據(jù)安全會議期間,電子前沿基金會用22小時15分鐘就宣告破解了一個DES的密鑰。

2004年8月,在美國加州圣芭芭拉召開的國際密碼大會(Crypto’2004)上,山東大學王小云教授宣告她和她的團隊已經(jīng)破解了MD5、HAVAL-128、MD4和RIPEMD四大國際著名密碼算法。MD5算法的破解預示著SHA-1算法的末日。

2005年2月,較之MD5算法有著更高安全系數(shù)的SHA-1算法毫無懸念地被王小云教授破解了。MD5和SHA-1的破解,動搖了目前數(shù)字簽名的理論根基,從理論上說明數(shù)字簽名可以偽造。

2007年,Marc Stevens、Arjen K. Lenstra和Benne de Weger進一步指出通過偽造軟件簽名,可重復性攻擊MD5算法。研究者使用前綴碰撞法(chosen-prefix collision),使程序前端包含惡意程序,利用后面的空間添上垃圾代碼湊出同樣的MD5散列值。

2008年,荷蘭埃因霍芬技術(shù)大學科學家成功把兩個可執(zhí)行文件進行了MD5碰撞,使得這兩個運行結(jié)果不同的程序被計算出同一個MD5。2008年12月一組科研人員通過MD5碰撞成功生成了偽造的SSL證書,這使得在HTTPS協(xié)議中服務器可以偽造一些根CA的簽名。

盡管各種大名鼎鼎的密碼算法被破解,但這卻更加帶動了密碼學前進的腳步。也許不久的將來,量子密碼學將成為密碼學領(lǐng)域新一代的霸主!

2.9.2 密碼學的明天

隨著計算機網(wǎng)絡(luò)應用的迅猛發(fā)展,人們對信息安全和保密的重要性認識不斷提高,密碼學在信息安全中起著舉足輕重的作用,已成為信息安全中不可或缺的重要部分。從古代發(fā)展到現(xiàn)代,由軍用轉(zhuǎn)為民用,密碼學有著廣泛的發(fā)展前景。自動柜員機芯片卡、公交IC卡、電子商務等都離不開密碼學的支持。幾乎可以說有網(wǎng)絡(luò)的地方,就有密碼學的身影。隨著各種具有高度安全系數(shù)的國際密碼算法的破解,密碼算法正經(jīng)歷著自己的“新陳代謝”。新的密碼學理論層出不窮,新的密碼算法嶄露頭角。我們堅信,密碼學的明天將有無限可能。

2.10 小結(jié)

縱觀密碼學的發(fā)展史,它的發(fā)展共經(jīng)歷了三個發(fā)展階段,分別是手工加密階段、機械加密階段和計算機加密階段。手工加密階段最為漫長,期間孕育了古典密碼,為后期密碼學的發(fā)展奠定了基礎(chǔ)。機械工業(yè)革命發(fā)展的同時促進著各種科學技術(shù)的進步,密碼學也不例外。加之兩次世界大戰(zhàn),更加促進了密碼學的飛速發(fā)展,密碼學由此進入現(xiàn)代密碼學階段。但盡管如此,在這一階段的密碼學仍舊未能擺脫古典密碼學的影子,加密與解密操作均有賴于語言學的支持,轉(zhuǎn)輪密碼機Enigma的發(fā)明與破解更是將這一特點發(fā)揮到了極致。隨著數(shù)據(jù)理論逐步介入,密碼學逐漸成為一門學科,而非一門藝術(shù)。進入計算機加密階段后,密碼學應用不再局限于軍事、政治和外交領(lǐng)域,逐步擴大到商務、金融和社會的其他領(lǐng)域。密碼學的研究和應用已大規(guī)模擴展到了民用方面。

密碼學主要包含兩個分支:密碼編碼學和密碼分析學。密碼編碼學針對于信息如何隱藏;密碼分析學針對于信息如何破譯。編碼學與分析學相互影響,共同促進密碼學的發(fā)展。

古典密碼是現(xiàn)代密碼的基礎(chǔ),移位和替代是古典密碼最常用、最核心的兩種加密技巧。由此,古典密碼主要分為移位密碼和替代密碼。例如,凱撒密碼就是替代密碼的典范。替代密碼其分支眾多,包含單表替代密碼、同音替代密碼、多表替代密碼和多字母替代密碼。移位和替代技巧仍是現(xiàn)代密碼學最常用的兩種加密手段。

基于柯克霍夫原則,對密碼算法公開,對密鑰保密。密碼算法公開有助于提高算法的安全性,避免算法自身的漏洞,如算法的設(shè)計者為算法留有后門等。

從密碼體制上劃分,現(xiàn)代密碼學共分為兩種密碼體制:對稱密碼體制和非對稱密碼體制。對稱與非對稱的差別源于加密密鑰和解密密鑰是否對稱,即加密密鑰與解密密鑰是否相同(對稱)。

在對稱密碼體制中,加密與解密操作使用相同的密鑰,我們把這個密鑰稱為秘密密鑰。DES、AES算法都是常用的對稱密碼算法。流密碼和分組密碼都屬于對稱密碼體制。流密碼實現(xiàn)簡單,對環(huán)境要求低,適用于手機平臺的加密,廣泛應用于軍事、外交領(lǐng)域。RC4算法就是典型的流密碼算法。流密碼的理論、算法受限于國家安全因素未能公布。分組密碼在這一點上與流密碼恰恰相反,其理論、算法公開,分類眾多。DES、AES算法等主要的對稱密碼算法均屬于分組密碼。分組密碼共有五種工作模式:電子密碼本模式(ECB)、密文鏈接模式(CBC)、密文反饋模式(CFB)、輸出反饋模式(OFB)、計數(shù)器模式(CTR)。分組密碼會產(chǎn)生短塊,關(guān)于短塊的處理方法有填充法、流密碼加密法、密文挪用技術(shù)。

在非對稱密碼體制中,加密與解密操作使用不同的密鑰。對外公開的密鑰,稱為公鑰;對外保密的密鑰,稱為私鑰。用公鑰加密的數(shù)據(jù),只能用私鑰解密;反之,用私鑰加密的數(shù)據(jù),只能用公鑰解密。RSA算法是常用的非對稱密碼算法。非對稱密碼體制同時支持數(shù)字簽名技術(shù),如RSA、DSA都是常用的數(shù)字簽名算法。

散列函數(shù)可以有效地確保數(shù)據(jù)完整性,被作為消息認證技術(shù)。常用的散列函數(shù)算法有MD5、SHA、MAC。散列函數(shù)也是數(shù)字簽名技術(shù)中最重要的技術(shù)環(huán)節(jié)。數(shù)字簽名離不開非對稱密碼體制,其私鑰用于簽名,公鑰用于驗證。基于數(shù)字簽名的不可偽造性,數(shù)字簽名技術(shù)成為五類安全服務中數(shù)據(jù)完整性服務、認證性服務和抗否認性服務的核心技術(shù)。通信雙方只有一方提供數(shù)字簽名的認證方式稱為單向認證,通信雙方都提供數(shù)字簽名的認證方式稱為雙向認證。一般網(wǎng)銀系統(tǒng)多采用單向認證方式,而要求較高的網(wǎng)銀交易則都采用雙向認證方式。密碼學在不斷地向前發(fā)展,只不過它的發(fā)展通常是以其密碼算法的破解而引發(fā),以更高安全系數(shù)算法的誕生而告一段落,密碼學的明天將無可限量。

主站蜘蛛池模板: 焦作市| 万荣县| 柯坪县| 大安市| 江油市| 广西| 平湖市| 麻城市| 嘉荫县| 洮南市| 沁源县| 偏关县| 肃宁县| 调兵山市| 友谊县| 方正县| 海淀区| 松滋市| 张家港市| 江山市| 林西县| 化隆| 拉孜县| 铜川市| 白沙| 咸丰县| 垫江县| 铜鼓县| 宝坻区| 丘北县| 临沂市| 乌鲁木齐县| 聂荣县| 延吉市| 达孜县| 榆树市| 若尔盖县| 泸水县| 台湾省| 吴川市| 资兴市|