密碼技術

密碼技術

密碼學(在西歐語文中之源於希臘語kryptós,“隱藏的”,和gráphein,“書寫”)是研究如何隱密地傳遞信息的學科。在現代特別指對信息以及其傳輸的數學性研究,常被認為是數學和計算機科學的分支,和資訊理論也密切相關。

詞語解釋


著名的密碼學者Ron Rivest解釋道:“密碼學是關於如何在敵人存在的環境中通訊”,自工程學的角度,這相當於密碼學與純數學的異同。

簡介


密碼學是信息安全等相關議題,如認證、訪問控制的核心。密碼學的首要目的是隱藏信息的涵義,並不是將隱藏信息的存在。密碼學也促進了計算機科學,特別是在於電腦與網路安全所使用的技術,如訪問控制與信息的機密性。密碼學已被應用在日常生活:包括自動櫃員機的晶元卡、電腦使用者存取密碼、電子商務等等。

術語


直到現代以前,密碼學幾乎專指加密演演算法:將普通信息(明文)轉換成難以理解的資料(密文)的過程;解密演演算法則是其相反的過程:由密文轉換回明文;密碼機(cipher或cypher)包含了這兩種演演算法,一般加密即同時指稱加密與解密的技術。密碼機的具體運作由兩部分決定:一個是演演算法,另一個是鑰匙。鑰匙是一個用於密碼機演演算法的秘密參數,通常只有通訊者擁有。歷史上,鑰匙通常未經認證或完整性測試而被直接使用在密碼機上。

密碼協議

(cryptographic protocol)是使用密碼技術的通信協議(communication protocol)。近代密碼學者多認為除了傳統上的加解密演演算法,密碼協議也一樣重要,兩者為密碼學研究的兩大課題。在英文中,cryptography和cryptology都可代表密碼學,前者又稱密碼術。但更嚴謹地說,前者(cryptography)指密碼技術的使用,而後者(cryptology)指研究密碼的學科,包含密碼術與密碼分析。

密碼分析

(cryptanalysis)是研究如何破解密碼學的學科。但在實際使用中,通常都稱密碼學(英文通常稱cryptography),而不具體區分其含義。
口語上,編碼(code)常意指加密或隱藏信息的各種方法。然而,在密碼學中,編碼有更特定的意義:它意指以碼字(code word)取代特定的明文。例如,以‘蘋果派’(apple pie)替換‘拂曉攻擊’(attack at dawn)。編碼已經不再被使用在嚴謹的密碼學,它在資訊理論或通訊原理上有更明確的意義。
在漢語口語中,電腦系統或網路使用的個人帳戶口令(password)也常被以密碼代稱,雖然口令亦屬密碼學研究的範圍,但學術上口令與密碼學中所稱的鑰匙(key)並不相同,即使兩者間常有密切的關連。

密碼學


現代密碼學大致可被區分為數個領域。對稱鑰匙密碼學指的是傳送方與接收方都擁有相同的鑰匙。直到1976年這都還是唯一的公開加密法。
現代的研究主要在分組密碼(Block Cipher)與流密碼(Stream Cipher)及其應用。分組密碼在某種意義上是阿伯提的多字元加密法的現代化。

分組密碼


分組密碼取用明文的一個區塊和鑰匙,輸出相同大小的密文區塊。由於信息通常比單一區塊還長,因此有了各種方式將連續的區塊編織在一起。 DES和AES是美國聯邦政府核定的分組密碼標準(AES將取代DES)。儘管將從標準上廢除,DES依然很流行(triple-DES變形仍然相當安全),被使用在非常多的應用上,從自動交易機、電子郵件到遠端存取。也有許多其他的區塊加密被發明、釋出,品質與應用上各有不同,其中不乏被破解者。

流密碼


流密碼,相對於區塊加密,製造一段任意長的鑰匙原料,與明文依位元或字元結合,有點類似一次墊(one-time pad)。輸出的串流根據加密時的內部狀態而定。在一些流密碼上由鑰匙控制狀態的變化。RC4是相當有名的流密碼。
密碼雜湊函數(有時稱作消息摘要函數,雜湊函數又稱散列函數或哈希函數)不一定使用到鑰匙,但和許多重要的密碼演演算法相關。它將輸入資料(通常是一整份文件)輸出成較短的固定長度雜湊值,這個過程是單向的,逆向操作難以完成,而且碰撞(兩個不同的輸入產生相同的雜湊值)發生的機率非常小。
信息認證碼或押碼(Message authentication codes, MACs)很類似密碼雜湊函數,除了接收方額外使用秘密鑰匙來認證雜湊值。

公開密碼


名詞解釋

