密码学

密碼學（）可分为古典密码学和现代密码学。在西方語文中，密码学一词源於希臘語“隱藏的”，和“書寫”。古典密码学主要关注信息的保密书写和传递，以及与其相对应的破译方法。而现代密码学不只关注信息保密问题，还同时涉及信息完整性验证（消息验证码）、信息发布的不可抵赖性（数字签名）、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。古典密码学与现代密码学的重要区别在于，古典密码学的编码和破译通常依赖于设计者和敌手的创造力与技巧，作为一种实用性艺术存在，并没有对于密码学原件的清晰定义。而现代密码学则起源于20世纪末出现的大量相关理论，这些理论使得现代密码学成为了一种可以系统而严格地学习的科学。

密码学是数学和计算机科学的分支，同时其原理大量涉及信息论。著名的密碼學者罗纳德·李维斯特解釋道：「密碼學是關於如何在敵人存在的環境中通訊」，自工程學的角度，這相當于密碼學與純數學的差异。密碼學的发展促進了计算机科学，特別是在於電腦與網路安全所使用的技術，如存取控制與資訊的機密性。密碼學已被應用在日常生活：包括自动柜员机的晶片卡、電腦使用者存取密碼、電子商務等等。

 術語 

直到現代以前，密碼學幾乎專指加密算法：將普通信息（明文）轉換成難以理解的資料（密文）的過程；解密算法則是其相反的過程：由密文轉換回明文；加解密包含了這兩種算法，一般加密即同時指稱加密與解密的技術。

加解密的具体運作由两部分决定：一个是算法，另一个是密钥。密钥是一個用於加解密算法的秘密參數，通常只有通訊者擁有。歷史上，密钥通常未經認證或完整性測試而被直接使用在加解密上。

密码协议是使用密碼技術的通信协议。近代密碼學者多認為除了傳統上的加解密演算法，密码协议也一樣重要，兩者為密碼學研究的兩大課題。在英文中，“”和“”都可代表密碼學，前者又称密碼術。但更嚴謹地说，前者（）指密碼技術的使用，而后者（）指研究密码的學問，包含密碼術與密码分析。密码分析是研究如何破解密碼學的學問。但在实际使用中，通常都称密码学（即），而不具体区分其含义。

編碼：它意指以取代特定的明文。例如，以『蘋果派』（）替換『拂曉攻擊』（）。編碼已經不再被使用在嚴謹的密碼學，它在信息论或通訊原理上有更明確的意義。

在漢語口語中，電腦系統或網路使用的個人帳戶口令也常被以密碼代稱，雖然口令亦屬密碼學研究的範圍，但學術上口令與密碼學中所稱的密鑰並不相同，即使兩者間常有密切的關連。

 對稱金鑰加密 
對稱金鑰加密是密碼學中的一種加密法，是以轉換其中一個數字、字母或僅字串隨機字母，一個秘密金鑰會以特定的方式變更訊息里面的文字或字母，例如更換字母相对位置（例如變成）。只要寄件者與收件者知道秘密金鑰，他們可以加密和解密並使用這個資料。

公開金鑰加密
公開金鑰加密（也稱為非對稱加密）是密碼學中的一種加密法，非對稱金鑰，是指一對加密金鑰與解密金鑰，某使用者使用加密金鑰加密後所獲得的資料，只能用該使用者的解密金鑰才能夠解密。如果知道了其中一個，並不能計算出另外一個。因此如果公開了其中一個金鑰，並不會危害到另外一個。因此公開的金鑰為公鑰；不公開的密鑰為私鑰。

數位簽章
數位簽章（又稱公鑰數位簽章、電子簽章）是一種類似寫在紙上的簽名，但是使用了公鑰加密領域的技術實現，用於鑒別數位信息的方法。在網路上，我們可以使用“數位簽章”來進行身份確認。數位簽章是一個獨一無二的數值，若公鑰能通過驗證，那我們就能確定對應的公鑰的正確性，數位簽章兼具這兩種雙重屬性："可確認性"及"不可否認性（不需要筆跡專家驗證）"。

 密碼學與密碼分析的歷史 

