【问题标题】:Why public key algorithms are slow?为什么公钥算法很慢?
【发布时间】:2011-05-17 00:49:22
【问题描述】:

我正在为测试而学习,但我仍然不明白为什么公钥算法比对称算法慢得多。

【问题讨论】:

  • stackoverflow.com 或programmers.stackexchange.com 上的人将能够更好地回答这个问题。
  • 或者 infosec se: security.stackexchange.com

标签: public-key


【解决方案1】:

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

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

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

使用的区分技术 公钥密码术是使用 非对称密钥算法,其中 用于加密消息的密钥不是 与用于解密的密钥相同 它。每个用户都有一对 加密密钥——一种公共加密 密钥和私有解密密钥。这 公开可用的加密密钥是 分布广泛,而私人 解密密钥仅对 接受者。消息被加密 收件人的公钥,并且可以 只能用 对应的私钥。按键 在数学上是相关的,但 私钥不能可行(即在 实际或预计的做法)是 从公钥衍生而来。这 发现算法可以 生成公钥/私钥对 彻底改变了实践 密码学从中间开始 1970 年代。

那么计算开销就很明显了:公钥可用于它所暴露的任何系统(互联网上的公钥系统,例如将公钥暴露给整个互联网)。作为补偿,公钥和私钥都必须非常大,以确保更高级别的加密。然而,结果是更高级别的加密,因为私人解密密钥(到目前为止)无法从公共加密密钥进行逆向工程。

还有更多因素会影响public-key infrastructure (PKI) 的“速度”。由于该系统的问题之一是信任,因此大多数实现都涉及certificate authority (CA),它们是受信任的实体,可以委托密钥对并验证密钥的“身份”。

总结一下:更大的加密密钥大小,两个加密密钥而不是一个,并且引入了证书颁发机构:额外的 DNS 查找和服务器响应时间。

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

【讨论】:

  • 很好的答案,很好地总结了非对称加密中涉及的各种组件,以及它变慢的原因。
【解决方案2】:

公钥算法依赖于“trapdoor”计算,即加密计算成本高,使用密钥解密计算复杂。如果第一步太容易(与速度相关),那么第二步变得不那么难(更容易破碎)。因此,公钥算法往往是资源密集型的。

私钥算法在加密阶段就已经掌握了秘密,因此它们不需要做与公开秘密的算法一样多的工作。

以上内容过于笼统,但应该让您了解相对速度差异背后的原因。话虽如此,私钥算法可能很慢,而公钥算法可能有一个有效的实现。魔鬼在细节中:-)

【讨论】:

    【解决方案3】:

    加密和密钥方法是一个非常深奥和复杂的话题,只有世界上最聪明的数学头脑才能完全理解,但也有大多数人可以理解的顶级观点。

    主要区别在于,对称算法需要比非对称 (PKI) 方法小得多的密钥。因为对称算法在一个“共享秘密”(例如abcd1234)上工作,该秘密是在一个受信任的通信方法中传输的(例如,我要打电话给你并要求你提供共享秘密)然后他们不只要他们依赖其他安全方法(即我相信你不会告诉任何人),就不需要这样做。

    PK 基础架构涉及通过互联网、通过不受信任的空间发送该“密钥”,并涉及使用大量素数和大量密钥(例如 1024 位或 2048 位而不是 128 或 256 位)。

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

    【讨论】:

    • =) 啊密钥大小是问题之一:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2015-03-14
    • 1970-01-01
    • 2019-10-02
    • 2010-10-30
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多