密码学

术语

直到现代以前，密码学几乎专指加密算法：将普通信息（明文）转换成难以理解的数据（密文）的过程；解密算法则是其相反的过程：由密文转换回明文；加解密包含了这两种算法，一般加密即同时指称加密与解密的技术。
加解密的具体运作由两部分决定：一个是算法，另一个是密钥。密钥是一个用于加解密算法的秘密参数，通常只有通信者拥有。历史上，密钥通常未经认证或完整性测试而被直接使用在加解密上。
密码协议是使用密码技术的通信协议。近代密码学者多认为除了传统上的加解密算法，密码协议也一样重要，两者为密码学研究的两大课题。在英文中，“cryptography”和“cryptology”都可代表密码学，前者又称密码术。但更严谨地说，前者（cryptography）指密码技术的使用，而后者（cryptology）指研究密码的学科，包含密码术与密码分析。密码分析是研究如何破解密码学的学科。但在实际使用中，通常都称密码学（即cryptography），而不具体区分其含义。
口语上，编码常意指加密或隐藏消息的各种方法。然而，在密码学中，编码有更特定的意义：它意指以码字取代特定的明文。例如，以‘苹果派’（apple pie）替换‘拂晓攻击’（attack at dawn）。编码已经不再被使用在严谨的密码学，它在信息论或通信原理上有更明确的意义。
在汉语口语中，计算机系统或网络使用的个人账户通行码也常被以密码代称，虽然通行码亦属密码学研究的范围，但学术上通行码与密码学中所称的密钥并不相同，即使两者间常有密切的关连。

对称密钥加密

对称密钥加密是密码学中的一种加密法，是以转换其中一个数字、字母或仅字符串随机字母，一个秘密密钥会以特定的方式变更消息里面的文字或字母，例如更换字母相对位置（例如hello变成lohel）。只要寄件者与收件者知道秘密密钥，他们可以加密和解密并使用这个数据。

公开密钥加密

公开密钥加密（也称为非对称加密）是密码学中的一种加密法，非对称密钥，是指一对加密密钥与解密密钥，某用户使用加密密钥加密后所获得的数据，只能用该用户的解密密钥才能够解密。如果知道了其中一个，并不能计算出另外一个。因此如果公开了其中一个密钥，并不会危害到另外一个。因此公开的密钥为公钥；不公开的密钥为私钥。

数字签名

数字签名（又称公钥数字签名、电子签名）是一种类似写在纸上的签名，但是使用了公钥加密领域的技术实现，用于鉴别数字信息的方法。在网络上，我们可以使用“数字签名”来进行身份确认。数字签名是一个独一无二的数值，若公钥能通过验证，那我们就能确定对应的公钥的正确性，数字签名兼具这两种双重属性："可确认性"及"不可否认性（不需要笔迹专家验证）"。

密码学与密码分析的历史

许多物理设备被用来辅助加密，例如古希腊斯巴达的密码棒，这是一个协助置换法的圆柱体，可将信息内字母的次序调动，利用了字条缠绕木棒的方式，把字母进行位移，收信人要使用相同直径的木棒才能得到还原的信息。在欧洲中世纪时期，密码栏用在某类隐写术上。
多字符加密法出现后，更多样的辅助工具出现，如阿尔伯蒂发明的密码盘、特里特米乌斯发明的表格法、以及美国总统汤玛斯·杰佛逊发明的杰弗逊圆盘（巴泽里耶斯约在1900年再次独立发明改进）。
二十世纪早期，多项加解密机械被发明且被注册专利，包括最有名的转轮机，第二次世界大战德军所用，别名‘谜’式密码机（恩尼格玛密码机），其加密法是在第一次世界大战后针对当时破密术所做最好的设计。
二十世纪早期的密码学本质上主要考虑语言学上的模式。从此之后重心转移，现在密码学使用大量的数学，包括信息论、计算复杂性理论、统计学、组合学、抽象代数以及数论。密码学同时也是工程学的分支，但却是与别不同，因为它必须面对有智能且恶意的对手，大部分其他的工程仅需处理无恶意的自然力量。查看密码学问题与量子物理间的关连也是当前热门的研究。

中世纪至第二次世界大战

