非对称加密和对称加密方法有什么区别?

10

好的,我对这两种加密方法的工作原理感到困惑。我知道对称加密是传统的方式,使用共享的私钥在两个用户之间进行通信。

基本上,我想知道:

  1. 它们的工作原理

  2. 它们的目的

  3. 它们的相对性能

非对称加密和对称加密方法。


4
这个问题有些宽泛,阅读这个主题的书籍会更有帮助,例如http://www.cacr.math.uwaterloo.ca/hac/。因为这是一个非常广泛的主题,“执行摘要”并不适用,因为魔鬼真的隐藏在细节中... - Bruno Rohée
2个回答

23

我建议从应用密码学开始。它是介绍密码学原理的优秀入门书籍。

如果你真的对密码学感兴趣,我强烈推荐应用密码学手册作为一个非常好的参考书。一开始可能会有些困难,但它是免费的,所以现在就去下载一份 :) 当你完成AC后,阅读HAC。(实际上,精装版印刷得非常好,比几百页激光打印的纸更容易阅读; 如果你喜欢PDF的外观,可以考虑购买它。)

对称加密通过将秘密输入与秘密密钥混合在一起,以使其(a)快速 (b)不能从输出中推导出输入或密钥。混合的细节因情况而异,但有块密码流密码; 块密码按8、16或32字节块一次查看输入数据,并在这些块内扩散输入和密钥。需要不同的操作模式来加密超出块容量的数据,不同的操作模式可能会或可能不会在块之间传播数据。

对于大量数据加密,从8字节到8TB,对称密码非常适合,是加密数据的最佳选择。

非对称加密利用具有“后门”的非常困难的数学问题,如果您拥有一小段非常重要的数据,则可以快速解决该问题。通常的数学问题是分解大数离散对数。非对称算法适用于固定的数据大小,通常为1024-2048比特用于RSAEl Gamal,以及384比特用于椭圆曲线版本的RSA或El Gamal。(椭圆曲线版本使用不同的进行计算。RSA、El Gamal和类似系统使用任何指定了乘和加操作的,而ECC则具有将“更多”数据神奇地打包到一个比特中的该域的不同表示。这是一种超级聪明的方法,使得众所周知的机制适合占用更少的内存,而我的一句话介绍无法充分体现它的精髓。简单性是惊人的部分。)

非对称加密有助于解决密钥分发问题,但只是勉强解决:它只需要O(N)个密钥对,每个人都有一个公钥/私钥对,每个人只需知道其他人的公钥部分。这仍然不是一个简单的问题,因为x509的复杂性证明了这一点,但是像openPGPOpenSSH这样的机制具有更简单的模型和机制,适用于许多用途。
非对称密码通常用于传输对称密码的会话密钥。即使只有少量数据需要传输,密码学家通常也会选择使用对称密码将实际数据加密,并使用非对称密码将密钥加密。一个巨大的好处是,您可以向100个不同的接收者发送消息,消息的大小将为O(消息大小+100*2048位) -- 您可以将会话密钥分别加密给每个接收者,并仅传输一次消息。非常成功。

非对称密码也用于数字签名。虽然对称密码可以用于消息的真实性认证,但对称密码不能用于提供不可否认签名

非对称密码非常适合加密少量随机或“难以区分于随机”的数据,例如会话密钥和消息摘要。最好用于密钥和哈希。

对称密码通常比非对称密码快得多,但由于它们用于不同的目的,实际上速度差异并不是问题。当然,速度可以根据算法显着变化(DES在软件中非常慢,在硬件中可能很快,而AES在我的系统上小数据集上快1.8至3.3倍,可能在硬件中仍然可以更快。)


在我看来,应用密码学的时代已经过去了,自从它被写出来以来,这个领域发生了很大的变化。 - Bruno Rohée
1
@Bruno Rohée,是的,这个领域已经发生了巨大变化,而且它一直都过于高层次,无法为实现者提供真正的价值,但作为入门工作,它很难被超越。 - sarnold

23

执行摘要:

对称密码:比非对称密码更快,但需要一个由发送方和接收方共享的单个密钥。以安全的方式将此密钥传递给双方本身就是一个不容易解决的问题。

非对称密码:速度较慢,但通过使用两个密钥解决了密钥分配问题,其中一个密钥可以完全公开。

在实践中,这些方法可以结合起来,取得最好的效果(例如 HTTPS)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接