許多物理裝置被用來輔助加密，例如古希臘斯巴達的密碼棒，這是一個協助置換法的圓柱體，可將資訊內字母的次序調動，利用了字條纏繞木棒的方式，把字母進行位移，收信人要使用相同直徑的木棒才能得到還原的資訊。在歐洲中世紀時期，用在某類隱寫術上。

多字元加密法出現後，更多樣的輔助工具出現，如阿伯提發明的密碼盤、特里特米烏斯發明的表格法、以及美國總統湯瑪斯·傑佛遜發明的（約在1900年再次獨立發明改進）。

二十世紀早期，多項加解密機械被發明且被註冊專利，包括最有名的轉輪機，第二次世界大戰德軍所用，別名恩尼格玛密码机，其加密法是在第一次世界大戰後針對當時破密術所做最好的設計。

二十世紀早期的密碼學本質上主要考慮語言學上的模式。從此之後重心轉移，現在密碼學使用大量的數學，包括資訊理論、計算複雜性理論、統計學、組合學、抽象代數以及數論。密碼學同時也是工程學的分支，但卻是與別不同，因為它必須面對有智能且惡意的對手，大部分其他的工程僅需處理無惡意的自然力量。檢視密碼學問題與量子物理間的關連也是目前熱門的研究。

 經典密碼學 

在近代以前，密碼學只考慮到訊息的機密性：如何將可理解的訊息轉換成難以理解的訊息，並且使得有秘密訊息的人能够逆向回復，但缺乏秘密訊息的攔截者或竊聽者则無法解讀。近數十年來，這個領域已經擴展到涵蓋身分認證（或称鉴权）、訊息完整性檢查、数字签名、互動證明、安全多方計算等各類技術。

古中國周朝兵書《六韬．龍韜》記載了密碼學的運用，其中的《陰符》和《陰書》便記載了周武王問姜子牙關於征戰時與主將通訊的方式：
太公曰：「主與將，有陰符，凡八等。有大勝克敵之符，長一尺。破軍擒將之符，長九寸。降城得邑之符，長八寸。卻敵報遠之符，長七寸。警眾堅守之符，長六寸。請糧益兵之符，長五寸。敗軍亡將之符，長四寸。失利亡士之符，長三寸。諸奉使行符，稽留，若符事聞，泄告者，皆誅之。八符者，主將祕聞，所以陰通言語，不泄中外相知之術。敵雖聖智，莫之能識。」
武王問太公曰：「…符不能明；相去遼遠，言語不通。為之奈何？」
太公曰：「諸有陰事大慮，當用書，不用符。主以書遺將，將以書問主。書皆一合而再離，三發而一知。再離者，分書為三部。三發而一知者，言三人，人操一分，相參而不相知情也。此謂陰書。敵雖聖智，莫之能識。」
陰符是以八等長度的符來表達不同的消息和指令，可算是密碼學中的，把資訊轉變成敵人看不懂的符號。至於陰書則運用了移位法，把書一分為三，分三人傳遞，要把三份書重新拼合才能獲得還原的資訊。

进入宋朝，有字验的加密方法。

其實在公元前，秘密書信已用於戰爭之中。西洋「史學之父」希羅多德的《歷史》當中記載了一些最早的秘密書信故事。公元前5世紀，希臘城邦為對抗奴役和侵略，與波斯發生多次衝突和戰爭。於西元前480年，波斯秘密結了強大的軍隊，準備對雅典和斯巴達發動一次突襲。希臘人狄馬拉圖斯在波斯的蘇薩城裏看到了這次集結，便利用了一層蠟把木板上的字遮蓋住，送往並告知了希臘人波斯的圖謀。最後，波斯海軍覆沒於雅典附近的。

据说，斯巴达司令派人给前线送一条这样的腰带：

指挥官拿到后，把它缠在一条木棍上，得到明文“”，如下：

即每4位取一个字母。其他字母是干扰的。但此传说并未得到证实，因为故事发生的地点在希腊和波斯，但密文却是英文。

