密码学/简介
密码学是研究信息隐藏和验证的学科。它包括协议、算法和策略,用于安全且一致地防止或延缓对敏感信息的未经授权的访问,并实现对通信中每个组件的可验证性。
密码学源于希腊语:kryptós,“隐藏”,和gráphein,“写作” - 或“隐藏的写作”。研究和发展密码学的人被称为密码学家。研究如何规避密码学对意外接收者的使用称为密码分析,或破译。密码学和密码分析有时统称为密码学,涵盖整个学科。在实践中,“密码学”也经常用来指代整个领域,特别是作为应用科学。在 21 世纪初,在一个日益互联和技术化的世界中,密码学开始无处不在,人们也越来越依赖它带来的好处,特别是更高的安全性和可验证性。
密码学是一个跨学科的学科,借鉴了多个领域。在计算机时代之前,它与语言学密切相关。如今,重点已经转移,密码学广泛使用数学的技术领域,特别是那些统称为离散数学的领域。这包括来自数论、信息论、计算复杂性、统计学和组合学的主题。它也是工程学的一个分支,但它是一个不寻常的分支,因为它必须处理积极的、聪明的和恶意的反对。
密码学子领域的例子是隐写术 - 研究隐藏消息的存在,而不一定是消息本身的内容(例如,微点或隐形墨水) - 以及流量分析,即分析通信模式以了解秘密信息。
当信息从可理解的形式转换为不透明的形式时,这称为加密。当信息恢复为可理解的形式时,这称为解密。信息的预期接收者或授权使用取决于用户是否拥有特定的秘密知识。只有拥有秘密知识的用户才能将不透明的信息转换回其可理解的形式。秘密知识通常称为密钥,尽管秘密知识可能包括用于加密/解密的整个过程或算法。信息以其可理解的形式称为明文(或纯文本);以其加密的形式称为密文。用于加密和解密的算法称为密码(或密码)。
密码学中的常见目标
[edit | edit source]本质上,密码学涉及四个主要目标。它们是
- 消息机密性(或隐私):只有授权的接收者才能从其加密形式中提取消息的内容。这是通过隐藏、阻止或延迟对加密信息的自由访问来实现的。
- 消息完整性:接收者应该能够确定消息是否已被篡改。
- 发送者身份验证:接收者应该能够从消息中验证发送者的身份、消息的来源或它经过的路径(或组合),以验证发射者的声明或验证接收者的预期。
- 发送者不可否认性:发送者不应该能够否认发送消息。
并非所有密码系统都能实现上述所有目标。密码学的一些应用有不同的目标;例如,某些情况需要否认,其中参与者可以合理地否认他们是消息的发送者或接收者,或将这些目标扩展到包括以下变体:
- 消息访问控制:谁是消息的有效接收者。
- 消息可用性:通过提供限制消息、信道、发射者或接收者在时间或空间上的有效性的方法。
密码学的常见形式
[edit | edit source]密码学涉及所有合法的信息用户都拥有访问该信息的所需密钥。
- 如果发送者和接收者必须使用相同的密钥来对受保护的信息进行编码或解码,则该密码是对称密钥密码,因为每个人都使用相同的密钥来处理同一消息。主要问题是,密钥必须以某种方式私下地提供给发送者和接收者。因此,对称密钥密码也称为私钥(或密钥)密码。
- 如果发送者和接收者分别拥有与其在通信中所扮演的角色相对应的不同密钥,则该密码是非对称密钥密码,因为对同一消息的编码和解码存在不同的密钥。它也称为公钥加密,因为用户公开分发其中一个密钥,而不担心保密。在向用户发送机密消息的情况下,他们会分发加密密钥。非对称加密依赖于这样一个事实,即拥有加密密钥不会泄露解密密钥。
- 数字签名是身份验证的一种形式,与公钥加密有一些相似之处。两个密钥是公共验证密钥和秘密签名密钥。与公钥加密一样,验证密钥可以分发给其他人,但前提是分发过程应该以某种方式验证秘密密钥的所有者。安全性依赖于这样一个事实,即拥有验证密钥不会泄露签名密钥。
- 哈希函数是具有特殊属性的无密钥消息摘要。
其他
设计不良或实现不良的密码系统只能通过偶然、虚张声势或对手缺乏兴趣来实现这些目标。用户可以,并且经常会,在信誉良好的密码方案中找到弱点,即使这些方案设计精良。
即使使用设计精良、实现良好且使用得当的密码系统,某些目标在某些情况下也不实用(或不可取)。例如,消息发送者可能希望匿名,因此会故意选择不使用不可否认性。或者,该系统可能是为了在计算资源有限的环境中使用,或者消息机密性可能不是问题。
在古典密码学中,消息通常被加密并从一个人或一组人传送到另一个人或一组人。在现代密码学中,对于“发送者”或“接收者”有很多可能的选项。一些例子,用于现代世界的真实密码系统,包括
- 在本地计算机上运行的计算机程序,
- 在“附近”的计算机上运行的计算机程序,该程序为其他附近系统上的用户“提供安全服务”,
- 一个人(通常被理解为“在键盘上”)。但是,即使在这个例子中,假设的人类通常也不被认为实际上对任何东西进行加密、签名、解密或身份验证。相反,他或她指示计算机程序执行这些操作。人类行为与被认为(无需过多考虑)“由人类完成”的行为之间的这种“模糊分离”是密码系统设计、实现和使用中出现问题的一个来源。这些问题通常非常微妙,也相应地模糊;实际上,即使对于具有知识、技能和良好工程意识的实践密码学家来说,也是如此。
当存在关于这些点的混淆时(例如,在设计阶段、在实现过程中、安装后由用户使用,或者…),在实现每个陈述的目标时很容易出现故障 - 通常不会引起任何参与的人类注意,甚至给定一个完美的密码系统。这种故障通常是由于密码学以外的问题造成的;每次这样的故障都表明,好的算法、好的协议、好的系统设计和好的实现本身并不能,甚至结合起来也不能提供“安全”。相反,需要仔细考虑整个密码系统的设计及其在实际设备上由实际人员在运行“生产”系统软件(例如,操作系统)时在实际生产中的使用 - 这在实践中经常缺失或不足。世界的密码系统。
尽管密码学有着悠久而复杂的历史,直到 19 世纪,密码学才发展出比对加密或密码分析(寻找密码系统弱点科学)的临时方法更先进的方法。后者的例子包括查尔斯·巴贝奇在克里米亚战争时代对多字母密码的数学密码分析工作,后来由普鲁士的卡西斯基公开重复。在这段时间里,密码学几乎没有理论基础;相反,对密码学的理解通常由来之不易的知识片段和经验法则组成;例如,参见 19 世纪后期的奥古斯特·科赫斯(Auguste Kerckhoffs)的密码著作。一个日益增长的数学趋势一直加速到第二次世界大战(特别是在威廉·F·弗里德曼将统计技术应用于密码学以及马里安·雷耶夫斯基最初破解德国陆军的谜机系统)。第二次世界大战以来,密码学和密码分析都变得更加数学化。即使在那时,也是广泛的计算机可用性和互联网作为通信媒介,才使除了国家政府或类似大型企业以外的任何人普遍使用有效密码学。
外部链接