1. 密碼學概述
(1)密碼學的發展歷程
密碼學是一門古老而深奧的學科,是結合數學、計算機科學、電子與通信等諸多學科于一體的交叉學科,是研究信息系統安全保密的一門科學。密碼學主要包括密碼編碼學和密碼分析學兩個分支,其中密碼編碼學的主要目的是尋求保證信息保密性或仁整形的方法,密碼分析學的主要目的是研究加密消息的破譯或消息的偽造。密碼學經歷了從古代密碼學到現代密碼學的演變。



最早將現代密碼學概念運用于實際的是Caesar大帝,他是古羅馬帝國末期著名的統帥和政治家。Caesar發明了一種簡單的加密算法把他的信息加密用于軍隊傳遞,后來被稱為Caesar密碼。它是將字母按字母表的順序排列,并且最后一個字母與第一個字母相連。加密方法是將明文中的每個字母用其后邊的第三個字母代替,就變成了密文。
替代密碼的基本思想,是將明文中的每個字母用此字符在字母表中后面第 k個字母替代,加密過程可以表示為函數E(m)=(m+k) mod n。其中:m 為明文字母在字母表中的位置數,n 為字母表中的字母個數,k 為密鑰,E(m)為密文字母在字母表中對應的位置數。其解密過程可以表示為函數E(m)=(m-k) mod n。
置換密碼的基本思想,不改變明文字符,只是將字符在明文中的排列順序改變,從而實現明文信息的加密,又稱為換位密碼。矩陣換位法是實現置換密碼的一種常用方法,它將明文中的字母按照給的順序安排在一個矩陣中,然后根據密鑰提供的順序重新組合矩陣中字母,從而形成密文。
第一階段:古代―1949年
這階段的密碼技術可以說是一種藝術,而不是一種科學,密碼學專家常常是憑知覺和信念來進行密碼設計和分析,而不是推理和證明,沒有形成密碼學的系統理論。這一階段設計的密碼稱為經典密碼或古典密碼,并且密碼算法在現代計算機技術條件下都是不安全的。
第二階段:1949―1975年
1949年C.E.Shannon(香農)發表在《貝爾實驗室技術雜志》上的《保密系統的信息理論(Communication Theory of Secrecy System)》為私鑰密碼體系(對稱加密)建立了理論基礎,從此密碼學成為一門科學。圖3-3為Shannon提出的保密通信模型。密碼學直到今天仍具有藝術性,是具有藝術性的一門科學。這段時期密碼學理論的研究工作進展不大。1967年David Kahn發表了《The Code Breakers(破譯者)》一書,詳盡地闡述了密碼學的發展和歷史,使人們開始了解和接觸密碼。1976年,Pfister(菲斯特)和美國國家安全局NSA(National Security Agency)一起制定了數據加密標準(Data Encryption Standard,DES),這是一個具有深遠影響的分組密碼算法。

第三階段:1976年到~
1976年Diffie和Hellman發表的文章“密碼學發展的新方向”導致了密碼學上的一場革命,他們首先證明了在發送端和接收端無密鑰傳輸的保密通信是可能的,從而開創了公鑰密碼學的新紀元。從此,密碼開始充分發揮它的商用價值和社會價值。1978年,在ACM通信中,Rivest、Shamir和Adleman公布了RSA密碼體系,這是第一個真正實用的公鑰密碼體系,可以用于公鑰加密和數字簽名。由于RSA算法對計算機安全和通信的巨大貢獻,該算法的3個發明人因此獲得計算機界的諾貝爾獎—圖靈獎(A.M.Turing Award)。在EuroCrypt’91年會上,中國旅居瑞士學者來學嘉(X.J.Lai)和James L. Massey提出了IDEA,成為分組密碼發展史上的又一個里程碑。
3.1.2 密碼學的基本知識
密碼學的基本目的是使得兩個在不安全信道中通信的人,通常稱為Alice和Bob,以一種使他們的敵手Oscar不能明白和理解通信內容的方式進行通信。不安全信道在實際中是普遍存在的,例如電話線或計算機網絡。Alice發送給Bob的信息,通常稱為明文(plaintext),例如英文單詞、數據或符號。Alice使用預先商量好的密鑰(key)對明文進行加密,加密過的明文稱為密文(ciphertext),Alice將密文通過信道發送給Bob。對于敵手Oscar來說,他可以竊聽到信道中Alice發送的密文,但是卻無法知道其所對應的明文;而對于接收者Bob,由于知道密鑰,可以對密文進行解密,從而獲得明文。圖3-4給出加密通信的基本過程,加密算法E,解密算法D,明文M,密文C;要傳輸明文M,首先要加密得到密文C,即C=E(M),接受者收到C后,要對其進行解密,即D(C)=M,為了保證將明文恢復,要求D(E(M))=M。

