跳至内容

密码学/非对称密码

来自维基教科书,开放世界中的开放书籍

在密码学中,非对称密钥算法使用一对不同但相关的加密密钥进行加密和解密。两个密钥在数学上相关; 使用一个密钥通过算法加密的消息可以通过使用另一个密钥的相同算法来解密。从某种意义上说,一个密钥“锁定”一个锁(加密);但需要不同的密钥来解锁它(解密)。

一些,但并非所有,非对称密钥密码都具有“公钥”属性,这意味着在已知其中一个密钥的情况下,没有已知的有效方法可以找到密钥对中的另一个密钥。这类算法非常有用,因为它完全规避了所有对称密钥密码和一些非对称密钥密码固有的密钥分发问题。一个人可以简单地发布一个密钥,而将另一个密钥保密。它们构成了现代密码学实践的基础。

邮政类比

[编辑 | 编辑源代码]

可以用来理解非对称系统的优点的类比是想象两个人,爱丽丝和鲍勃,通过公共邮件发送秘密消息。在这个例子中,爱丽丝拥有秘密消息,并希望将其发送给鲍勃,之后鲍勃发送秘密回复。

使用对称密钥系统,爱丽丝首先将秘密消息放入一个盒子里,然后使用一把她有钥匙的挂锁锁上盒子。然后,她通过普通邮件将盒子发送给鲍勃。当鲍勃收到盒子时,他使用爱丽丝钥匙的完全相同的副本(他以前以某种方式获得)打开盒子,并阅读消息。然后,鲍勃可以使用相同的挂锁发送他的秘密回复。

在非对称密钥系统中,鲍勃和爱丽丝拥有独立的挂锁。首先,爱丽丝要求鲍勃通过普通邮件将他的开锁的挂锁发送给她,并将其钥匙保密。当爱丽丝收到它时,她用它来锁住一个装有她信息的盒子,并将锁好的盒子发送给鲍勃。然后鲍勃可以用他的钥匙打开盒子,并阅读爱丽丝的消息。为了回复,鲍勃必须以类似的方式获得爱丽丝的开锁的挂锁来锁住盒子,然后将其寄回给她。非对称密钥系统中的关键优势是鲍勃和爱丽丝永远不需要互相发送他们钥匙的副本。这大大降低了第三方(也许,在这个例子中,是一个腐败的邮递员)在传输过程中复制钥匙的可能性,从而允许该第三方窥探爱丽丝和鲍勃之间将来发送的所有消息。此外,如果鲍勃不小心让其他人复制了他的钥匙,爱丽丝发送给鲍勃的消息将被泄露,但爱丽丝发送给其他人的消息将保持秘密,因为其他人将提供不同的挂锁供爱丽丝使用......

实际算法 - 两个关联的密钥

[编辑 | 编辑源代码]

幸运的是,密码学并不关心实际的挂锁,而是关心不容易被撬棍、剪线钳或液氮攻击的加密算法。

并非所有非对称密钥算法都以这种方式运行。最常见的是爱丽丝和鲍勃拥有两个密钥;它们中的任何一个(据目前所知)都不能从另一个推断出来。这被称为公钥密码学,因为密钥对中的一个密钥可以在不影响消息安全的情况下发布。在上面的类比中,鲍勃可能会公布如何制作一把锁的说明(“公钥”),但锁的构造使得不可能(据目前所知)从这些说明中推断出如何制作一个可以打开该锁的钥匙(“私钥”)。那些希望向鲍勃发送消息的人使用公钥加密消息;鲍勃使用他的私钥解密它。

当然,有人可能“撬开”鲍勃或爱丽丝的锁。与一次性密码或其等效物不同,目前尚无已知的非对称密钥算法已被证明对数学攻击是安全的。也就是说,目前尚不清楚密钥对中密钥之间的某种关系,或者算法操作中的某个弱点,是否可能被发现,从而允许在没有密钥的情况下进行解密,或者仅使用加密密钥进行解密。非对称密钥算法的安全性基于对解决底层数学问题难度的估计。随着计算机能力成本的降低以及新的数学发现,这些估计一直在发生变化。

过去曾在有前景的非对称密钥算法中发现弱点。“背包填充”算法在发现意外攻击时被证明是不安全的。最近,一些基于仔细测量已知硬件加密明文所需的确切时间的攻击已被用于简化对可能解密密钥的搜索。因此,使用非对称密钥算法并不能保证安全性;这是一个积极的研究领域,旨在发现和防御新的和意想不到的攻击。

使用非对称密钥过程中的另一个潜在弱点是“中间人”攻击的可能性,在这种攻击中,公钥的通信被第三方拦截并修改,以提供第三方的公钥。但是,加密的响应也必须被拦截、解密并使用正确的公钥在所有情况下重新加密,以避免怀疑,这使得这种攻击在实践中难以实施。

简要历史

[编辑 | 编辑源代码]

第一个已知的非对称密钥算法是由英国 GCHQ 的克利福德·科克斯发明的。当时没有公开,并于 1976 年由麻省理工学院的里维斯特、沙米尔和阿德曼重新发明。通常被称为 RSA,这是其结果。RSA 的安全性依赖于对对非常大的整数进行因式分解的难度。该领域的突破将给 RSA 的安全性造成相当大的问题。目前,RSA 容易受到攻击,通过对公钥的“模数”部分进行因式分解,即使密钥选择得当,对于小于 700 位的密钥也是如此。大多数权威人士建议 1024 位密钥在一段时间内将是安全的,除非在因式分解实践或实际量子计算机方面取得突破,但其他人则倾向于使用更长的密钥。

至少还有两种非对称算法是在 GCHQ 工作之后但 RSA 出版之前发明的。它们分别是拉尔夫·默克尔难题密码系统和迪菲-赫尔曼系统。在 RSA 出版很久之后,塔赫尔·埃尔加马尔发明了埃尔加马尔离散对数密码系统,它依赖于在有限域中反转对数的难度。它用于 SSL、TLS 和 DSA 协议。

椭圆曲线密码学是添加到非对称密钥算法类别中的一个相对较新的补充。虽然它在计算上更复杂,但许多人认为它比因式分解或离散对数问题代表了更难的数学问题。

实际限制和混合密码系统

[编辑 | 编辑源代码]

非对称密钥算法的一个缺点是它们比“同等”安全的对称密钥算法慢得多(典型值为 1000 多倍)。在许多高质量的加密系统中,两种算法类型都被使用;它们被称为“混合系统”。PGP 是一个早期且众所周知的混合系统。接收者的公钥加密一个对称算法密钥,该密钥用于加密主要消息。如果操作得当,这将结合了两种算法类型的优点。

我们将在本书后面的 公钥概述 和后续部分中更详细地讨论非对称密码。

华夏公益教科书