好的,我对这两种加密方法的工作原理感到困惑。我知道对称加密是传统的方式,使用共享的私钥在两个用户之间进行通信。
基本上,我想知道:
它们的工作原理
它们的目的
它们的相对性能
非对称加密和对称加密方法。
好的,我对这两种加密方法的工作原理感到困惑。我知道对称加密是传统的方式,使用共享的私钥在两个用户之间进行通信。
基本上,我想知道:
它们的工作原理
它们的目的
它们的相对性能
非对称加密和对称加密方法。
我建议从应用密码学开始。它是介绍密码学原理的优秀入门书籍。
如果你真的对密码学感兴趣,我强烈推荐应用密码学手册作为一个非常好的参考书。一开始可能会有些困难,但它是免费的,所以现在就去下载一份 :) 当你完成AC后,阅读HAC。(实际上,精装版印刷得非常好,比几百页激光打印的纸更容易阅读; 如果你喜欢PDF的外观,可以考虑购买它。)
对称加密通过将秘密输入与秘密密钥混合在一起,以使其(a)快速 (b)不能从输出中推导出输入或密钥。混合的细节因情况而异,但有块密码和流密码; 块密码按8、16或32字节块一次查看输入数据,并在这些块内扩散输入和密钥。需要不同的操作模式来加密超出块容量的数据,不同的操作模式可能会或可能不会在块之间传播数据。
对于大量数据加密,从8字节到8TB,对称密码非常适合,是加密数据的最佳选择。
非对称加密利用具有“后门”的非常困难的数学问题,如果您拥有一小段非常重要的数据,则可以快速解决该问题。通常的数学问题是分解大数和离散对数。非对称算法适用于固定的数据大小,通常为1024-2048比特用于RSA和El Gamal,以及384比特用于椭圆曲线版本的RSA或El Gamal。(椭圆曲线版本使用不同的域进行计算。RSA、El Gamal和类似系统使用任何指定了乘和加操作的域,而ECC则具有将“更多”数据神奇地打包到一个比特中的该域的不同表示。这是一种超级聪明的方法,使得众所周知的机制适合占用更少的内存,而我的一句话介绍无法充分体现它的精髓。简单性是惊人的部分。)
非对称加密有助于解决密钥分发问题,但只是勉强解决:它只需要O(N)个密钥对,每个人都有一个公钥/私钥对,每个人只需知道其他人的公钥部分。这仍然不是一个简单的问题,因为x509的复杂性证明了这一点,但是像openPGP和OpenSSH这样的机制具有更简单的模型和机制,适用于许多用途。非对称密码也用于数字签名。虽然对称密码可以用于消息的真实性认证,但对称密码不能用于提供不可否认签名。
非对称密码非常适合加密少量随机或“难以区分于随机”的数据,例如会话密钥和消息摘要。最好用于密钥和哈希。
对称密码通常比非对称密码快得多,但由于它们用于不同的目的,实际上速度差异并不是问题。当然,速度可以根据算法显着变化(DES在软件中非常慢,在硬件中可能很快,而AES在我的系统上小数据集上快1.8至3.3倍,可能在硬件中仍然可以更快。)
执行摘要:
对称密码:比非对称密码更快,但需要一个由发送方和接收方共享的单个密钥。以安全的方式将此密钥传递给双方本身就是一个不容易解决的问题。
非对称密码:速度较慢,但通过使用两个密钥解决了密钥分配问题,其中一个密钥可以完全公开。
在实践中,这些方法可以结合起来,取得最好的效果(例如 HTTPS)。