Cryptography 对称和非对称密码的基准测试

Cryptography 对称和非对称密码的基准测试,cryptography,openssl,benchmarking,Cryptography,Openssl,Benchmarking,为了保护字节流的完整性,概念上可以使用对称加密(例如,使用SHA-1的HMAC)或非对称加密(例如,使用RSA的数字签名)。 常识是,非对称加密比使用对称加密昂贵得多。但是,我想知道硬数字,并想知道是否存在现有加密库(例如openssl)的基准套件,以便获得对称和非对称加密算法的一些测量结果。 不幸的是,我从内置的“openssl速度”应用程序中获得的数字无法相互比较 也许有人已经为此实现了一个小型基准测试套件 谢谢, Martin我不认为基准测试在这里有用,因为您正在比较的两个东西是为不同的用

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

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

谢谢,
Martin

我不认为基准测试在这里有用,因为您正在比较的两个东西是为不同的用例构建的。HMAC专为您拥有可用于验证消息的共享密钥的情况而设计,而签名专为您没有共享密钥但希望拥有公钥的任何人能够验证您的签名的情况而设计。在很少的情况下,这两种原语都是同样合适的,如果是这样的话,很可能是出于安全考虑,而不是出于性能考虑

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


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

我认为基准测试在这里并不有用,因为您正在比较的两个东西是针对不同的用例构建的。HMAC专为您拥有可用于验证消息的共享密钥的情况而设计,而签名专为您没有共享密钥但希望拥有公钥的任何人能够验证您的签名的情况而设计。在很少的情况下,这两种原语都是同样合适的,如果是这样的话,很可能是出于安全考虑,而不是出于性能考虑

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


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

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

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


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

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

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


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

我不知道基准测试套件,但是