公開密鑰密碼體系,簡稱公鑰密碼體系,又稱非對稱密鑰密碼體系,相對於對稱密鑰密碼體系,最大的特點在於加密和解密使用不同的密鑰。

概述

對稱密鑰密碼體系中,加密和解密使用相同的密鑰,也許對不同的信息使用不同的密鑰,但都面臨密鑰管理的難題。由於每對通訊方都必須使用異於他組的密鑰,當網路成員的數量增加時,密鑰數量成二次方增加。更尷尬的難題是:當安全的通道不存在於雙方時,如何建立一個共有的密鑰以利安全的通訊?如果有通道可以安全地建立密鑰,何不使用現有的通道。這個‘雞生蛋、蛋生雞’的矛盾是長年以來密碼學無法在真實世界應用的阻礙。
1976年,美國學者Whitfield Diffie與Martin Hellman發表開創性的論文,提出公開密鑰密碼體系的概念:一對不同值但數學相關的密鑰,公開鑰匙(或公鑰, public key)與私密鑰匙(私鑰,private key or secret key)。在公鑰系統中,由公開密鑰推算出配對的私密密鑰於計算上是不可行的。歷史學者David Kahn這樣描述公開密鑰密碼學;“從文藝復興的多字元取代法后最革命性的概念。”在公鑰系統中,公鑰可以隨意流傳,但私鑰只有該人擁有。典型的用法是,其他人用公鑰來加密給該接受者,接受者使用自己的私鑰解密。Diffie與Hellman也展示了如何利用公開鑰匙密碼學來達成Diffie-Hellman鑰匙交換協定。
1978年,MIT的Ron Rivest、Adi Shamir和Len Adleman發明另一個公開密鑰系統,RSA。
直到1997年的公開文件中大眾才知道,早在1970年代早期,英國情報機構GCHQ的數學家James H. Ellis便已發明非對稱密鑰密碼學,而且Diffie-Hellman與RSA都曾被Malcolm J. Williamson與Clifford Cocks分別發明於前。這兩個最早的公鑰系統提供優良的加密法基礎,因而被大量使用。其他公鑰系統還有Cramer-Shoup、Elgamal、以及橢圓曲線密碼學等等。
除了加密外,公開密鑰密碼學最顯著的成就是實現了數字簽名。數字簽名名符其實是普通簽章的數位化,他們的特性都是某人可以輕易製造簽章,但他人卻難以仿冒。數字簽名可以永久地與被簽署信息結合,無法自信息上移除。數字簽名大致包含兩個演演算法:一個是簽署,使用私密密鑰處理信息或信息的雜湊值而產生簽章;另一個是驗證,使用公開鑰匙驗證簽章的真實性。RSA和DSA是兩種最流行的數字簽名機制。數字簽名是公開密鑰
基礎建設(public key infranstructures, PKI)以及許多網路安全機制(SSL/TLS, VPNs等)的基礎。
公開密鑰的演演算法大多基於計算複雜度上的難題,通常來自於數論。例如,RSA源於整數因子分解問題;DSA源於離散對數問題。近年發展快速的橢圓曲線密碼學則基於和橢圓曲線相關的數學難題,與離散對數相當。由於這些底層的問題多涉及模數乘法或指數運算,相對於分組密碼需要更多計算資源。因此,公開密鑰系統通常是複合式的,內含一個高效率的對稱密鑰演演算法,用以加密信息,再以公開密鑰加密對稱鑰匙系統所使用的鑰匙,以增進效率。
20世紀70年代,美國斯坦福大學的兩名學者迪菲和赫爾曼提出了一種新的加密方法--公開密鑰加密隊PKE方法。與傳統的加密方法不同,該技術採用兩個不同的密鑰來對信息加密和解密,它也稱為"非對稱式加密方法。每個用戶有一個對外公開的加密演演算法E和對外保密的解密演演算法D,
它們須滿足條件:
(1)D是E的逆,即D[E(X)]=X;
(2)E和D都容易計算。
(3)由E出發去求解D十分困難。

體制比較


