密码学(其在西歐語文中之名稱源於希腊语kryptós,“隐藏的”, 和gráphein,“书写”),传统意义上来说,是研究如何把信息转换成一种隐蔽的方式并阻止其他人得到它。在过去,密码学被用在重要的交流活动中来确保隐蔽性,如在间谍和反间谍之间,或外交官和总部联系之间等。在近几十年,密码学被用在越来越广的场合;它已经成为安全工程学的基础工具。密码学是跨学科科目,从很多领域衍生而来:它可以被看作是信息理论,却使用了大量的数学领域的工具,众所周知的如数论和有限数学。密码学也可以说是工程学的一个分支,不同的是它必须应对一些活动频繁的,高度智慧的,有恶意的敌人的攻击(见密码工程学和安全工程学)。
紧密相关的领域如隐写术,它主要研究如何使一条讯息变得隐蔽并且不用暴露讯息本身的内容(如:微粒和特殊墨水等);其他相关领域如通讯分析,主要研究通讯的方式(如谁在和谁交流、如何交流、何时)。
通常来说,“编码”和“密码”是相等的。在密码学领域,然而,这个术语却有一个特定的技术意思:“编码”是传统密码学的方法,也就是用更少的字来替换更多的原始字节,典型的是字或者段落(如“苹果派”(apple pie)替换“黎明时的进攻”(attack at dawn))。相反,经典密码学通常替换或重新安排字母顺序(如“黎明时的进攻”(attack at dawn)变成了“buubdl bu ebxo”)。编码的秘密信息一般用编码大全(codebook)指定。
研究如何破解密码学的科学称为密码分析。密码学和密码分析常常合在一起被称为“密码”(cryptology),虽然“密码学”也有这种广泛的意思。这两种术语对于该领域来说都是被认可的,并且都有很长的历史。很多人常常使用简称“Crypto”,虽然不是正规术语。
在英语中,“cipher”一词也可拼写为“cypher”;类似的如“ciphertext”拼为“cyphertext”等等。两种拼法在英语中都有很长时间了,偶尔在两种拼法的拥护者中甚至会造成争执。
密码分析家可能是密码学家的天然敌人,在某种程度上这是有道理的:您可以从密码学史中理解该说法。然而,把两者理解为互补是很好的选择:只有彻底地理解了密码分析学才可以创造安全的密码系统。
现在有很多种密码分析攻击方式,并且很容易把它们归类。一个区别就是攻击者如何可以得到并利用信息,如,密码分析家只可以得到秘文吗?他可以得到或猜出对应的原文吗?甚至:他可以选择任意的原文用来加密吗?(见秘文类,已知明文类 以及 选择明文类)。这些例子都把密码过程看成是一个抽象的黑盒,还有一些攻击是基于直接运行密码学源程序。如果一个密码分析家可以得到,例如,时序或功耗损失,他就有可能破解用常规分析方法无法破解的密码。
如果一个密码系统使用密钥或口令,那么就有可能受到穷举法的攻击。线性分析法和差分分析法是常用的攻击對稱鑰算法(symmetric key algorithm)的方法。当密码学依靠数学上的难解问题时,常常用在非對稱鑰算法中,一些算法如因式分解就是潜在的攻击手段。
密码学有悠久且多姿多彩的歷史。
最早的隐写术只須紙筆,現在稱為經典密碼學(classical cryptography)。其兩大類別為置換加密法,將字母的順序重新排列;替換加密法,將一組字母換成其他字母或符號。經典加密法的資訊很易受統計的攻破,資料越多,解破就更容易,使用分析頻率就是好辦法。經典密碼學現在仍未消失,經常出現在智力遊戲之中。在二十世纪早期,包括转轮机的一些机械设备被发明出来用于加密,其中最著名的
是用于第二次世界大战的密码机Enigma. 这些机器产生的密码相当大得增加了密码分析的难度。比如针对Enigma各种各样的攻击,在付出了相当大的的努力后才得以成功。
密码学通常用来保证安全的通讯. 我们希望通过安全通讯来获得以下四个特性:
密码学能提供有效的机制来达到以上四个目标. 然而, 有些目标并不总是必要的, 有时还是不切实际的. 例如消息的发送者可能希望具有匿名性. 此时, 不可抵赖性就不合适了
Kriptografie | Criptografia | Kryptografie | Kryptografi | Kryptografie | Κρυπτογραφία | Cryptography | Criptografía | Krüptograafia | Salaus | Cryptographie | קריפטוגרפיה | Kriptográfia | Kriptografi | Crittografia | 暗号理論 | 암호학 | Cryptografie | Kryptografia | Criptografia | Криптография | Kryptografi | Kriptografi | Mật mã học