由於古時多數人並不識字，最早的秘密書寫的形式只用到紙筆或等同物品，隨著識字率提高，就開始需要真正的密碼學了。最古典的兩個加密技巧是：
 置换式密码：將字母順序重新排列，例如『』變成『』；與
 替换式密码：有系統地將一組字母換成其他字母或符號，例如『』變成『』（每個字母用下一個字母取代）。

這兩種單純的方式都不足以提供足夠的機密性。凱撒密码是最經典的替代法，據傳由古羅馬帝國的皇帝凱撒所發明，用在與遠方將領的通訊上，每個字母被往後位移三格字母所取代。

加密旨在確保通訊的秘密性，例如間諜、軍事將領、外交人員間的通訊，同時也有宗教上的應用。舉例來說，早期基督徒使用密碼學模糊他們寫作的部份觀點以避免遭受迫害。666年或部分更早期的手稿上的616年是新約聖經啟示錄所指的野獸的數字，常用來暗指專迫害基督徒的古羅馬皇帝尼祿。史上也有部份希伯來文密碼的記載。古印度慾经中也提及愛侶可利用密碼來通信。隱寫術也出現在古代，希羅多德記載將訊息刺青在奴隸的頭皮上，較近代的隱寫術使用隱形墨水、縮影術或数字水印來隱藏訊息。

除了應用於軍事外，西元四世紀婆羅門學者所書的《慾經》4中曾提及到用代替法加密資訊。書中第45項是，用以幫助婦女隱瞞她們與愛郞之間的關係。其中一種方法是把字母隨意配對互換，如套用在羅馬字母中，可有得出下表：
A  B  C  D  E  F  G  H  I  J  K  L  M Z  Y  X  W  V  U  T  S  R  Q  P  O  N 

由经典加密法產生的密碼文很容易洩漏關於明文的統計資訊，以現代觀點其實很容易被破解。阿拉伯人津帝便提及到如果要破解加密資訊，可在一篇至少一頁長的文章中數算出每個字母出現的頻率，在加密信件中也數算出每個符號的頻率，然後互相對換，這是頻率分析的前身，此後幾乎所有此類的密碼都馬上被破解。但经典密碼學現在仍未消失，經常出現在謎語之中（見）。這種分析法除了被用在破解密碼法外，也常用於考古學上。在破解古埃及象形文字時便運用了這種解密法。

 中世紀至第二次世界大戰 
本質上所有的密碼仍然受到上述的破密法的危害，直到阿伯提約在1467年發明了，阿伯提的創新在於對訊息的不同部分使用不同的代碼，他同時也發明了可能是第一個自動加密器，一個實現他部分想法的轉輪。多字元加密法最典型的例子是維吉尼亞加密法：加密重複使用到一個關鍵字，用哪個字母取代端視輪替到關鍵字的哪個字母而定。儘管如此，多字母加密法仍然受到頻率分析法的部分危害，不過這直到十九世紀中期才被查爾斯·巴貝奇發現。

比較近代的著名的例子可數中世紀蘇格蘭的瑪麗女王、第一次世界大戰德國的齊默爾曼電報和第二次世界大戰的「恩尼格玛」。

 蘇格蘭的瑪麗女王 
西元1578年，瑪麗女王被伊莉莎白女王軟禁。在1586年1月6日瑪麗收到一批秘密信件，得悉了安東尼·貝平頓（Anthony Babington）的計劃。安東尼和幾個同黨在密謀營救瑪麗，並計劃行刺伊莉莎白女王。他們的信件被轉成密碼，並藏在啤酒桶的木塞以掩人耳目。但卻被英格蘭大臣弗朗西斯·沃尔辛厄姆從中截獲、複製、還信入塞，並由菲力普·馬尼斯（Philip van Marnix）破解信件。信件破解後，華興翰使菲力普摹擬瑪麗的筆跡引誘安東尼行動，把叛逆者一網成擒，審判並處死瑪麗女王。問題在於錯誤地使用脆弱的加密法會製造虛假的安全錯覺：安東尼對他們的通訊方式太過有信心，令他的加密方法過於簡單，輕易被敵人破解。

 第一次世界大戰 