(2) 基本概念
明文消息(Plaintext):未加密的原消息,簡稱明文。
密文消息(Ciphertext):加密后的消息,簡稱密文。
加密(Encryption):明文到密文的變換過程。
解密(Decryption):密文到明文的恢復過程。
加密算法(Encryption Algorithm):對明文進行加密時所采用的一組規則或變換。
解密算法(Decryption Algorithm):對密文進行解密時所采用的一組規則或變換。
密碼算法強度(Algorithm Strength):對給定密碼算法的攻擊難度。
密鑰(Key):加解密過程中只有發送者和接收者知道的關鍵信息,分為加密密鑰(Encryption Key)和解密密鑰(Decryption Key)。
密碼分析(Cryptanalysis):雖然不知道系統所用的密鑰,但通過分析可能從截獲的密文中推斷出原來的明文,這一過程稱為密碼分析。
一個密碼系統(或稱為密碼體制,Cryptosystem)由加密算法、解密算法、明文空間(全體明文的集合)、密文空間(全體密文的集合)和密鑰空間(全體密鑰的集合)組成。
什么是密碼學?密碼學(Cryptology)是研究如何實現秘密通信的科學,包含密碼編碼學和密碼分析學。密碼編碼學(Cryptography)是研究對信息進行編碼以實現信息隱蔽;密碼分析學(Cryptanalytics)是研究通過密文獲取對應的明文信息。
(3) 密碼技術的基本應用
①用加密來保護信息。利用密碼變換將明文變換成只有合法者才能恢復的密文,這是密碼的最基本的功能。利用密碼技術對信息進行加密是最常用的安全交易手段。
②采用密碼技術對發送信息進行驗證。為防止傳輸和存儲的消息被有意或無意地篡改,采用密碼技術對消息進行運算生成消息驗證碼(mac),附在消息之后發出或與信息一起存儲,對信息進行認證。它在票據防偽中具有重要應用(如稅務的金稅系統和銀行的支付密碼器)。
③數字簽名。在信息時代,電子信息的收發使我們過去所依賴的個人特征都被數字代替,數字簽名的作用有兩點:一是接收方可以發送方的真實身份,且發送方事后不能否認發送國該報文這一事實;二是發送方或非法者不能偽造、篡改報文。數字簽名并非是用手書簽名的圖形標志,二是采用雙重加密的方法來防偽、防賴。根據采用的加密技術不同,數字簽名有不同的種類,如私用密鑰的數字簽名、公開密鑰的數字簽名、只需簽名的數字簽名、數字摘要的數字簽名等。
④身份識別。當用戶登錄計算機系統或者建立最初的傳輸連接時,用戶需要證明他的身份,典型的方法是采用口令機制來確認用戶的真實身份。此外,采用數字簽名也能夠進行身份鑒別,數字證書用電子手段來證實一個用戶的身份和對網絡資源的訪問權限,是網絡正常運行鎖屏必須的。在電子商務系統中,所有參與活動的實體都需要用數字證書來表明自己的身份。
3. 密碼學的體制
按密鑰使用的數量不同,將密碼體制分為對稱密碼體系 (symmetric)(又稱為單鑰密碼)和非對稱密碼(asymmetric)(又稱為公鑰密碼)。
在對稱密碼體系中,加密密鑰和解密密鑰相同,彼此之間很容易相互確定。對于對稱密碼而言,按照明文加密方式的不同,又可分為分組密碼(block cipher)和流密碼(stream cipher)。流密碼是指將明文消息按字符逐位地進行加密。分組密碼是指將明文消息分組(每組含有多個字符)逐組地進行加密。在公鑰密碼體系中,加密密鑰(又稱為公鑰,Public Key)和解密密鑰(又稱為私鑰,Private Key)不同,從一個密鑰很難推出另一個密鑰,可將加密能力和解密能力分開,不需要通過專門的安全通道來傳送密鑰。大多數公鑰密碼屬于分組密碼。
(4) 對密碼的攻擊
密文分析者在不知道密鑰的情況下,從密文恢復出明文。成功的密碼分析不僅能夠恢復出消息明文和密鑰,而且能夠發現密碼體制的弱點,從而控制通信。常見的密碼分析方法有以下四類。
①唯密文攻擊(Ciphertext only)。密碼破譯者除了擁有截獲的密文,以及對密碼體制和密文信息的一般了解外,沒有什么其它可以利用的信息用于破譯密碼。在這種情況下進行密碼破譯是最困難的,經不起這種攻擊的密碼體制被認為是完全不保密的。
②已知明文攻擊(Known plaintext)。密碼破譯者不僅掌握了相當數量的密文,還有一些已知的明---密文對(通過各種手段得到的)可供利用。現代的密碼體制(基本要求)不僅要經受得住唯密文攻擊,而且要經受得住已知明文攻擊。
③選擇明文攻擊(Chosen plaintext)。密碼破譯者不僅能夠獲得一定數量的明---密文對,還可以用它選擇的任何明文,在同一未知密鑰的情況下能加密相應的密文。密碼破譯者暫時控制加密機。

④選擇密文攻擊(Chosen ciphertext) 。密碼破譯者能選擇不同的被加密的密文,并還可得到對應的解密的明文,據此破譯密鑰及其它密文。密碼破譯者暫時控制解密機。
一個好的密碼系統應該滿足下列要求:①系統即使理論上達不到不可破,實際上也要做到不可破。也就是說,從截獲的密文或已知的明文—密文對,要確定密鑰或任何明文在計算上是不可行的。②系統的保密性是依賴于密鑰的,而不是依賴于對加密體制或算法的保密。③加密和解密算法適用于密鑰空間的所有元素。④系統既易于實現又便于使用。
@木子羽辰,將一直帶給大家信息安全知識,由淺至深、采用體系化結構逐步分享,大家有什么建議和問題,可以及留言,多謝大家關注,謝謝大家。