数字签名有多安全?

时间:2010-08-09 19:35:00

标签: algorithm encryption digital-signature security

如果我理解正确的话,数字签名意味着将消息与使用私钥加密的消息的散列一起清除。

邮件的收件人计算哈希值,使用公钥解密收到的哈希值,然后将两个哈希值进行比较。

这有多安全?我的意思是,您可以轻松获取消息的哈希值,并且还具有加密的哈希值。找到用于创建Encrypted_hash的私钥有多容易?

示例:

Message            Hash    Encrypted_hash
-----------------------------------------
Hello world!       1234    abcd
Hi there           5678    xyzt
Bla bla            0987    gsdj
...

鉴于Hash和Encrypted_hash值以及足够的这些消息,找到私钥有多容易/难?

6 个答案:

答案 0 :(得分:7)

由于用于生成密钥的算法(RSA是典型的算法),假设密钥具有足够的比特长度,答案基本上“在任何合理的时间内都是不可能的”。只要私钥没有被窃取或放弃,您将无法使用公钥和使用私钥进行哈希处理的消息对其进行解密。

与@Henk Holterman的答案相关联,RSA算法建立在以下事实的基础上:解密私钥所需的计算 - 素数因子化就是其中之一 - 是难题,无法在任何合理的时间内解决(我们目前知道)。换句话说,底层问题(素数因子分解)是一个NP问题,这意味着它不能在多项式时间内求解(破解私钥)但它可以验证在多项式时间内(使用公钥解密)。

答案 1 :(得分:4)

数字签名没有说明实际邮件的传输方式。可以是明文或加密。

当前asymmetric algorithms(公共+私钥)非常安全,安全性取决于密钥大小。

攻击者确实有足够的信息来破解它。但它是非对称加密的“证据”的一部分,它占用了不切实际的CPU时间:该方法在计算上是安全的。

答案 2 :(得分:4)

在电子计算机之前开发的密码经常容易受到“已知的纯文本”攻击,这基本上就是这里所描述的:如果攻击者拥有密文相应的纯文本,他可以发现钥匙。第二次世界大战时代的代码有时会被猜测加密的纯文字,例如战斗的位置,等级,称呼或天气状况。

然而,当使用适当的填充(如OAEP)时,即使对于“选择的纯文本攻击”,最常用于数字签名的RSA算法也是无法攻击的。选择明文意味着攻击者可以选择一条消息,并欺骗受害者加密它;它通常比已知的纯文本攻击更危险。

无论如何,任何标准的数字签名都是安全的。任何妥协都可能是由于实施缺陷,而不是算法中的弱点。

答案 3 :(得分:3)

你所说的被称为“已知明文”攻击。使用任何合理安全的现代加密算法,已知明文在攻击中基本上没有帮助。当您设计加密算法时,您假设攻击者可以访问任意数量的已知明文;如果这有助于攻击者,那么该算法被当前标准完全打破。

事实上,您通常认为攻击者不仅可以访问任意数量的已知明文,而且甚至可以选择任意数量的选择明文(即,他们可以选择一些文本) ,以某种方式让你加密它,并将结果与​​原始结果进行比较。同样,任何现代算法都需要对此免疫,才能被认为是安全的。

答案 4 :(得分:0)

  

鉴于Hash和Encrypted_hash值以及足够的这些消息,找到私钥有多容易/难?

这是Known-plaintext attack的场景:您会收到许多明文消息(散列)和相应的密文(加密散列),并且您想要找到加密密钥。

现代加密算法旨在抵御此类攻击,例如RSA algorithm,这是目前用于数字签名的算法之一。

换句话说,找出私钥仍然非常困难。你需要一个不可能的计算能力,或者你需要找到一个非常快速的算法来分解整数,但这可以保证你在数学史上持久的声名,因此更加困难。

有关密码学的更详细和透彻的理解,请查看文献,如维基百科页面或Bruce Schneier的Applied Cryptography

答案 5 :(得分:-1)

对于完美设计的哈希,它是不可能的(或者更确切地说 - 没有比尝试每个可能的输入键更简单的方法)