本质上所有的密码仍然受到上述的破密法的危害，直到阿尔伯蒂约在1467年发明了多字母加密法，阿尔伯蒂的创新在于对消息的不同部分使用不同的代码，他同时也发明了可能是第一个自动加密器，一个实现他部分想法的转轮。多字符加密法最典型的例子是维吉尼亚加密法：加密重复使用到一个关键字，用哪个字母取代端视轮替到关键字的哪个字母而定。尽管如此，多字母加密法仍然受到频率分析法的部分危害，不过这直到十九世纪中期才被查尔斯·巴贝奇发现。
比较近代的著名的例子可数中世纪苏格兰的玛丽女王、第一次世界大战德国的齐默尔曼电报和第二次世界大战的“恩尼格玛”。

苏格兰的玛丽女王

公元1578年，玛丽女王被伊丽莎白女王软禁。在1586年1月6日玛丽收到一批秘密信件，得悉了安东尼·贝平顿（Anthony Babington）的计划。安东尼和几个同党在密谋营救玛丽，并计划行刺伊丽莎白女王。他们的信件被转成密码，并藏在啤酒桶的木塞以掩人耳目。但却被英格兰大臣华兴翰（Walsingham）的从中截获、复制、还信入塞，并由菲力普·马尼斯（Philip van Marnix）破解信件。信件破解后，华兴翰使菲力普摹拟玛丽的笔迹引诱安东尼行动，把叛逆者一网成擒，审判并处死玛丽女王。问题在于错误地使用脆弱的加密法会制造虚假的安全错觉：安东尼对他们的通信方式太过有信心，令他的加密方法过于简单，轻易被敌人破解。

第一次世界大战

1914年8月25日德国的马格德堡巡洋舰（Magdeburg）在芬兰湾（Gulf of Finland）搁浅，俄国搜出多份德国的文件及两本电码本，一本被送往英国的“40号房间”（Room 40）进行密码分析。同时，无线电的发明亦使得截获密信易如反掌。由于德国通往美国的电缆在大战开始时被剪断了，德国借用了美国的海底电缆发电报到华盛顿，但电缆经过了英国，1917年1月17日齐默尔曼电报被“40号房间”截获。同年2月23日，密电内容揭开了，内容指德国将在1917年2月1日开始‘无限制潜艇战’，用潜艇攻击战时包括中立国在内的海上商运船。为了阻止美国因此参战，德国建议墨西哥入侵美国，并承诺帮助墨西哥从美国手中夺回得克萨斯、新墨西哥和亚利桑那三州。德国还要墨西哥说服日本共同进攻美国，德国将提供军事和资金援助。密电内容揭开后，美国在4月16日向德国宣战。

第二次世界大战

德国汲取了第一次大战的教训，发展出以机械代替人手的加密方法。雪毕伍斯（Arthur Scherbius）发明了“谜”（ENIGMA，恩尼格玛密码机），用于军事和商业上。“谜”主要由键盘、编码器和灯板组成。三组编码器合、加上接线器和其他配件，合共提供了种一亿亿种编码的可能性。1925年，“谜”开始有系列生产，在20年间，德国军方购入了3万多台“谜”，亦难倒了“40号房”，成为德国在二次大战的重要工具。波兰位于德国东面，俄国的西面，一直受到威胁，故成立了波兰密码局（Biuro Szyfrow）以获取情报。波兰从汉斯-提罗·施密德（Hans-Thilo Schmidt）处得到谍报，由年轻的数学家马里安·雷耶夫斯基（Marian Rejewski）解译，用了一年时间编纂目录，并在1930年代制造了“炸弹”（bomba），渐渐掌握了解“谜”的技术。
1938年12月德国加强了“谜”的安全性，令波兰失去了情报。“谜”成为了希特勒（Hitler）闪电战略的核心，每天更改的加密排列维系了强大快速的攻击。1939年4月27日德国撤销与波兰的互不侵犯条约，波兰才不得不决定把“炸弹”这个构想与英、法分享，合力破解新的“谜”。1939年9月1日，德国侵击波兰，大战爆发。英国得到了波兰的解密技术后，40号房间除了原有的语言和人文学家，还加入了数学家和科学家，后来更成立了政府代码暨密码学校（Government code and Cipher School），5年内人数增至7000人。1940至1942年是加密和解密的拉锯战，成功的解码提供了很多宝贵的情报。例如在1940年得到了德军进攻丹麦和挪威的作战图，以及在不列颠战役（Battle of Britain）事先获得了空袭情报，化解了很多危机。但“谜”却并未被完全破解，加上“谜”的网络很多，令德国一直在大西洋战役中占上风。最后英国在“顺手牵羊”的行动中在德国潜艇上俘获“谜”的密码簿，破解了“谜”。英国以各种虚假手段掩饰这件事，免得德国再次更改密码，并策划摧毁了德国的补给线，缩短了大西洋战役的持续时间。

