2010-11-28 89 views
5

我正在学习测试,我仍然没有得到它为什么公钥算法比对称算法慢。为什么公钥算法很慢?

+0

在stackoverflow.com或programmers.stackexchange.com的家伙将能够更好地回答这个问题。 – Iain 2010-11-28 22:33:45

+0

或者可能是这样的:http://security.stackexchange.com/ – DanFromGermany 2015-06-24 10:19:22

回答

6

Public-key cryptographyasymmetric cryptography的一种形式,其中区别在于使用了额外的密钥。

Symmetric algorithms使用“共享秘密”,其中两个系统各自使用单个加密密钥来加密解密通信。

公钥加密不使用单个共享密钥,而是使用数学密钥对:公钥和私钥。在这个系统中,通信是用公钥加密的,并用私钥解密。下面是来自维基百科的一个更好的解释:

在 公共密钥加密中使用的识别技术是利用 非对称密钥算法,其中使用的 密钥加密的消息不 一样使用的密钥解密 吧。每个用户都有一对 密钥 - 公钥加密密钥和一个私钥解密密钥。 公开可用的加密密钥是广泛分布的 ,而私人的 解密密钥只有 收件人知道。消息使用收件人的公钥加密 ,并且只能使用 对应的私钥解密 。密钥 在数学上是相关的,但私钥不可行(即在 实际或计划的练习中)是从公钥导出的 。 算法的发现可能产生公钥/私钥对 革命化的做法 密码学开始于20世纪70年代中期 。

的计算开销则相当明显:公钥是提供给它暴露于任何系统(公共密钥系统在互联网上,例如暴露公钥到整个互联网)。为了弥补,公钥和私钥都必须相当大才能确保更高级别的加密。但是,结果是一个更加强大的加密级别,因为私有解密密钥(迄今为止)不能从公用加密密钥进行反向设计。

还有更多可能影响public-key infrastructure(PKI)的“速度”。由于这个系统的一个问题是信任,所以大多数实现涉及certificate authority(CA),它们是可信的委托密钥对并验证密钥的“身份”的实体。所以总结一下:更大的加密密钥大小,两个加密密钥而不是一个密钥,以及引入证书颁发机构:额外的DNS查询和服务器响应时间。

这是因为这种额外开销,大多数实现受益于hybrid algorithm,其中公钥和私钥用于生成会话密钥(很像对称算法中的共享密钥)以获得两全其美。

2

加密和键控方法是一个非常深刻和复杂的话题,只有世界上最聪明的数学思想才能完全理解,但是大多数人都可以理解的顶级视图。

主要区别在于对称算法比非对称(PKI)方法需要更多,更小的密钥。因为对称算法是在一个以可信通信方式传输的“共享密钥”(例如abcd1234)上工作的(例如,我打电话给你打电话询问共享密钥),那么它们不会只要他们依赖于其他安全方法(即我相信你不要告诉任何人),就需要这样做。 PK基础设施涉及通过互联网,不可信空间发送该“密钥”,并涉及使用巨大的素数和大量密钥(例如1024位或2048位而不是128位或256位)。

一般的经验法则是PKI方法大约比对称密钥慢1000倍。

+0

=)ah keyize是其中一个问题:) – 2010-11-28 22:38:54

3

公钥算法依赖于“陷门”计算,这些算法在计算上花费昂贵的加密和计算上难以用秘密密钥解密。如果第一步太容易了(与速度相关),第二步变得更难(更易破碎)。因此,公钥算法往往是资源密集型的。

私钥算法在加密阶段已经有了秘密,所以他们不必像做公开秘密的算法那样做很多工作。

以上是一个过度概括,但应该让你感觉到相对速度差异背后的原因。话虽如此,私钥算法可能会很慢,公钥算法可能会有一个有效的实现。魔鬼是在细节:-)