DSA:黑客可以用*公钥做什么?

时间:2010-10-19 20:34:30

标签: security registration signing public-key dsa

我正在开发的共享软件注册系统将公共DSA密钥嵌入可执行文件本身,私钥驻留在服务器上。 (为了便于讨论,我们假设服务器是100%安全的,并且没有办法任何人都可以使用私钥。)

每当购买程序时,服务器通过使用私钥对用户的名称进行签名来为用户生成许可证。然后将该许可证通过电子邮件发送给用户。一旦用户手动将其名称和许可证输入共享软件应用程序,它将被嵌入在应用程序中的公钥验证为有效或无效的许可证。

然而,对于具有正确“技术诀窍”的坚定的人来说,反汇编可执行文件并检索公钥是非常微不足道的。

我的问题是,他们可以用它做什么?公钥本身是完全无害的吗?公钥是否足以对密钥生成器进行逆向工程?

好奇的人想知道。提前谢谢!

8 个答案:

答案 0 :(得分:24)

公钥应该没有任何用处。但是,如果很容易找到检查,他们可能只是简单地绕过它并在一个总是成功的测试中进行修补,而不必费心去根据公钥验证许可证。

答案 1 :(得分:7)

公钥本身会让他们解密服务器发出的任何加密信息。而已。从公钥到私钥是异常硬;这就是公钥加密的工作原理。 (通过“特殊”我的意思是它的设计是为了抵抗资金充足的政府努力;如果它阻止NSA破解你,那肯定足以阻止Joe Blow。)

请注意,它对DRM没有帮助,听起来有点像你想要的。 DRM完全被设计破坏;如果攻击者有信息和密钥在他本地的设备中解锁它,它已经游戏结束了。如果你给攻击者一把钥匙,它也可能是公开的,因为他肯定不会愿意保密......

答案 2 :(得分:2)

假设正在使用尚未完整的加密方法,则不能使用公钥来确定私钥。它意味着真正公开;任何人都知道。

答案 3 :(得分:2)

公共密钥随处可用 - 登录表单,银行交易的安全性,客户端身份验证等等。所以简短的回答是你不应该担心,导致很多其他聪明人看过这个问题并接受公钥到端点的分配。

人们可以从您的公钥中得知什么?他们显然知道一个关键名称和密钥长度。我认为密钥是证书的一部分,也可能包含有关贵公司和网站URL的一些详细信息。

我的问题是:

1)为什么你担心可执行文件中的公钥?任何一半不错的破解者只会更改您的可执行文件以完全绕过公钥检查。当您向客户端提供可以修改的二进制文件时,加密强大这一事实毫无意义。

2)你是否意识到你可能陷入困境?使用公钥加密来保护二进制文件没有任何内在错误,但随着系统的发展,您可能会遇到问题。诸如过期密钥,密钥翻转和密钥发行(我相信这是您正在开发的工具)可能会成为一个主要的痛苦。然而,你仍然会遇到这样一个现实,即你面临的更大挑战是阻止破解者重新路由二进制文件以避免完全安全检查。

答案 4 :(得分:1)

只是拥有公钥并不足以使用。

做任何有用的事情

唯一可以做的是有人可以使用只能使用私钥解密的公钥来加密消息。但如果私钥仅在服务器上,则不会执行任何操作。

任何其他攻击都需要尝试计算私钥,私钥不会因公钥而加速。

答案 5 :(得分:1)

在非对称加密中,将公钥提供给攻击者是安全的。但是,可以在Trivial Attack中使用此值以及由私钥生成的签名或密文来获取相应的私钥。

答案 6 :(得分:0)

关键是这种加密旨在保护邮件的内容并验证发件人的真实性,在这种情况下,用户清楚地知道,即名称和供应商等。更好的是保护一部分具有这种加密的代码,使得关键的代码位在使用正确的密钥之前保持乱码。

使用密钥后,用户可以解密并复制软件。完全受保护的软件完全无法使用。虽然不相关的this是关于保护事物的有趣读物。

答案 7 :(得分:0)

我不同意公钥没用。我生成自己的公钥和私钥对,让我们假设我在可执行文件中找到了公钥的位。我将公钥更改为我的公钥。现在我可以用我的私钥签名,程序会接受它。