现代密码学

第二次世界大战后计算机与电子学的发展促成了更复杂的密码，而且计算机可以加密任何二进制形式的数据，不再限于书写的文字，以语言学为基础的破密术因此失效。多数计算机加密的特色是在二进制字符串上操作，而不像经典密码学那样直接地作用在传统字母数字上。然而，计算机同时也促进了破密分析的发展，抵消了某些加密法的优势。不过，优良的加密法仍保持领先，通常好的加密法都相当有效率（快速且使用少量资源），而破解它需要许多级数以上的资源，使得破密变得不可行。
虽然频率分析是很有效的技巧，实际上加密法通常还是有用的。不使用频率分析来破解一个消息需要知道当前是使用何种加密法，因此才会促成了谍报、贿赂、窃盗或背叛等行为。直到十九世纪学者们才体认到加密法的算法并非理智或实在的防护。实际上，适当的密码学机制（包含加解密法）应该保持安全，即使敌人知道了使用何种算法。对好的加密法来说，密钥的秘密性理应足以保障数据的机密性。这个原则首先由奥古斯特·柯克霍夫（Auguste Kerckhoffs）提出并被称为柯克霍夫原则（Kerckhoffs' principle）。信息论始祖克劳德·艾尔伍德·香农（Claude Shannon）重述：“敌人知道系统。”
大量的公开学术研究出现，是现代的事，这起源于一九七零年代中期，美国国家标准局（National Bureau of Standards, NBS；现称国家标准技术研究所，National, NIST）制定数字加密标准（DES），惠特菲尔德·迪菲和Hellman提出的开创性论文，以及公开发布RSA。从那个时期开始，密码学成为通信、计算机网络、计算机安全等上的重要工具。许多现代的密码技术的基础依赖于特定计算问题的困难度，例如因数分解问题或是离散对数问题。许多密码技术可被证明为只要特定的计算问题无法被有效的解出，那就安全。除了一个著名的例外：一次性密码本（one-time pad，OTP），这类证明是偶然的而非决定性的，但是是当前可用的最好的方式。
密码学算法与系统设计者不但要留意密码学历史，而且必须考虑到未来发展。例如，持续增加计算机处理速度会增进蛮力攻击（brute-force attacks）的速度。量子计算的潜在效应已经是部分密码学家的焦点。

现代密码学

现代密码学大致可被区分为数个领域。对称密钥密码学指的是发送方与接收方都拥有相同的密钥。直到1976年这都还是唯一的公开加密法。
现代密码学重视分组密码与流密码的研究及应用。分组密码在某种意义上是阿尔伯蒂的多字符加密法的现代化。分组密码取用明文的一个区块和密钥，输出相同大小的密文区块。由于消息通常比单一区块还长，因此有了各种方式将连续的区块编织在一起。DES和AES是美国联邦政府核定的分组密码标准（AES将取代DES）。尽管将从标准上废除，DES依然很流行（三重数据加密算法变形仍然相当安全），被使用在非常多的应用上，从自动交易机、电子邮件到远程访问。也有许多其他的区块加密被发明、发布，质量与应用上各有不同，其中不乏被破解者。
流密码，相对于区块加密，制造一段任意长的密钥原料，与明文依比特或字符结合，有点类似一次一密密码本（one-time pad）。输出的流根据加密时的内部状态而定。在一些流密码上由密钥控制状态的变化。RC4是相当有名的流密码。
密码散列函数（有时称作消息摘要函数，杂凑函数又称散列函数或哈希函数（Hash））不一定使用到密钥，但和许多重要的密码算法相关。它将输入数据（通常是一整份文件）输出成较短的固定长度散列值，这个过程是单向的，逆向操作难以完成，而且碰撞（两个不同的输入产生相同的散列值）发生的几率非常小。
消息认证码或押码（Message authentication codes, MACs）很类似密码散列函数，除了接收方额外使用秘密密钥来认证散列值。

