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