密碼學(cryptography)是以研究數據保密為目的對存儲或傳輸的信息進行秘密的變換以防止被第三者竊取的技術。
基本簡介
密碼學(在西歐語文中,源于希臘語kryptós“隱藏的”,和gráphein“書寫”)是研究如何隱密地傳遞信息的學科。在現代特別指對信息以及其傳輸的數學性研究,常被認為是數學和計算機科學的分支,和信息論也密切相關。著名的密碼學者Ron Rivest解釋道:“密碼學是關于如何在敵人存在的環境中通訊”,自工程學的角度,這相當于密碼學與純粹數學的異同。
密碼是通信雙方按約定的法則進行信息特殊變換的一種重要保密手段。依照這些法則,變明文為密文,稱為加密變換;變密文為明文,稱為脫密變換。密碼在早期僅對文字或數碼進行加、脫密變換,隨著通信技術的發展,對語音、圖像、數據等都可實施加、脫密變換。
密碼學可分為傳統密碼體制和現代密碼體制。在傳統密碼體制中,加密和解密采用的是同一密鑰,即k=k′并且Dk′(Ek(P))=P,稱為對稱密鑰加密密碼系統,也稱私鑰密碼系統。私鑰密碼系統中使用的密鑰常稱作傳統密鑰或傳統密碼。現代密碼體制中加密和解密采用不同的密鑰稱為非對稱密鑰密碼系統,每個通信方均需要k和k′兩個密鑰,在進行保密通信時通常將加密密鑰k公開,稱為公鑰。而將解密密鑰k′保密,稱為私鑰。所以也稱為公鑰密碼系統。傳統密碼系統中最常見的算法有數據加密標準(DES)、國際數據加密算法(IDEA)等,DES算法是IBM開發的并于1997年被美國政府采納為非機密信息的加密標準,它的原始形式已經在1995年被人攻破,但其修改后的形式仍然是有效的,IDEA是Lai和Massey提出的,目前還沒有發現有效的攻擊方法。
密碼學是信息安全等相關議題,如認證、訪問控制的核心。密碼學的首要目的是隱藏信息的涵義,并不是隱藏信息的存在。密碼學也促進了計算機科學,特別是在于電腦與網絡安全所使用的技術,如訪問控制與信息的機密性。密碼學已被應用在日常生活:包括自動柜員機的芯片卡、電腦使用者存取密碼、電子商務等等。
發展歷程
密碼學是在編碼與破譯的斗爭實踐中逐步發展起來的,并隨著先進科學技術的應用,已成為一門綜合性的尖端技術科學。它與語言學、數學、電子學、聲學、信息論、計算機科學等有著廣泛而密切的聯系。它的現實研究成果,特別是各國政府現用的密碼編制及破譯手段都具有高度的機密性。
由于古時多數人并不識字,最早的秘密書寫的形式只用到紙擦筆或等同物品,隨著識字率提高,就開始需要真正的密碼學了。最古典的兩個加密技巧有兩個。第一置換(Transposition cipher),將字母順序重新排列。第二替代(substitution cipher),有系統地將一組字母換成其他字母或符號。
其實在公元前,秘密書信已用于戰爭之中。西洋“歷史學之父”希羅多德(Herodotus)的《歷史》(The Histories)當中記載了一些最早的秘密書信故事。公元前5世紀,希臘城邦為對抗奴役和侵略,與波斯發生多次沖突和戰爭。于公元前480年,波斯秘密集結了強大的軍隊,準備對雅典(Athens)和斯巴達(Sparta)發動一次突襲。希臘人狄馬拉圖斯(Demaratus)在波斯的蘇薩城(Susa)里看到了這次集結,便利用了一層蠟把木板上的字遮蓋住,送往并告知了希臘人波斯的圖謀。最后,波斯海軍覆沒于雅典附近的沙拉米斯灣(Salamis Bay)。
大量的公開學術研究出現,起源于一九七零年代中期,美國國家標準局(National Bureau of Standards,NBS;現稱國家標準技術研究所,National|Institute of Standards and Technology,NIST)制定數字加密標準(DES),Diffie和Hellman提出的開創性論文,以及公開釋出RSA。從那個時期開始,密碼學成為通訊、電腦網絡、電腦安全等領域的重要工具。許多現代的密碼技術的基礎依賴于特定計算問題的困難度,例如因子分解問題或是離散對數問題。許多密碼技術可被證明為只要特定的計算問題無法被有效地解出,那就安全。除了一個著名的例外:一次墊(one-time pad,OTP),這類證明是偶然的而非決定性的,但是是目前可用的最好的方式。
20世紀70年代以來,一些學者提出了公開密鑰體制,即運用單向函數的數學原理,以實現加、脫密密鑰的分離。加密密鑰是公開的,脫密密鑰是保密的。這種新的密碼體制,引起了密碼學界的廣泛注意和探討。
現代的研究主要在分組密碼(block cipher)與流密碼(stream cipher)及其應用。分組密碼在某種意義上是阿伯提的多字符加密法的現代化。分組密碼取用明文的一個區塊和鑰匙,輸出相同大小的密文區塊。由于信息通常比單一區塊還長,因此有了各種方式將連續的區塊編織在一起。DES和AES是美國聯邦政府核定的分組密碼標準(AES將取代DES)。盡管將從標準上廢除,DES依然很流行(3DES變形仍然相當安全),被使用在非常多的應用上,從自動交易機、電子郵件到遠端存取。也有許多其他的區塊加密被發明、釋出,品質與應用上各有不同,其中不乏被破解者。
理論基礎
在通信過程中,待加密的信息稱為明文,已被加密的信息稱為密文,僅有收、發雙方知道的信息稱為密鑰。在密鑰控制下,由明文變到密文的過程叫加密,其逆過程叫脫密或解密。在密碼系統中,除合法用戶外,還有非法的截收者,他們試圖通過各種辦法竊取機密(又稱為被動攻擊)或竄改消息(又稱為主動攻擊)。
對于給定的明文m和密鑰k,加密變換E將明文變為密文c=f(m,k)=E(m),在接收端,利用脫密密鑰k,(有時k=k,)完成脫密操作,將密文c恢復成原來的明文m=D(c)。一個安全的密碼體制應該滿足:①非法截收者很難從密文C中推斷出明文m;②加密和脫密算法應該相當簡便,而且適用于所有密鑰空間;③密碼的保密強度只依賴于密鑰;④合法接收者能夠檢驗和證實消息的完整性和真實性;⑤消息的發送者無法否認其所發出的消息,同時也不能偽造別人的合法消息;⑥必要時可由仲裁機構進行公斷。
現代密碼學所涉及的學科包括:信息論、概率論、數論、計算復雜性理論、近世代數、離散數學、代數幾何學和數字邏輯等。
基本特性
數據加密的基本思想是通過變換信息的表示形式來偽裝需要保護的敏感信息,使非授權者不能了解被保護信息的內容。網絡安全使用密碼學來輔助完成在傳遞敏感信息的的相關問題,主要包括:
(I)機密性(confidentiality)
僅有發送方和指定的接收方能夠理解傳輸的報文內容。竊聽者可以截取到加密了的報文,但不能還原出原來的信息,即不能得到報文內容。
(II)鑒別(authentication)
發送方和接收方都應該能證實通信過程所涉及的另一方,通信的另一方確實具有他們所聲稱的身份。即第三者不能冒充跟你通信的對方,能對對方的身份進行鑒別。
(III)報文完整性(message intergrity)
即使發送方和接收方可以互相鑒別對方,但他們還需要確保其通信的內容在傳輸過程中未被改變。
(IV)不可否認性(non-repudiation)
如果人們收到通信對方的報文后,還要證實報文確實來自所宣稱的發送方,發送方也不能在發送報文以后否認自己發送過報文。
專業術語
加密:將明文轉換成密文的實施過程。
解密:將密文轉換成明文的實施過程。
明文:沒有進行加密,能夠直接代表原文含義的信息。
密文:經過加密處理處理之后,隱藏原文含義的信息。
密鑰:分為加密密鑰和解密密鑰。密鑰是一個用于加解密算法的秘密參數,通常只有通信者擁有。歷史上,密鑰通常未經認證或完整性測試而被直接使用在加解密上。
密碼算法:密碼系統采用的加密方法和解密方法,隨著基于數學密碼技術的發展,加密方法一般稱為加密算法,解密方法一般稱為解密算法。直到現代以前,密碼學幾乎專指加密(encryption)算法,將普通信息(明文,plaintext)轉換成難以理解的資料(密文,ciphertext)的過程;解密(decryption)算法則是其相反的過程,由密文轉換回明文;加解密包含了這兩種算法,一般加密即同時指稱加密(encrypt或encipher)與解密(decrypt或decipher)的技術。加解密的具體運作由兩部分決定:一個是算法,另一個是密鑰。
密碼強度:一個密碼被非認證的用戶或計算機破譯的難度。密碼強度通常用“弱”或“強”來形容。“弱”和“強”是相對的,不同的密碼系統對于密碼強度有不同的要求。密碼的破譯與系統允許客戶嘗試不同密碼的次數、是否熟悉密碼主人等因素相關。然而,即使再強的密碼也有可能被偷取、破譯或泄漏,在用戶設置密碼時,盡可能的將密碼設置的越復雜、位數越長、經常更換此類型的密碼,從而才能讓密碼強度盡可能達到最高。
密碼協議(cryptographic protocol):使用密碼技術的通信協議(傳播學 protocol)。近代密碼學者多認為除了傳統上的加解密算法,密碼協議也一樣重要,兩者為密碼學研究的兩大課題。在英文中,cryptography和cryptology都可代表密碼學,前者又稱密碼術。但更嚴謹地說,前者(cryptography)指密碼技術的使用,而后者(cryptology)指研究密碼的學科,包含密碼術與密碼分析。密碼分析(cryptanalysis)是研究如何破解密碼學的學科。但在實際使用中,通常都稱密碼學(英文通常稱cryptography),而不具體區分其含義。
密碼體制:進行明密變換的法則。指示這種變換的參數,稱為密鑰。它們是密碼編制的重要組成部分。密碼體制的基本類型可以分為四種:錯亂,按照規定的圖形和線路,改變明文字母或數碼等的位置成為密文;代替,用一個或多個代替表將明文字母或數碼等代替為密文;密本,用預先編定的字母或數字密碼組,代替一定的詞組單詞等變明文為密文;加亂用有限元素組成的一串序列作為亂數,按規定的算法,同明文序列相結合變成密文。以上四種密碼體制,既可單獨使用,也可混合使用,以編制出各種復雜度很高的實用密碼。
編碼(code):常意指加密或隱藏信息的各種方法。然而,在密碼學中,編碼有更特定的意義:它意指以碼字(code word)取代特定的明文。例如,以‘蘋果派’(apple pie)替換‘拂曉攻擊’(attack at dawn)。編碼已經不再被使用在嚴謹的密碼學上,它在信息論或通訊原理上有更明確的意義。
密碼破譯
密碼學研究的內容包含兩部分:一是加密算法的設計和研究,另外一部分是密碼分析也就是密碼破譯技術。
在密碼學中,如果進行密碼分析的攻擊者對密碼通信進行攻擊時。僅能夠被動地監聽通信道上所有信息就被稱為被動攻擊。如果攻擊者還能夠對通信信道上傳輸的消息進行截取、修改甚至主動發送信息則稱之為主動攻擊,攻擊者與報文接收方的區別在于是否知道解密密鑰。由于攻擊者不知道解密密鑰,因此很難將密文脫密還原為明文。鑰方案較對稱密鑰加密方案處理速度慢,因此通常把公鑰與對稱密鑰技術結合起來實現最佳性能,即用公鑰密碼技術在通信雙方之間傳送對稱密鑰。而用私鑰密碼技術來對實際傳輸的數據加密、解密,另外,公鑰加密也用來對私鑰進行加密。
因為在現代密碼學研究中對于加密和解密算法一般都是公開的,所以對于攻擊者來說只要知道解密密鑰就能夠破譯密文,因此密鑰設計被稱為密碼學研究的核心,密鑰保護被視為防御攻擊的重點。對于密鑰分析來說,對其進行窮舉猜測攻擊是任何密碼系統都無法避免的,但是當密鑰長度足夠大并且足夠隨機就會使得窮舉猜測在實際上變得不可能。例如:密鑰長度為256位的加密算法,密鑰空間為2256對應為1077量級。如果一臺計算機每秒可以對密鑰空間進行一億次搜索,那么全部搜索一遍事件所需的時間以年為單位將大于1062,如果密鑰空間小或者分布具有一定可預見性那么攻擊者就可能利用相關知識大大縮小搜索空間,從而破譯密文。
產生歷史
密碼破譯是隨著密碼的使用而逐步產生和發展的。1412年,波斯人卡勒卡尚迪所編的百科全書中載有破譯簡單代替密碼的方法。到16世紀末期,歐洲一些國家設有專職的破譯人員,以破譯截獲的密信。密碼破譯技術有了相當的發展。1863年普魯士人卡西斯基所著《密碼和破譯技術》,以及1883年法國人克爾克霍夫所著《軍事密碼學》等著作,都對密碼學的理論和方法做過一些論述和探討。
1917年,英國破譯了德國外長齊默爾·曼的電報,促成了美國對德宣戰。1942年,美國從破譯日本海軍密報中,獲悉日軍對中途島地區的作戰意圖和兵力部署,從而能以劣勢兵力擊破日本海軍的主力,扭轉了太平洋地區的戰局。在保衛英倫三島和其他許多著名的歷史事件中,密碼破譯的成功都起到了極其重要的作用,這些事例也從反面說明了密碼保密的重要地位和意義。1949年美國人克勞德·香農發表了《秘密體制的通信理論》一文,應用信息論的原理分析了密碼學中的一些基本問題。
自19世紀以來,由于電報特別是收音機報的廣泛使用,為密碼通信和第三者的截收都提供了極為有利的條件。通信保密和偵收破譯形成了一條斗爭十分激烈的隱蔽戰線。
技術應用
1.數位簽章(Digital 標記)
這是以密碼學的方法,根據EDI訊息的內容和發信有該把私鑰,任何人都無法產生該簽名,因此比手寫式的簽名安全許多。收信人則以發信人的公鑰進行數位簽章的驗證。
2.數位信封(Digital Envelope)
這是以密碼學的方法,用收信人的公鑰對某些機密資料進行加密,收信人收到后再用自己的私鑰解密而讀取機密資料。除了擁有該私鑰的人之外,任何人即使拿到該加密過的訊息都無法解密,就好像那些資料是用一個牢固的信封裝好,除了收信人之外,沒有人能拆開該信封。
3.安全回條
收信人依據訊息內容計算所得到的回覆資料,再以收信人的私鑰進行數位簽章后送回發信人,一方面確保收信人收到的訊息內容正確無誤,另一方面也使收信人不能否認已經收到原訊息。
4.安全認證
每個人在產生自己的公鑰之后,向某一公信的安全認證中心申請注冊,由認證中心負責簽發憑證(Certificate),以保證個人身份與公鑰的對應性與正確性。
參考資料 >