如果我理解正确的话,数字签名意味着将消息与使用私钥加密的消息的散列一起清除。
邮件的收件人计算哈希值,使用公钥解密收到的哈希值,然后将两个哈希值进行比较。
这有多安全?我的意思是,您可以轻松获取消息的哈希值,并且还具有加密的哈希值。找到用于创建Encrypted_hash的私钥有多容易?
示例:
Message Hash Encrypted_hash
-----------------------------------------
Hello world! 1234 abcd
Hi there 5678 xyzt
Bla bla 0987 gsdj
...
鉴于Hash和Encrypted_hash值以及足够的这些消息,找到私钥有多容易/难?
答案 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)
对于完美设计的哈希,它是不可能的(或者更确切地说 - 没有比尝试每个可能的输入键更简单的方法)