根據密鑰類型不同將現代密碼技術分為兩類:一類是對稱加密(秘密鑰匙加密)系統,另一類是公開密鑰加密(非對稱加密)系統。
對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。
對稱密碼系統的安全性依賴於以下兩個因素。第一,加密演演算法必須是足夠強的,僅僅基於密文本身去解密信息在實踐上是不可能的;第二,加密方法的安全性依賴於密鑰的秘密性,而不是演演算法的秘密性,因此,我們沒有必要確保演演算法的秘密性,而需要保證密鑰的秘密性。對稱加密系統的演演算法實現速度極快,從AES候選演演算法的測試結果看,軟體實現的速度都達到了每秒數兆或數十兆比特。對稱密碼系統的這些特點使其有著廣泛的應用。因為演演算法不需要保密,所以製造商可以開發出低成本的晶元以實現數據加密。這些晶元有著廣泛的應用,適合於大規模生產。
對稱加密系統最大的問題是密鑰的分發和管理非常複雜、代價高昂。比如對於具有n個用戶的網路,需要n(n-1)/2個密鑰,在用戶群不是很大的情況下,對稱加密系統是有效的。但是對於大型網路,當用戶群很大,分佈很廣時,密鑰的分配和保存就成了大問題。對稱加密演演算法另一個缺點是不能實現數字簽名。
公開密鑰加密系統採用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。由於加密鑰匙是公開的,密鑰的分配和管理就很簡單,比如對於具有n個用戶的網路,僅需要2n個密鑰。公開密鑰加密系統還能夠很容易地實現數字簽名。因此,最適合於電子商務應用需要。在實際應用中,公開密鑰加密系統並沒有完全取代對稱密鑰加密系統,這是因為公開密鑰加密系統是基於尖端的數學難題,計算非常複雜,它的安全性更高,但它實現速度卻遠趕不上對稱密鑰加密系統。在實際應用中可利用二者的各自優點,採用對稱加密系統加密文件,採用公開密鑰加密系統加密“加密文件”的密鑰(會話密鑰),這就是混合加密系統,它較好地解決了運算速度問題和密鑰分配管理問題。因此,公鑰密碼體制通常被用來加密關鍵性的、核心的機密數據,而對稱密碼體制通常被用來加密大量的數據。

標準概述


傳統的加密方法是加密、解密使用同樣的密鑰,由發送者和接收者分別保存,在加密和解密時使用,採用這種方法的主要問題是密鑰的生成、注入、存儲、管理、分發等很複雜,特別是隨著用戶的增加,密鑰的需求量成倍增加。在網路通信中,大量密鑰的分配是一個難以解決的問題。
例如,若系統中有n個用戶,其中每兩個用戶之間需要建立密碼通信,則系統中每個用戶須掌握(n-1)個密鑰,而系統中所需的密鑰總數為n*(n-1)/2個。對10個用戶的情況,每個用戶必須有9個密鑰,系統中密鑰的總數為45個。對100個用戶來說,每個用戶必須有99個密鑰,系統中密鑰的總數為4950個。這還僅考慮用戶之間的通信只使用一種會話密鑰的情況。如此龐大數量的密鑰生成、管理、分發確實是一個難處理的問題。

標準特點


從上述條件可看出,公開密鑰密碼體制下,加密密鑰不等於解密密鑰。加密密鑰可對外公開,使任何用戶都可將傳送給此用戶的信息用公開密鑰加密發送,而該用戶唯一保存的私人密鑰是保密的,也只有它能將密文復原、解密。雖然解密密鑰理論上可由加密密鑰推算出來,但這種演演算法設計在實際上是不可能的,或者雖然能夠推算出,但要花費很長的時間而成為不可行的。所以將加密密鑰公開也不會危害密鑰的安全。
數學上的單向陷門函數的特點是一個方向求值很容易,但其逆向計算卻很困難。許多形式為Y=f(x)的函數,對於給定的自變數x值,很容易計算出函數Y的值;而由給定的Y值,在很多情況下依照函數關係f(x)計算x值十分困難。例如,兩個大素數p和q相乘得到乘積n比較容易計算,但從它們的乘積n分解為兩個大素數p和q則十分困難。如果n為足夠大,當前的演演算法不可能在有效的時間內實現。

標準歷史


正是基於這種理論,1978年出現了著名的RSA演演算法。這種演演算法為公用網路上信息的加密和鑒別提供了一種基本的方法。它通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網路伺服器中註冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常採用傳統加密方法與公開密鑰加密方法相結合的方式,即信息採用改進的DES或IDEA對話密鑰加密,然後使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息后,用不同的密鑰解密並可核對信息摘要。
RSA演演算法的加密密鑰和加密演演算法分開,使得密鑰分配更為方便。它特別符合計算機網路環境。對於網上的大量用戶,可以將加密密鑰用電話簿的方式印出。如果某用戶想與另一用戶進行保密通信,只需從公鑰簿上查出對方的加密密鑰,用它對所傳送的信息加密發出即可。對方收到信息后,用僅為自己所知的解密密鑰將信息脫密,了解報文的內容。由此可看出,RSA演演算法解決了大量網路用戶密鑰管理的難題。
RSA並不能替代DES,它們的優缺點正好互補。RSA的密鑰很長,加密速度慢,而採用DES,正好彌補了RSA的缺點。即DES用於明文加密,RSA用於DES密鑰的加密。由於DES加密速度快,適合加密較長的報文;而RSA可解決DES密鑰分配的問題。美國的保密增強郵件(PEM)就是採用了RSA和DES結合的方法,目前已成為E-MAIL保密通信標準。