公钥密码学

公开密钥密码学，简称公钥密码学，又称非对称密钥密码学，相对于对称密钥密码学，最大的特点在于加密和解密使用不同的密钥。
在对称密钥密码学中，加密和解密使用相同的密钥，也许对不同的消息使用不同的密钥，但都面临密钥管理的难题。由于每对通信方都必须使用异于他组的密钥，当网络成员的数量增加时，密钥数量成二次方增加。更尴尬的难题是：当安全的通道不存在于双方时，如何创建一个共有的密钥以利安全的通信？如果有通道可以安全地创建密钥，何不使用现有的通道。这个“鸡生蛋、蛋生鸡”的矛盾是长年以来密码学无法在真实世界应用的阻碍。
1976年，惠特菲尔德·迪菲与马丁·赫尔曼发表开创性的论文，提出公开密钥密码学的概念：一对不同值但数学相关的密钥，公开密钥（公钥, public key）与私密密钥（私钥, private key or secret key）。在公钥系统中，由公开密钥推算出配对的私密密钥于计算上是不可行的。历史学者David Kahn这样描述公开密钥密码学；“从文艺复兴的多字符取代法后最革命性的概念。”
在公钥系统中，公钥可以随意流传，但私钥只有该人拥有。典型的用法是，其他人用公钥来加密给该接受者，接受者使用自己的私钥解密。Diffie与Hellman也展示了如何利用公开密钥密码学来达成迪菲-赫尔曼密钥交换协议。
1978年，麻省理工学院的罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼发明另一个公开密钥系统，RSA。
直到1997年的公开文件中大众才知道，早在1970年代早期，英国情报机构政府通信总部的数学家James H. Ellis便已发明非对称密钥密码学，而且Diffie-Hellman与RSA都曾被Malcolm J. Williamson与Clifford Cocks分别发明于前。这两个最早的公钥系统提供优良的加密法基础，因而被大量使用。其他公钥系统还有Cramer-Shoup、El Gamal、以及椭圆曲线密码学等等。
除了加密外，公开密钥密码学最显著的成就是实现了数字签名。数字签名名副其实是普通签名的数字化，他们的特性都是某人可以轻易制造签名，但他人却难以仿冒。数字签名可以永久地与被签署消息结合，无法自消息上移除。数字签名大致包含两个算法：一个是签署，使用私密密钥处理消息或消息的散列值而产生签名；另一个是验证，使用公开密钥验证签名的真实性。RSA和DSA是两种最流行的数字签名机制。数字签名是公开密钥基础建设（public key infranstructures, PKI）以及许多网络安全机制（SSL/TLS, 虚拟专用网等）的基础。
公开密钥算法大多基于计算复杂度上的难题，通常来自于数论。例如，RSA源于整数因数分解问题；DSA源于离散对数问题。近年发展快速的椭圆曲线密码学则基于和椭圆曲线相关的数学难题，与离散对数相当。由于这些底层的问题多涉及模数乘法或指数运算，相对于分组密码需要更多计算资源。因此，公开密钥系统通常是复合式的，内含一个高效率的对称密钥算法，用以加密消息，再以公开密钥加密对称密钥系统所使用的密钥，以增进效率。

密码分析

