基准对称和非对称密码学

时间:2011-09-27 12:02:22

标签: cryptography openssl benchmarking

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

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

谢谢, 马丁

2 个答案:

答案 0 :(得分:2)

我不认为基准测试在这里有用,因为您要比较的两件事是针对不同的用例而构建的。 HMAC适用于您拥有可用于对消息进行身份验证的共享密钥的情况,而签名是针对您没有共享密钥的情况而设计的,而是希望任何拥有您公钥的人都能够验证你的签名。在极少数情况下,任何一个原语都同样合适,而且当存在时,可能会有一个明显的安全性,而不是性能原因。

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

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

答案 1 :(得分:2)

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

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

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