密碼體系


在1984年以色列科學家Shamir提出了基於標識的密碼系統的概念(IBC)。在基於標識的系統中,每個實體具有一個標識。該標識可以是任何有意義的字元串。但和傳統公鑰系統最大的不同是,在基於標識的系統中,實體的標識本身就是實體的公開密鑰。由於標識本身就是實體的公鑰,這類系統就不再依賴證書和證書管理系統如PKI,從而極大地簡化了管理密碼系統的複雜性。在提出IBC概念的同時,Shamir提出了一個採用RSA演演算法的基於標識的簽名演演算法(IBS)。但是基於標識的加密演演算法(IBC)長時期未能找到有效解決方法。
在2000年,三位日本密碼學家R. Sakai, K. Ohgishi 和 M. Kasahara提出了使用橢圓曲線上的pairing設計基於標識的密碼系統的思路。在該論文中他們提出了一種無交互的基於標識的密鑰生成協議. 在該系統中,他們設計了一種可用於基於標識的密碼系統中的系統初始化方法和密碼生成演演算法。
在2001年,D. Boneh和M. Franklin , R. Sakai, K. Ohgishi 和 M. Kasahara 以及C. Cocks 分別提出了三個基於標識的加密演演算法。前兩個都是採用橢圓曲線上pairing的演演算法。第三種演演算法利用平方剩餘難問題。前兩種演演算法都採用了與中相同的思路初試化系統並生成用戶的私鑰。由於D. Boneh和M. Franklin提出的IBC (BF-IBC)的安全性可以證明並且有較好的效率,所以引起了極大的反響。
基於標識的密碼技術在過去幾年中得到快速發展。研究人員設計了大量的新密碼系統。隨著應用的逐漸廣泛,相應演演算法的標準化工作也在逐步展開。IEEE P1363.3的基於標識的密碼技術工作組正在進行相關演演算法的標準化工作。ISO/IEC已經標準化了兩個基於標識的簽名演演算法。

標準規範


2007年,中國國家密碼局組織了國家標識密碼體系IBC標準規範( Identity-Based Cryptograph, IBC)的編寫和評審工作。由五位院士和來自黨政軍、科研院所的密碼專家組成了評審組,對該標準規範在安全性、可靠性、實用性和創新性等方面進行了多次嚴格審查, 2007年12月16日國家IBC標準正式通過了評審。專家們一致認定,該標準擁有獨立知識產權,屬於國內首創,達到了國際領先水平,並已逐步開始應用在智能密鑰、加密郵件、網路安全設備等產品中中。

法律禁令


密碼技術長期以來都是情報或司法機構的興趣。由於這些單位的隱密性以及禁令后個人隱私的減少,密碼技術也是人權支持者關心的焦點。環繞密碼技術的法律議題已有很長的歷史,特別是在可以執行高品質密碼的廉價計算機問世后。
在某些國家甚至本國的密碼技術應用也受到了限制:
直到1999年,法國仍然限制國內密碼技術的使用。
在中國,使用密碼技術需要申請執照。
許多國家有更嚴格的限制,例如白俄羅斯、哈薩克、蒙古、巴基斯坦、俄羅斯、新加坡、突尼西亞、委內瑞拉和越南。
在美國,國內密碼技術的使用是合法的,但仍然有許多法律衝突。

出口管制


一個特別重要的議題是密碼軟體與硬體的出口管制。由於密碼分析在二戰時期扮演的重要腳色,也期待密碼學可以持續在國家安全上效力,許多西方國家政府嚴格規範密碼學的出口。二戰之後,在美國散布加密科技到國外曾是違法的。事實上,加密技術曾被視為軍需品,就像坦克與核武。直到個人電腦和網際網路問世后情況才改變。好的密碼學與壞的密碼學對絕大部分使用者來說是沒有差別的,其實多數情況下,大部分現行密碼技術普遍緩慢而且易出錯。然而當網際網路與個人電腦日益成長,優良的加密技術逐漸廣為人知。可見出口管制將成為商務與研究上的阻礙。

中國發展


我國信息網路安全研究歷經了通信保密、數據保護兩個階段,正在進入網路信息安全研究階段,現已開發研製出防火牆、安全路由器、安全網關、黑客入侵檢測、系統脆弱性掃描軟體等。但因信息網路安全領域是一個綜合、交叉的學科領域它綜合了利用數學、物理、生化信息技術和計算機技術的諸多學科的長期積累和最新發展成果,提出系統的、完整的和協同的解決信息網路安全的方案,目前應從安全體系結構、安全協議、現代密碼理論、信息分析和監控以及信息安全系統五個方面開展研究,各部分相互協同形成有機整體。