【问题标题】:Benchmarking symmetric and asymmetric cryptography对对称和非对称密码学进行基准测试
【发布时间】:2011-09-27 12:02:22
【问题描述】:

为了保护字节流的完整性,从概念上讲,可以使用对称加密(例如带有 SHA-1 的 HMAC)或非对称加密(例如带有 RSA 的数字签名)。 众所周知,非对称加密比使用对称加密要昂贵得多。但是,我想知道硬数字,并想知道是否存在用于现有加密库(例如 openssl)的基准套件,以便获得对称和非对称加密算法的一些测量结果。 不幸的是,我从内置的“openssl speed”应用程序中获得的数字无法相互比较。

也许有人已经为此实施了一个小型基准测试套件?

谢谢, 马丁

【问题讨论】:

  • 我不知道基准套件,但 HMAC 的主要工作是对整个消息/流进行散列处理,签名也必须这样做。 (成本与消息/流大小成线性关系。)此外,您还有模幂运算,这是签名的昂贵部分(仅取决于密钥大小)。因此,“RSA 比 HMAC 花费多少”将取决于您的消息大小。
  • 为什么openssl speed 数字不能相互比较?我一直在使用它们。
  • 我认为它们无法比较对称和非对称操作的不同输出。对于对称加密,输出以每秒字节数给出,例如:type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes sha1 40851.46k 115649.56k 246194.34k 340589.23k 387393.93k 但对于非对称加密,输出以符号或每秒验证的形式给出,例如:sign verify sign/s verify/s rsa 512 bits 0.000120s 0.000011s 8349.2 90190.5 所以我什至不知道有多少字节的数据被签名。

标签: cryptography openssl benchmarking


【解决方案1】:

我认为基准测试在这里没有用,因为您要比较的两件事是针对不同的用例构建的。 HMAC 设计用于您拥有可用于验证消息的共享密钥的情况,而签名设计用于您没有共享密钥但希望任何拥有您的公钥的人都能够验证的情况你的签名。在极少数情况下,任何一种原语都同样适用,如果有的话,很可能是出于安全性而非性能方面的明显偏爱。

证明 HMAC 会更快是相当简单的,但是:签署消息需要首先对其进行散列,然后在散列上计算签名,而计算 HMAC 则需要首先对其进行散列,然后计算 HMAC(即只是两个额外的单块哈希计算)。但是,出于同样的原因,对于加密原语的消息长度和速度的任何合理假设,速度差异将可以忽略不计,因为两个操作之间分担了大部分成本。

简而言之,您不应该根据性能上的微小差异来选择密码系统的结构。

【讨论】:

  • 感谢您的评论。好吧,我知道这两个用例的根本区别。但撇开安全密钥分发的挑战不谈,您仍然可以使用这两种方法来保护消息的完整性:HMAC 或数字签名。我使用的协议具有大约 124 字节长的协议数据单元,并且路由器必须能够一次处理数千条消息。我想使用廉价的基于 HMAC 的完整性保护,但我想支持这样的假设,即通过一些可比较的测量,数字签名要昂贵得多。
  • @taocp 听起来您的应用程序本质上比数字签名更适合 HMAC。正如我在回答中所说,证明 HMAC 会更便宜是非常简单的 - 模幂运算昂贵
【解决方案2】:

所有数字签名算法(RSA、DSA、ECDSA...)都从使用散列函数对源流进行散列开始;之后只使用哈希输出。因此,签署长数据流的渐近成本与散列同一流的渐近成本相同。 HMAC 在这方面是相似的:首先在散列函数中输入一个小的固定大小的标头,然后是数据流;最后你有一个额外的哈希操作,它对一个小的固定大小的输入进行操作。因此,HMAC 处理长数据流的渐近成本与散列相同数据流的渐近成本相同。

总而言之,对于适当长的数据流,数字签名和 HMAC 将具有相同的 CPU 成本。速度差异不会很明显(数字签名末尾的复杂部分 比 HMAC 更昂贵,但简单的 PC 仍然可以在不到一毫秒的时间内完成)。

哈希函数本身可以产生影响,但至少如果您可以获取具有高带宽的数据。在典型的 PC 上,您可以希望使用 SHA-1 以高达约 300 MB/s 的速度散列数据,但使用 SHA-256 时“仅”150 MB/s。另一方面,好的机械硬盘或千兆以太网几乎不会超过 100 MB/s 的读取速度,因此 SHA-256 不会成为这里的瓶颈。

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2014-12-05
    • 2019-07-29
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多