1914年8月25日德國的马格德堡号小巡洋舰在芬蘭灣擱淺，俄國搜出多份德國的文件及兩本電碼本，一本被送往英國的「40號房」進行密碼分析。同時，無線電的發明亦使得截獲密信易如反掌。由於德國通往美國的電纜在大戰開始時被剪斷了，德國借用了美國的海底電纜發電報到華盛頓，但電纜經過了英國，1917年1月17日齊默爾曼電報被「40號房間」截獲。同年2月23日，密電內容揭開了，內容指德國將在1917年2月1日開始『無限制潛艇戰』，用潛艇攻擊戰時包括中立國在內的海上商運船。為了阻止美國因此參戰，德國建議墨西哥入侵美國，並承諾幫助墨西哥從美國手中奪回得克薩斯、新墨西哥和亞利桑那三州。德國還要墨西哥說服日本共同進攻美國，德國將提供軍事和資金援助。密電內容揭開後，美國在4月16日向德國宣戰。

 第二次世界大戰 
德國汲取了第一次大戰的教訓，發展出以機械代替人手的加密方法。雪畢伍斯（Arthur Scherbius）發明了「恩尼格玛密码机」，用於軍事和商業上。「恩尼格玛」主要由鍵盤、編碼器和燈板組成。三組編碼器合、加上接線器和其他配件，合共提供了一億億種編碼的可能性。1925年，「恩尼格玛」開始有系列生產，在20年間，德國軍方購入了3萬多台「恩尼格玛」，亦難倒了「40號房」，成為德國在二次大戰的重要工具。波蘭位於德國東面，俄國的西面，一直受到威脅，故成立了波蘭密碼局（Biuro Szyfrow）以獲取情報。波蘭從漢斯-提羅·施密德（Hans-Thilo Schmidt）處得到諜報，由年輕的數學家马里安·雷耶夫斯基解譯，用了一年時間編纂目錄，並在1930年代製造了「炸彈」（bomba），漸漸掌握瞭解「恩尼格玛」的技術。

1938年12月德國加強了「恩尼格玛」的安全性，令波蘭失去了情報。「恩尼格玛」成為了希特勒閃電戰略的核心，每天更改的加密排列維繫了強大快速的攻擊。1939年4月27日德國撤銷與波蘭的互不侵犯條約，波蘭才不得不決定把「炸彈」這個構想與英、法分享，合力破解新的「恩尼格玛」。1939年9月1日，德國侵擊波蘭，大戰爆發。英國得到了波蘭的解密技術後，40號房間除了原有的語言和人文學家，還加入了數學家和科學家，後來更成立了政府代碼暨密碼學校（Government code and Cipher School），5年內人數增至7000人。1940至1942年是加密和解密的拉鋸戰，成功的解碼提供了很多寶貴的情報。例如在1940年得到了德軍進攻丹麥和挪威的作戰圖，以及在不列顛戰役事先獲得了空襲情報，化解了很多危機。但「恩尼格玛」卻並未被完全破解，加上「恩尼格玛」的網絡很多，令德國一直在大西洋戰役中佔上風。最後英國在「順手牽羊」的行動中在德國潛艇上俘獲「恩尼格玛」的密碼簿，破解了「恩尼格玛」。英國以各種虛假手段掩飾這件事，免得德國再次更改密碼，並策劃摧毀了德國的補給線，缩短了大西洋戰役的持续时间。

 現代密碼學 
第二次世界大戰後計算機與電子學的發展促成了更複雜的密碼，而且計算機可以加密任何二進位形式的資料，不再限於書寫的文字，以語言學為基礎的破密術因此失效。多數計算機加密的特色是在二進位字串上操作，而不像经典密码学那样直接地作用在傳統字母數字上。然而，計算機同時也促進了破密分析的发展，抵消了某些加密法的優勢。不過，優良的加密法仍保持領先，通常好的加密法都相當有效率（快速且使用少量資源），而破解它需要許多級數以上的資源，使得破密變得不可行。

