我正在研究测试,但我仍然不明白为什么公钥算法比对称算法慢。
答案 0 :(得分:7)
Public-key cryptography是asymmetric cryptography的一种形式,其中不同之处在于使用额外的加密密钥。
Symmetric algorithms使用“共享密钥”,其中两个系统各使用一个加密密钥来加密和解密通信。
公钥加密不使用单个共享密钥,而是使用数学密钥对:公钥和私钥。在该系统中,通信用公钥加密,并用私钥解密。以下是维基百科的更好解释:
使用的区别技术 公钥加密是使用 非对称密钥算法,其中 用于加密消息的密钥不是 与用于解密的密钥相同 它。每个用户都有一对 加密密钥 - 公共加密 密钥和私有解密密钥。该 公开的加密密钥是 广泛分布,而私人 解密密钥只有 接受者。消息使用加密 收件人的公钥和可以 只能用。解密 相应的私钥。按键 在数学上是相关的,但是 私钥不可行(即in 实际或预计的实践) 源自公钥。该 发现可能的算法 生成公钥/私钥对 彻底改变了这种做法 密码学从中间开始 20世纪70年代。
计算开销非常明显:公共密钥可用于它所暴露的任何系统(互联网上的公钥系统,例如将公钥暴露给整个互联网)。为了补偿,公钥和私钥都必须非常大,以确保更强的加密级别。然而,结果是更强大的加密级别,因为私有解密密钥(到目前为止)无法从公共加密密钥进行反向设计。
还有更多会影响public-key infrastructure(PKI)的“速度”。由于此系统的一个问题是信任,因此大多数实现涉及certificate authority(CA),这些实体可信任委派密钥对并验证密钥的“身份”。
总结一下:更大的加密密钥大小,两个加密密钥而不是一个加密密钥,并引入了证书颁发机构:额外的DNS查找和服务器响应时间。
正是由于这种额外的开销,大多数实现都受益于hybrid algorithm,其中公钥和私钥用于生成会话密钥(非常类似于对称算法中的共享密钥)以获得两者的最佳效果世界。
答案 1 :(得分:4)
公钥算法依赖于“陷门”计算,这些计算加密计算成本高,并且计算难以用密钥解密。如果第一步太容易(与速度相关),第二步就变得不那么难(更容易破碎)。因此,公钥算法往往是资源密集型的。
私钥算法在加密阶段已经有了秘密,因此它们不必像使用公共秘密的算法那样做。
以上是过度概括,但应该让您了解相对速度差异背后的原因。话虽如此,私钥算法可能很慢,并且公钥算法可能具有有效的实现。魔鬼在细节中: - )
答案 2 :(得分:2)
加密和键控方法是一个非常深刻和复杂的主题,只有世界上最聪明的数学头脑才能完全理解,但大多数人都能理解顶级视图。
主要区别在于对称算法需要比非对称(PKI)方法更小,更小的密钥。因为对称算法在一个“共享密钥”(例如abcd1234
)上工作,该密码在可信通信方法中传输(例如,我将打电话给你并要求你提供共享密钥)然后他们不需要依赖其他安全方法(即我相信你不要告诉任何人)。
一般的经验法则是PKI方法比对称密钥慢大约1,000倍。