use*_*917 38 security cryptography sha1 rsa digital-signature
我想知道RSA签名的长度是多少?是否总是与RSA密钥大小相同,如果密钥大小为1024,则RSA签名为128字节,如果密钥大小为512位,则RSA签名为64字节?什么是RSA模数?那么RSA-sha1是什么意思?任何指针都非常感激.
emb*_*oss 50
你是对的,RSA签名大小取决于密钥大小,RSA签名大小等于模数的长度(以字节为单位).这意味着对于"n位密钥",得到的签名将恰好是n位长.虽然计算的签名值不一定是n位,但结果将被填充以恰好匹配n位.
现在,这是如何工作的:RSA算法基于模幂运算.对于这样的计算,最终结果是"正常"结果的剩余部分除以模数.模数运算在数论中起着重要作用.同余(≡)的定义是
m is congruent to n mod k if k divides m - n
Run Code Online (Sandbox Code Playgroud)
简单的例子 - 让n = 2和k = 7,然后
2 ? 2 (mod 7) because: 7 divides 2 - 2
9 ? 2 (mod 7) because: 7 divides 9 - 2
16 ? 2 (mod 7) because: 7 divides 16 - 2
...
Run Code Online (Sandbox Code Playgroud)
7实际上不划分0,用于除法的定义是
如果存在具有b = na的属性的整数n,则整数a除以整数b
对于a = 7且b = 0,选择n = 0.这意味着每个整数除以0,但它也意味着同余可以扩展为负数(这里不再详述,对RSA来说并不重要).
因此,要点是同余原理扩展了我们对余数的天真理解,模数是"修正后的数字",在我们的例子中它将是7.因为有无限数量的数字是一致的给定模数,我们说话作为同余类,通常选择一个代表(最小的全等大小> 0)进行计算,正如我们在谈论计算的"余数"时直观地做的那样.
在RSA中,签署消息m表示使用"私有指数"d进行取幂,结果r是最小整数> 0且小于模数n,因此
m^d ? r (mod n)
Run Code Online (Sandbox Code Playgroud)
这意味着两件事
为了使签名恰好n位长,应用某种形式的填充.参看 PKCS#1用于有效选项.
第二个事实意味着大于n的消息要么必须通过在几个块<= n中断m来签名,但这在实践中没有完成,因为它太慢(模幂运算在计算上很昂贵),所以我们需要另一种将我们的消息"压缩"为小于n的方法.为此,我们使用加密安全散列函数,例如您提到的SHA-1.将SHA-1应用于任意长度的消息m将产生一个20字节长的"散列",小于RSA模数的典型大小,常见大小为1024位或2048位,即128或256字节,因此签名计算可以应用于任何任意消息.
这种哈希函数的加密属性确保(理论上 - 签名伪造是研究界的一个重要主题),除了蛮力之外,不可能伪造签名.
归档时间: |
|
查看次数: |
36459 次 |
最近记录: |