密码分析又称破密术。密码分析的目的是发现密码机制的弱点，从事者可能是意图颠覆系统恶意的攻击者或评估系统弱点的设计人。在现代，密码算法与协议必须被仔细检查和测试，确定其保证的安全性。
大众普遍误解认为所有加密法都可以被破解。香农在二战时的工作就已证明只要密钥是完全随机，不重复使用，对外绝对保密，与消息等长或比消息更长的一次一密是不可能破解的。除了一次一密以外的多数加密法都可以以暴力攻击法破解，但是破解所需的努力可能是密钥长度的指数成长。
密码分析的方式有很多，因此有数个分类。一个常见的分别法则是攻击者知晓多少信息。在唯密文攻击中，密码分析者只能访问密文，好的现代密码系统对这种情况通常是免疫的。在已知明文攻击中，密码分析者可以访问多个明文、密文对。在选择明文攻击中，密码分析者可以自选任意明文，并被赋予相对应的密文，例如二战时布列颠所使用的园艺法。最后，选择密文攻击中，密码分析者可以自选任意密文，并被赋予相对应的明文
对称密钥加密的密码分析通常旨在查找比已知最佳破解法更有效率的方式。例如，以最简单的暴力法破解DES需要一个已知明文与2⁵⁵解密运算，尝试近半数可能的密钥。线性分析攻击法对DES需要2⁴³已知明文与2⁴³ DES运算，显然比暴力法有效。
公开密钥算法则基于多种数学难题，其中最有名的是整数分解和离散对数问题。许多公开密钥密码分析在研究如何有效率地解出这些计算问题的数值算法。例如，已知解出基于椭圆曲线的离散对数问题比相同密钥大小的整数因数分解问题更困难。因此，为了达到相等的安全强度，基于因数分解的技术必须使用更长的密钥。由于这个因素，基于椭圆曲线的公开密钥密码系统从1990年代中期后逐渐流行。
当纯粹的密码分析着眼于算法本身时，某些攻击则专注于密码设备运行的弱点，称为副通道攻击。如果密码分析者可以访问到设备运行加密或回报通行码错误的时间，它就可能使用时序攻击法破解密码。攻击者也可能研究消息的模式与长度，得出有用的信息，称为流量分析，对机敏的敌人这相当有效。当然，社会工程与其它针对人事、社交的攻击与破密术一并使用时可能是最有力的攻击法。

密码学原型

多数的密码学理论研究在探讨密码学原型：具备基本密码学特质的算法以及和其他问题的关连。例如，容易正向运算却难以逆向运算的单向函数。通常而言，密码应用如果要安全，就必须保证单向函数存在。然而，如果单向函数存在，就表示P ≠ NP。既然当前P与NP问题仍是未解，我们就无从得知单向函数是否存在。如果单向函数存在，那安全的准随机数产生器与准随机数函数就存在。
当前已知的密码学原型仅提供基本的机能。通常是机密、消息完整、认证、和不可否认。任何其他机能都是基本算法的组合与延伸，这类组合称为密码系统。例如PGP、SSH、SSL/TLS、公开密钥基础建设和数字签名等。其他密码原型还有加密算法本身、单向排列、暗门排列等。

密码协议

在许多状况，密码技术涉及通信的双方或多方（例如公司总部与分部）或是跨越时间（例如保护备份数据）。密码协议已经扩展到涵盖多种议题，像是交互证明、秘密分享与零知识，更复杂的有电子钞票和安全多方计算。
当一个好的密码系统的安全失效时，很少是密码学原型出现漏洞。大部分的弱点都发生于协议设计、系统实现、或是某些人为错误。许多密码学协议都在非系统化的过程中发展出来，很少有安全上的证明。一些正规分析协议安全的方式都本于数学逻辑（例如BAN逻辑）或近期的具体安全原则，这些都是数十年来研究人员的主题。很不幸的，这些工具都相当的笨重也无法用于复杂的设计。如何实现与集成密码学的应用本身是截然不同的领域，参见密码学工程与安全工程。

禁令

密码学长期以来都是情报或司法机构的兴趣。由于这些单位的隐密性以及禁令后个人隐私的减少，密码学也是人权支持者关心的焦点。环绕密码学的法律议题已有很长的历史，特别是在可以运行高质量密码的廉价计算机问世后。
在某些国家甚至本国性的密码学也受限制。直到1999年，法国仍然限制国内密码学的使用。许多国家有更严格的限制，例如白俄罗斯、哈萨克、蒙古、巴基斯坦、俄罗斯、新加坡、突尼斯、委内瑞拉和越南。
在美国，国内的使用是合法的，但仍然有许多法律冲突。一个特别重要的议题是密码软件与硬件的出口管制。由于密码分析在二战时期扮演的重要角色，也期待密码学可以持续在国家安全上效力，许多西方国家政府严格规范密码学的出口。二战之后，在美国散布加密科技到国外曾是违法的。事实上，加密技术曾被视为军需品，就像坦克与核武。直到个人计算机和互联网问世后情况才改变。好的密码学与坏的密码学对绝大部分用户来说是没有差别的，其实多数情况下，大部分现行密码技术普遍缓慢而且易出错。然而当互联网与个人计算机日益成长，优良的加密技术逐渐广为人知。可见出口管制将成为商务与研究上的阻碍。