雖然頻率分析是很有效的技巧，實際上加密法通常還是有用的。不使用頻率分析來破解一個訊息需要知道目前是使用何種加密法，因此才會促成了諜報、賄賂、竊盜或背叛等行為。直到十九世紀學者們才體認到加密法的演算法並非理智或實在的防護。實際上，適當的密碼學機制（包含加解密法）應該保持安全，即使敵人知道了使用何種演算法。對好的加密法來說，金鑰的秘密性理應足以保障資料的機密性。這個原則首先由奧古斯特·柯克霍夫（）提出並被稱為柯克霍夫原則。資訊理論始祖克勞德·艾爾伍德·香農重述：「敵人知道系統。」

大量公開的學術研究出現于现代。這起源於一九七零年代中期，美國國家標準局（現稱國家標準技術研究所）制定數位加密標準（DES），惠特菲爾德·迪菲和馬丁·赫爾曼提出的開創性論文，以及公開釋出RSA。從那個時期開始，密碼學成為通訊、電腦網路、電腦安全等上的重要工具。許多現代的密碼技術的基礎依賴於特定計算問題的困難度，例如因數分解問題或是離散對數問題。許多密碼技術可被證明為只要特定的計算問題無法被有效的解出，那就安全。除了一個著名的例外：一次性密碼本，這類證明是偶然的而非決定性的，但是是目前可用的最好的方式。

密碼學演算法與系統設計者不但要留意密碼學歷史，而且必須考慮到未來發展。例如，持續增加計算機處理速度會增進蛮力攻击的速度。量子計算的潛在效應已經是部份密碼學家的焦點。

 現代密碼學 
現代密碼學大致可被區分為數個領域。對稱金鑰密碼學指的是傳送方與接收方都擁有相同的金鑰。直到1976年這都還是唯一的公開加密法。

現代密碼學重視分组密码與流密码的研究及應用。區塊加密法在某種意義上是阿伯提的多字元加密法的現代化。區塊加密法取用明文的一個區塊和金鑰，輸出相同大小的密文區塊。由於訊息通常比單一區塊還長，因此有了各種方式將連續的區塊編織在一起。DES和AES是美國聯邦政府核定的區塊加密法標準（AES將取代DES）。儘管將從標準上廢除，DES依然很流行（三重資料加密演算法變形仍然相當安全），被使用在非常多的應用上，從自動交易機、電子郵件到遠端存取。也有許多其他的區塊加密被發明、釋出，品質與應用上各有不同，其中不乏被破解者。

串流加密法，相對於區塊加密，製造一段任意長的金鑰原料，與明文依位元或字元結合，有點類似一次性密碼本。輸出的串流根據加密時的內部狀態而定。在一些串流加密法上由金鑰控制狀態的變化。RC4是相當有名的串流加密法。

密碼雜湊函數（有時稱作消息摘要函數，杂凑函数又称散列函数或哈希函数（Hash））不一定使用到金鑰，但和許多重要的密碼演算法相關。它將輸入資料（通常是一整份文件）輸出成較短的固定長度雜湊值，這個過程是單向的，逆向操作難以完成，而且碰撞（兩個不同的輸入產生相同的雜湊值）發生的機率非常小。

訊息認證碼或押碼（Message authentication codes, MACs）很類似密碼雜湊函數，除了接收方額外使用秘密金鑰來認證雜湊值。

 公钥密碼學 

公開金鑰密碼學，简称公钥密码学，又稱非對稱金鑰密碼學，相對於對稱金鑰密碼學，最大的特點在於加密和解密使用不同的金鑰。

在對稱金鑰密碼學中，加密和解密使用相同的金鑰，也許對不同的訊息使用不同的金鑰，但都面臨金鑰管理的難題。由於每對通訊方都必須使用異於他組的金鑰，當網路成員的數量增加時，金鑰數量成二次方增加。更尷尬的難題是：當安全的通道不存在於雙方時，如何建立一個共有的金鑰以利安全的通訊？如果有通道可以安全地建立金鑰，何不使用現有的通道。這個矛盾是長年以來密碼學無法在真實世界應用的阻礙。

