我正在学习测试,我仍然没有得到它为什么公钥算法比对称算法慢。为什么公钥算法很慢?
回答
Public-key cryptography是asymmetric cryptography的一种形式,其中区别在于使用了额外的密钥。
Symmetric algorithms使用“共享秘密”,其中两个系统各自使用单个加密密钥来加密解密通信。
公钥加密不使用单个共享密钥,而是使用数学密钥对:公钥和私钥。在这个系统中,通信是用公钥加密的,并用私钥解密。下面是来自维基百科的一个更好的解释:
在 公共密钥加密中使用的识别技术是利用 非对称密钥算法,其中使用的 密钥加密的消息不 一样使用的密钥解密 吧。每个用户都有一对 密钥 - 公钥加密密钥和一个私钥解密密钥。 公开可用的加密密钥是广泛分布的 ,而私人的 解密密钥只有 收件人知道。消息使用收件人的公钥加密 ,并且只能使用 对应的私钥解密 。密钥 在数学上是相关的,但私钥不可行(即在 实际或计划的练习中)是从公钥导出的 。 算法的发现可能产生公钥/私钥对 革命化的做法 密码学开始于20世纪70年代中期 。
的计算开销则相当明显:公钥是提供给它暴露于任何系统(公共密钥系统在互联网上,例如暴露公钥到整个互联网)。为了弥补,公钥和私钥都必须相当大才能确保更高级别的加密。但是,结果是一个更加强大的加密级别,因为私有解密密钥(迄今为止)不能从公用加密密钥进行反向设计。
还有更多可能影响public-key infrastructure(PKI)的“速度”。由于这个系统的一个问题是信任,所以大多数实现涉及certificate authority(CA),它们是可信的委托密钥对并验证密钥的“身份”的实体。所以总结一下:更大的加密密钥大小,两个加密密钥而不是一个密钥,以及引入证书颁发机构:额外的DNS查询和服务器响应时间。
这是因为这种额外开销,大多数实现受益于hybrid algorithm,其中公钥和私钥用于生成会话密钥(很像对称算法中的共享密钥)以获得两全其美。
加密和键控方法是一个非常深刻和复杂的话题,只有世界上最聪明的数学思想才能完全理解,但是大多数人都可以理解的顶级视图。
主要区别在于对称算法比非对称(PKI)方法需要更多,更小的密钥。因为对称算法是在一个以可信通信方式传输的“共享密钥”(例如abcd1234
)上工作的(例如,我打电话给你打电话询问共享密钥),那么它们不会只要他们依赖于其他安全方法(即我相信你不要告诉任何人),就需要这样做。 PK基础设施涉及通过互联网,不可信空间发送该“密钥”,并涉及使用巨大的素数和大量密钥(例如1024位或2048位而不是128位或256位)。
一般的经验法则是PKI方法大约比对称密钥慢1000倍。
=)ah keyize是其中一个问题:) – 2010-11-28 22:38:54
公钥算法依赖于“陷门”计算,这些算法在计算上花费昂贵的加密和计算上难以用秘密密钥解密。如果第一步太容易了(与速度相关),第二步变得更难(更易破碎)。因此,公钥算法往往是资源密集型的。
私钥算法在加密阶段已经有了秘密,所以他们不必像做公开秘密的算法那样做很多工作。
以上是一个过度概括,但应该让你感觉到相对速度差异背后的原因。话虽如此,私钥算法可能会很慢,公钥算法可能会有一个有效的实现。魔鬼是在细节:-)
- 1. 为什么这个算法很慢?
- 2. 为什么方法很慢?
- 3. 为什么Crystal Reports PrintToPrinter方法很慢
- 4. 为什么sql.rows Groovy方法很慢
- 5. 为什么这种方法很慢?
- 6. 为什么MinGW很慢?
- 7. 为什么babel transpilation很慢?
- 8. 为什么ODBC很慢?
- 9. 为什么lockCanvas()很慢?
- 10. 为什么boost :: function很慢?
- 11. 为什么C#Parallel.Invoke很慢?
- 12. 为什么dataframe.values很慢
- 13. 为什么我的复制和转换“算法”很慢?
- 14. 算法为什么这么慢?
- 15. 为什么这个递归很慢?
- 16. JavaScript为什么操纵__proto__很慢?
- 17. 为什么我的requestAnimFrame仍然很慢?
- 18. 为什么上下文切换很慢?
- 19. 为什么搜索多张表很慢?
- 20. 为什么刷新html页面很慢
- 21. OpenGL GLUT窗口很慢,为什么?
- 22. 为什么textchangelistener速度很慢?
- 23. 为什么释放速度很慢?
- 24. 为什么这个SQL查询很慢?
- 25. 为什么我的Shell排序很慢?
- 26. R diff函数为什么很慢?
- 27. 为什么我的角栅很慢?
- 28. 为什么Gallery很慢/访问GoogleLoginService?
- 29. 为什么StringTemplate可能会很慢?
- 30. 为什么这个Haskell函数很慢?
在stackoverflow.com或programmers.stackexchange.com的家伙将能够更好地回答这个问题。 – Iain 2010-11-28 22:33:45
或者可能是这样的:http://security.stackexchange.com/ – DanFromGermany 2015-06-24 10:19:22