出口管制

在1990年代发生了数件挑战美国出口规范的事件。其中一件是Phillip Zimmermann的PGP加密程序，于1991年6月在美国连源代码一并发布于互联网。在RSA Security公司提出抗议后，Zimmermann被商务部和联邦调查局侦讯达数年。接着，柏克莱加州大学的研究生Daniel Bernstein发起了对美国政府的法律诉讼，以言论自由挑战禁令的某些观点。1995年的Bernstein v. United States案例促成了在1999年判决印出密码算法的源代码属美国宪法言论自由保障范围内。在1996年，39个国家签订处理军武出口的华沙公约。该公约约定使用短密钥长度（对称密钥56比特；RSA　512位）的密码学不再受到出口管制。从2000年后，美国出口密码学已经宽松许多。现在，几乎所有的互联网用户都可访问到优良的密码学，就在浏览器内置的传输层安全性协议（TLS）或安全套接层（SSL）。Mozilla Thunderbird和微软Outlook电子邮件客户端程序可以用TLS链接至IMAP或Pop服务器，并以S/MIME收送加密的电子邮件。许多网络用户并不知晓他们的基本应用内含大量的密码系统。这些浏览器与邮件程序如此普及，甚至试图规范市民使用密码学使用的政府单位也无力从事有效的限制。

美国国家安全局介入

另一个密码学的争议点是美国国家安全局（美国国家安全局）在加密法发展的介入。国家安全局考量到将其制订为国家表准局的联邦标准，曾介入于IBM发展的DES。DES是NSA与IBM为了克制强力的差分分析法而制定，这个攻击直到1980年代晚期才公开。根据Steven Levy所说，IBM曾重新发现差分分析法，但被NSA下禁口令。这个攻击法直到Biham与Shamir在数年后再次发现才公开。这些事情显示了决定攻击者拥有哪些资源或知识的困难。还有1993年，NSA涉入用在Capstone计划的加密微芯片Clipper chip。Clipper饱受密码学者的批评，其一是因为其加密算法被列为机密，NSA可能蓄意设计较弱的加密法以达成情报目的；其二是整个项目案违反柯克霍夫原则，由于这机制使用到一个特别的只有政府才有的委任密钥，难保没有窃听的可能。

数字知识产权管理

数字知识产权管理又称数字知识产权（Digital rights management, DRM）
密码学是数字知识产权的核心，有许多技术被应用在保障著作权数据的使用。1998年，美国总统比尔·克林顿（Bill Clinton）签署了数字千禧年著作权法案（数字千年著作权法, DMCA），明定特定破密技术的重制或散布属犯罪行为，特别是某些回避DRM者。这对密码学研究社群造成了相当严重的潜在冲击，因为任何逆向解码技术都可以被用于破解DRM从而被认定为违反DMCA。考虑到这些争议，美国联邦调查局与司法部并未严格运行DMCA。一位密码学者Niels Ferguson曾公开陈述受DMCA的影响，他将不会发布部分研究给英特尔安全设计。Linux核心的第二号发展人物艾伦·考克斯与普林斯顿大学教授Edward Felten都曾受到这法案的相关困扰。Dmitry Sklyarov在从俄罗斯到美国访问时曾因违反该法案被监禁达数月，但违反DMCA的作品实际上发生于俄罗斯，而且在俄罗斯是合法行为。类似的事情发生在许多国家。例如欧盟所制定的Copyright Directive。在2007年，负责数字多功能影音光盘与HD DVD防伪的密钥被发现且是出在互联网上，同时，美国电影协会发出多个违DMCA的告示，导致大量互联网用户回击，也引出了公平使用与言论自由的议题。