1976年，惠特菲爾德·迪菲與馬丁·赫爾曼發表開創性的論文，提出公開金鑰密碼學的概念：一對不同值但數學相關的金鑰，公開金鑰（公鑰, public key）與私密金鑰（私鑰, private key or secret key）。在公鑰系統中，由公開金鑰推算出配對的私密金鑰於計算上是不可行的。歷史學者這樣描述公開金鑰密碼學；「從文藝復興的多字元取代法後最革命性的概念。」

在公鑰系統中，公鑰可以隨意流傳，但私鑰只有該人擁有。典型的用法是，其他人用公鑰來加密給該接受者，接受者使用自己的私鑰解密。Diffie與Hellman也展示了如何利用公開金鑰密碼學來達成迪菲-赫爾曼密鑰交換協定。

1978年，麻省理工学院的罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼發明另一個公開金鑰系統，RSA。

直到1997年的公開文件中大眾才知道，早在1970年代早期，英國情報機構政府通信总部的數學家便已發明非對稱金鑰密碼學，而且Diffie-Hellman與RSA都曾被與分別發明於前。這兩個最早的公鑰系統提供優良的加密法基礎，因而被大量使用。其他公鑰系統還有、El Gamal、以及橢圓曲線密碼學等等。

除了加密外，公開金鑰密碼學最顯著的成就是實現了數位簽章。數位簽章名副其實是普通簽章的數位化，他們的特性都是某人可以輕易製造簽章，但他人卻難以仿冒。數位簽章可以永久地與被簽署訊息結合，無法自訊息上移除。數位簽章大致包含兩個演算法：一個是簽署，使用私密金鑰處理訊息或訊息的雜湊值而產生簽章；另一個是驗證，使用公開金鑰驗證簽章的真實性。RSA和DSA是兩種最流行的數位簽章機制。數位簽章是公開金鑰基礎建設（public key infranstructures, PKI）以及許多網路安全機制（SSL/TLS, 虛擬私人網路等）的基礎。

公開金鑰演算法大多基於計算複雜度上的難題，通常來自於數論。例如，RSA源於整數因數分解問題；DSA源於離散對數問題。近年發展快速的橢圓曲線密碼學則基於和橢圓曲線相關的數學難題，與離散對數相當。由於這些底層的問題多涉及模數乘法或指數運算，相對於區塊加密法需要更多計算資源。因此，公開金鑰系統通常是複合式的，內含一個高效率的對稱金鑰演算法，用以加密訊息，再以公開金鑰加密對稱金鑰系統所使用的金鑰，以增進效率。

 密碼分析 

密碼分析又稱破密術。密碼分析的目的是發現密碼機制的弱點，從事者可能是意圖顛覆系統惡意的攻擊者或評估系統弱點的設計人。在現代，密碼演算法與協定必須被仔細檢查和測試，確定其保證的安全性。

大眾普遍誤解認為所有加密法都可以被破解。香农在二战时的工作就已證明只要金鑰是完全隨機，不重覆使用，對外絕對保密，與訊息等長或比訊息更長的一次一密是不可能破解的。除了一次一密以外的多數加密法都可以以暴力攻擊法破解，但是破解所需的努力可能是金鑰長度的指數成長。

密碼分析的方式有很多，因此有數個分類。一個常見的分別法則是攻擊者知曉多少資訊。在唯密文攻击中，密碼分析者只能存取密文，好的現代密碼系統對這種情況通常是免疫的。在已知明文攻击中，密碼分析者可以存取多個明文、密文對。在选择明文攻击中，密碼分析者可以自選任意明文，並被賦予相對應的密文，例如二戰時布列顛所使用的園藝法。最後，选择密文攻击中，密碼分析者可以自選任意密文，並被賦予相對應的明文。

