执行摘要:
的 对称密码: 强> 比非对称密码更快,但需要一个必须由发送方和接收方共享的密钥。以安全的方式向双方提供此密钥本身就是一个非常重要的问题。
的 不对称密码: 强> 较慢,但通过使用两个键来解决密钥分发问题,其中一个密钥完全可以共享。
在实践中,这些可以结合起来以获得两全其美(例如HTTPS)。
我建议先从 应用密码学 。这是对密码学相关原理的精彩介绍。
如果你是 认真地 对密码学感兴趣,我强烈推荐 应用密码学手册 作为一个惊人的参考工作。一开始它处理起来太多了,但它是免费的,所以现在去抓一个副本:)当你完成AC时,阅读HAC。 (实际上,精装版是 非常 制作精良,比几百页的激光打印纸更容易阅读;如果您喜欢PDF的外观,请考虑购买。)
对称加密通过将秘密输入与秘密密钥混合来工作,使得它是(a)快速(b)不能从输出中导出输入或密钥。混合的细节变化很大,但有 分组密码 和 流密码 ;块密码通过一次查看8或16或32字节块中的输入数据,并在这些块中扩散输入和密钥来工作。不同 运作方式 需要加密的数据多于块中的数据,不同的操作模式也可能会或可能不会在块之间传播数据。
对称密码非常适合批量数据加密,从8字节到8兆字节,是加密的最佳选择 数据 。
非对称加密的工作原理是利用非常困难的数学问题 后门 启用一个 快速 解决问题的方法, 如果 你有一小部分非常重要的数据。通常的数学问题是 考虑大数 和 离散对数 。非对称算法适用于固定数据大小,通常为1024-2048位 RSA 和 El Gamal ,和384位 椭圆曲线 版本的RSA或El Gamal。 (Elliptic Curve版本使用不同的版本 领域 比计算的整数。 RSA和El Gamal以及类似系统可以与任何系统配合使用 领域 这指定了两个 乘 和 加 操作,并且ECC具有该字段的不同表示,其神奇地将“更多”数据打包到一个位中。这是一种超级聪明的方法,可以使众所周知的机制适应更少的记忆,而我的一句话介绍无法开始正义。简单是令人惊讶的部分。)
非对称加密有助于解决问题 密钥分配问题 ,但只是勉强:在每对想要使用加密技术进行交谈的人之间不需要O(N ^ 2)密钥对,它需要O(N)密钥,每人一个公共/私人对,每个人都需要了解其他人的 上市 一部分。这仍然不是 简单 问题,因为复杂性 X509 演示,但机制,如 的OpenPGP 和 OpenSSH的 具有更简单的模型和机制,可以很好地用于许多用途。
非对称密码通常用于传输 会话密钥 对于对称密码。即使只传输少量数据,密码学家通常更愿意发送用对称密码加密的实际数据,并发送用非对称密码加密的密钥。一个巨大的好处是您可以向一百个不同的收件人发送邮件,邮件大小为O(邮件大小+ 100 * 2048位) - 您可以单独加密每个收件人的会话密钥,并且只传输一次消息。巨大的成功。
不对称密码也用于 数字签名 。虽然可以使用对称密码 消息真实性 ,对称密码 不能 用于提供 不可否认的签名 。
非对称密码非常适合加密少量随机或“无法区分”的数据,例如会话密钥和 消息摘要 。它最适合用于按键和散列。
对称密码通常比非对称密码快得多,但由于它们用于不同目的,速度差异在实践中不是问题。当然,算法的速度会有很大差异( DES 软件速度慢,硬件速度快,但是 AES 对于我的系统上的小数据集,速度提高了1.8到3.3倍,而且在硬件中可能要快得多。)