好的,我很困惑这两种加密方法的工作原理。我知道对称是常规的,并且在两个用户之间使用共享私钥。
基本上,我想知道
他们如何运作的原则
他们的目的
他们的相对表现
非对称和对称加密方法。
答案 0 :(得分:21)
我建议从Applied Cryptography开始。这是对密码学相关原理的精彩介绍。
如果您认真对密码学感兴趣,我强烈建议将Handbook of Applied Cryptography作为一项了不起的参考工作。一开始它处理起来太多了,但它是免费的,所以现在去抓一个副本:)当你完成AC时,阅读HAC。 (实际上,精装版非常制作精良,比几百页的激光打印纸更容易阅读;如果您喜欢PDF的外观,请考虑购买。)
对称加密的工作原理是将秘密输入与秘密密钥混合,使得(a)fast(b)无法从输出中导出输入或密钥。混合的细节差别很大,但有block ciphers和stream ciphers;块密码通过一次查看8或16或32字节块中的输入数据,并在这些块中扩散输入和密钥来工作。加密更多数据需要不同的modes of operation而不是块中的数据,不同的操作模式也可能会或可能不会在块之间传播数据。
对称密码非常适合批量数据加密,从8字节到8兆字节,是加密数据的最佳选择。
非对称加密通过利用后门的非常困难的数学问题来实现快速解决问题,如果你有一个小的一块非常重要的数据。通常的数学问题是factoring large numbers和discrete logarithms。非对称算法适用于固定数据大小,RSA和El Gamal通常为1024-2048位,RSA或El Gamal的Elliptic Curve版本为384位。 (椭圆曲线版本使用与整数不同的field进行计算.RSA和El Gamal及类似系统适用于指定乘法和乘法的任何字段一个添加操作,ECC有一个不同的字段表示,可以将“更多”数据巧妙地打包成一个位。这是一种超级聪明的方法,可以使众所周知的机制适合更少的内存,而我的一个 - 句子介绍不能开始正义。简单是令人惊奇的部分。)
非对称加密有助于解决key distribution problem,但只是勉强:在每对想要使用加密技术进行交谈的人之间不需要O(N ^ 2)密钥对,而是需要O(N)密钥,每人一对公共/私人对,每个人只需要知道其他人的公共部分。这仍然不是 easy 问题,因为x509的复杂性表明了这一点,但openPGP和OpenSSH等机制具有更简单的模型和机制,很多用途。
非对称密码通常用于传输session keys对称密码。即使只传输少量数据,密码学家通常更愿意发送用对称密码加密的实际数据,并发送用非对称密码加密的密钥。一个巨大的好处是您可以向一百个不同的收件人发送邮件,邮件大小为O(邮件大小+ 100 * 2048位) - 您可以单独加密每个收件人的会话密钥,并且只传输一次消息。伟大的成功。
非对称密码也用于digital signatures。虽然可以对message authenticity使用对称密码,但无法使用对称密码来提供non-repudiable signatures。
非对称密码非常适合加密少量随机或“无法区分”的数据,例如会话密钥和message digests。它最适合用于按键和散列。
对称密码通常比非对称密码快得多,但由于它们用于不同目的,速度差异在实践中不是问题。当然,算法的速度会有很大差异(DES软件速度慢,硬件速度快,但AES对我系统上的小数据集来说要快1.8到3.3倍,而且很可能在硬件方面要快得多。)
答案 1 :(得分:20)
执行摘要:
对称密码:比非对称密码更快,但需要一个必须由发送方和接收方共享的密钥。以安全的方式向双方提供此密钥本身就是一个非常重要的问题。
非对称密码:较慢,但通过使用两个密钥来解决密钥分发问题,其中一个密钥完全可以共享。
在实践中,这些可以结合起来以获得两全其美(例如HTTPS)。