数字签名有多安全?

4
数字签名,如果我理解正确,意味着将明文消息与使用私钥加密的消息哈希一起发送。
消息接收者计算哈希值,使用公钥解密收到的哈希值,然后比较两个哈希值是否匹配。
这样安全吗?我的意思是,你可以轻易地获取消息的哈希值,并且你还拥有加密哈希值。那么找到创建加密哈希所使用的私钥有多容易?
示例:
Message            Hash    Encrypted_hash
-----------------------------------------
Hello world!       1234    abcd
Hi there           5678    xyzt
Bla bla            0987    gsdj
...

如果给出散列值和加密的散列值,并提供足够数量的这些信息,那么查找私钥有多容易/困难呢?

6个回答

8
由于生成密钥所使用的算法(RSA是典型算法),假设密钥的位数足够长,答案基本上是“在任何合理的时间内都是不可能”的。只要私钥没有被盗或泄露,你不能仅凭公钥和使用私钥哈希过的信息来解密它。
正如@Henk Holterman的回答中所链接到的那样,RSA算法建立在解密私钥所需的计算 - 其中包括质因数分解等问题 - 是难以解决的问题之上,目前我们不知道可以在任何合理的时间内解决它们。换句话说,底层问题(质因数分解)是一个NP问题,这意味着它不能在多项式时间内被解决(破解私钥),但可以在多项式时间内验证(使用公钥解密)。

1
@GregS:我相信质因数分解本身已被证明为NP问题,但如果我有误,请随意说明。我应该更清楚地表明我所指的是它,而不是RSA作为一个整体。 - eldarerathis
1
@GregS:我认为质因数分解在NP问题中是微不足道的,因为有一个明显的多项式时间算法来检查候选因式分解(只需将其乘起来)。尚未证明的是它是否是NP完全问题。 - caf
1
@caf:你说得对,我应该说还没有证明它不在P内,尽管没有人期望它在P内。 - President James K. Polk
1
@GregS:当然,但这也是不言自明的,因为如果被证明不在P中,那将构成一个证明P != NP,这仍然是一个未解决的问题(尽管上周末发生了一些事件!)。 - caf
1
@GregS:没错 - 这意味着如果你证明因数分解 P 中,那么你并没有证明任何关于 P 与 NP 的事情(但你仍然破解了 RSA!;) - caf
显示剩余6条评论

6
在电子计算机出现之前开发的密码通常容易受到“已知明文攻击”的攻击,这基本上就是所描述的:如果攻击者拥有密文和相应的明文,他可以发现密钥。二战时期的密码有时会被破译,因为猜测已经被加密的明文单词,比如战斗地点、军衔、敬礼或天气条件。
然而,用于数字签名最常使用的RSA算法即使在使用适当填充(如OAEP)时也无法受到“选择明文攻击”的攻击。选择明文意味着攻击者可以选择一条消息,并欺骗受害者对其进行加密;这通常比已知明文攻击更加危险。
无论如何,数字签名都是安全的。任何妥协都是由于实现缺陷而不是算法弱点。

5

数字签名并不涉及实际消息的传输方式。它可以是明文或加密。

当前的非对称算法(公钥+私钥)非常安全,安全性取决于密钥长度。

攻击者确实有足够的信息来破解它。但这是非对称加密的一部分“证明”,需要消耗大量的CPU时间:该方法在计算上是安全的。


4
你所说的是“已知明文”攻击。对于任何合理安全的现代加密算法,已知明文基本上对攻击没有帮助。在设计加密算法时,你假设攻击者将有权访问任意数量的已知明文;如果这有助于攻击者,则根据当前标准,该算法被认为是完全破解的。
事实上,通常你默认攻击者不仅可以访问任意数量的已知明文,甚至可以访问任意数量的“选择性”明文(即,他们可以选择一些文本,以某种方式让你加密它,并将结果与原始文本进行比较)。同样,任何现代算法都需要免疫此类攻击才能被认为是安全的。

1
给定哈希值和加密哈希值,以及足够数量的这些消息,找到私钥有多容易/难?
这是已知明文攻击的情况:你被给予许多明文消息(哈希)和相应的密文(加密哈希),并且你想找出加密密钥。
现代加密算法被设计成能够抵御这种攻击,例如RSA算法,它是目前用于数字签名的算法之一。
换句话说,找到私钥仍然极其困难。你需要无法想象的计算能力,或者你需要找到一种快速因数分解整数的算法,但那将使你在数学史上获得持久的声誉,因此更加困难。
要更详细和全面地了解密码学,请查看相关文献,如维基百科页面或Bruce Schneier的应用密码学

-1

对于一个完美设计的哈希函数来说,它是不可能被破解的(或者说,没有比尝试每一个可能输入键更容易的方法)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接