對稱金鑰加密的密碼分析通常旨在尋找比已知最佳破解法更有效率的方式。例如，以最簡單的暴力法破解DES需要一個已知明文與255解密運算，嘗試近半數可能的金鑰。線性分析攻擊法對DES需要243已知明文與243 DES運算，顯然比暴力法有效。

公開金鑰演算法則基於多種數學難題，其中最有名的是整数分解和離散對數問題。許多公開金鑰密碼分析在研究如何有效率地解出這些計算問題的數值演算法。例如，已知解出基於橢圓曲線的離散對數問題比相同金鑰大小的整數因數分解問題更困難。因此，為了達到相等的安全強度，基於因數分解的技術必須使用更長的金鑰。由於這個因素，基於橢圓曲線的公開金鑰密碼系統從1990年代中期後逐漸流行。

當純粹的密碼分析著眼於演算法本身時，某些攻擊則專注於密碼裝置執行的弱點，稱為副通道攻擊。如果密碼分析者可以存取到裝置執行加密或回報通行碼錯誤的時間，它就可能使用時序攻擊法破解密碼。攻擊者也可能研究訊息的模式與長度，得出有用的資訊，稱為流量分析，對機敏的敵人這相當有效。當然，社會工程與其它針對人事、社交的攻擊與破密術一併使用時可能是最有力的攻擊法。

 密碼學原型 
多數的密碼學理論研究在探討密碼學原型：具備基本密碼學特質的演算法以及和其他問題的關連。例如，容易正向運算卻難以逆向運算的單向函數。通常而言，密碼應用如果要安全，就必須保證單向函數存在。然而，如果單向函數存在，就表示P ≠ NP。既然目前P與NP問題仍是未解，我們就無從得知單向函數是否存在。如果單向函數存在，那安全的準亂數產生器與準亂數函數就存在。
目前已知的密碼學原型僅提供基本的機能。通常是機密、訊息完整、認證、和不可否認。任何其他機能都是基本演算法的組合與延伸，這類組合稱為密碼系統。例如PGP、SSH、SSL/TLS、公開金鑰基礎建設和數位簽章等。其他密碼原型還有加密演算法本身、單向排列、暗門排列等。

 密碼协议 

在許多狀況，密碼技術涉及通訊的雙方或多方（例如公司總部與分部）或是跨越時間（例如保護備份資料）。密碼協议已經擴展到涵蓋多種議題，像是互動證明、秘密分享與零知識，更複雜的有電子鈔票和安全多方計算。

當一個好的密碼系統的安全失效時，很少是密碼學原型出現漏洞。大部分的弱點都發生於協定設計、系統實作、或是某些人為錯誤。許多密碼學協定都在非系統化的過程中發展出來，很少有安全上的証明。一些正規分析協定安全的方式都本於數學邏輯（例如邏輯）或近期的具體安全原則，這些都是數十年來研究人員的主題。很不幸的，這些工具都相當的笨重也無法用於複雜的設計。如何实現與整合密碼學的應用本身是截然不同的領域，參見密碼學工程與安全工程。

 與密碼學有關的法律議題 

 禁令 
密碼學長期以來都是情報或司法機構的興趣。由於這些單位的隱密性以及禁令後個人隱私的減少，密碼學也是人權支持者關心的焦點。環繞密碼學的法律議題已有很長的歷史，特別是在可以執行高品質密碼的廉價計算機問世後。

在某些國家甚至本國性的密碼學也受限制。直到1999年，法國仍然限制國內密碼學的使用。許多國家有更嚴格的限制，例如白俄羅斯、哈薩克、蒙古、巴基斯坦、俄羅斯、新加坡、突尼西亞、委內瑞拉和越南。

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

 出口管制 
