【问题标题】:Comparison of one hash function and RSA一种哈希函数与 RSA 的比较
【发布时间】:2013-10-21 00:53:39
【问题描述】:

我想将散列函数和 RSA 加密与另一个参数进行比较。 我有一个带有一些散列函数的算法,我想声称这些散列的计算负载小于一个 RSA。

我可以说将它们与乘法参数进行比较,例如它们每个有多少次乘法?

如何比较它们的通信负载?我怎么能说RSA中的输出长度是多少?

【问题讨论】:

  • 没有什么比经验证据更重要。为什么不对它们都进行基准测试?

标签: encryption hash compare rsa


【解决方案1】:

听起来您是在比较苹果和橙子。

hash function 通常会接受任意长的输入,并且计算它所需的时间通常应与输入的长度成线性关系。因此,hash function performance 的一个有用度量是“每秒兆字节数”。

(具体来说,这将是throughput的度量,这是散列长输入时的相关度量。对于短消息,更相关的度量是latency,这基本上是散列零所需的最短时间-length 输入。考虑到吞吐量和延迟,通常可以计算出一个相当好的近似值,即散列任何给定长度的输入所需的时间为 time = latency + 长度 / 吞吐量。)

另一方面,RSA 只能加密比模数更短的消息,模数是在生成密钥时选择的。 (Typical modulus sizes 可能是,比如说,从 1024 到 4096 位。)要“使用 RSA 加密长消息”,通常会使用 hybrid encryption:首先使用像 AES 这样的对称密码加密消息,使用合适的 @ 987654329@和一个随机选择的密钥,然后用RSA加密AES密钥。

同样的长度限制适用于带有 RSA 的 signing 消息 — 就其本身而言,RSA 只能对比模数更短的消息进行签名。这种情况下的标准解决方法是首先对消息进行哈希处理,然后对哈希值进行签名。 (还有很多重要的细节,比如padding,我不打算在这里讨论,因为我们不在crypto.SE,但这些对于安全来说绝对是至关重要的。)

关键在于,在这两种情况下,无论消息长度如何,RSA 操作本身都会花费固定的时间,因此,对于足够长的消息,大部分时间将被 AES 或散列函数消耗,不是 RSA 本身。因此,当您说要“声称这些哈希的计算负载小于一个 RSA”时,我会说这是没有意义的,至少除非您为哈希固定了特定的输入长度。 (如果你这样做了,我的下一个问题是“那个特定的输入长度有什么特别之处?”)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多