在1990年代發生了數件挑戰美國出口規範的事件。其中一件是菲爾·齊默爾曼的PGP加密程式，於1991年6月在美國連原始碼一併釋出於網際網路。在RSA Security公司提出抗議後，Zimmermann被商務部和聯邦調查局偵訊達數年。接著，柏克萊加州大學的研究生發起了對美國政府的法律訴訟，以言論自由挑戰禁令的某些觀點。1995年的伯恩斯坦诉合众国案促成了在1999年判決印出密碼演算法的原始碼屬美國憲法言論自由保障範圍內。在1996年，39個國家簽訂處理軍武出口的華沙公約。該公約約定使用短金鑰長度（對稱金鑰56位元；RSA　512位元）的密碼學不再受到出口管制。從2000年後，美國出口密碼學已經寬鬆許多。現在，幾乎所有的網際網路使用者都可存取到優良的密碼學，就在瀏覽器內建的傳輸層安全性協定（TLS）或安全套接层（SSL）。Mozilla Thunderbird和微軟Outlook電子郵件用戶端程式可以用TLS連結至IMAP或Pop伺服器，並以S/MIME收送加密的電子郵件。許多網路用戶並不知曉他們的基本應用內含大量的密碼系統。這些瀏覽器與郵件程式如此普及，甚至試圖規範市民使用密碼學使用的政府單位也無力從事有效的限制。

 美國國家安全局介入 
另一個密碼學的爭議點是美國國家安全局（美国国家安全局）在加密法發展的介入。國家安全局考量到將其制訂為國家表準局的聯邦標準，曾介入於IBM發展的DES。DES是NSA與IBM為了克制強力的差分分析法而制定，這個攻擊直到1980年代晚期才公開。根據史蒂芬·列维所說，IBM曾重新發現差分分析法，但被NSA下禁口令。這個攻擊法直到Biham與在數年後再次發現才公開。這些事情顯示了決定攻擊者擁有哪些資源或知識的困難。還有1993年，NSA涉入用在計劃的加密微晶片Clipper chip。Clipper飽受密碼學者的批評，其一是因為其加密演算法被列為機密，NSA可能蓄意設計較弱的加密法以達成情報目的；其二是整個計畫案違反柯克霍夫原则，由於這機制使用到一個特別的只有政府才有的委任金鑰，難保沒有竊聽的可能。

 數位智慧財產權管理 
數位智慧財產權管理又稱數位智財權（Digital rights management, DRM）
密碼學是數位智慧財產權的核心，有許多技術被應用在保障版權資料的使用。1998年，美國總統比尔·克林顿（Bill Clinton）簽署了數位千禧年版權法案（數字千年版權法, DMCA），明定特定破密技術的重制或散佈屬犯罪行為，特別是某些迴避DRM者。這對密碼學研究社群造成了相當嚴重的潛在衝擊，因为任何逆向解码技術都可以被用于破解DRM从而被認定为違反DMCA。考慮到這些爭議，美國聯邦調查局與司法部並未嚴格執行DMCA。一位密碼學者曾公開陳述受DMCA的影响，他將不會釋出部分研究給英特尔安全設計。Linux核心的第二號發展人物艾倫·考克斯與普林斯頓大學教授都曾受到這法案的相關困擾。在從俄羅斯到美國訪問時曾因違反該法案被監禁達數月，但違反DMCA的作品實際上發生於俄羅斯，而且在俄羅斯是合法行為。類似的事情發生在許多國家。例如歐盟所制定的。在2007年，負責數碼多功能影音光碟與HD DVD防偽的金鑰被發現且是出在網際網路上，同時，美國電影協會發出多個違DMCA的告示，導致大量網際網路使用者回擊，也引出了公平使用與言論自由的議題。

參考文獻

外部連結
Helger's cryptography pointers
RSA Laboratories' FAQ About today's cryptography  essentially elementary coverage
The sci.crypt FAQ extensive and detailed; in 'traditional FAQ' format
sci.crypt mini-FAQ (more recent)
The sci.crypt newsgroup
Savard's glossary an extensive and detailed view of cryptographic history with emphasis on crypto devices
The Beginner's Guide to Cryptography - An elementary overview of a few basic areas of cryptography.
An Introduction to the Use of Encryption - A fairly non-technical introduction to the subject.
Encryption and Privacy

 参见 

密碼學主題列表
密碼學家列表
密碼學領域重要出版物
關鍵安全參數


Category:数学科学职业
Category:理论计算机科学