【问题标题】:RSA secure private key inside exe file [closed]exe文件中的RSA安全私钥[关闭]
【发布时间】:2016-04-01 08:46:52
【问题描述】:

我正在创建C#,Java 桌面应用程序(exe),我需要加密用户密码和许可证相关信息,所以我找到了这个link。但问题是,如果我使用 RSA 公钥/私钥加密,那么我将需要 exe 文件中的两个密钥来保持用户和许可证信息的可变性,但如果有人对 .exe 文件进行反向工程并获取私钥,那么数据将是妥协。

如何保护 .exe 文件中的私钥?是否有任何其他技术可以从逆向工程中保存私钥?

有一些混淆工具可以阻止逆向工程,但私钥仍然是可见的,使用这样的工具非常昂贵。

【问题讨论】:

    标签: java c# encryption rsa


    【解决方案1】:

    对用户密码使用散列函数(如 SHA),切勿在用户系统上存储私钥。对于许可信息,生成 RSA 签名的许可数据并通过电子邮件或任何其他方式发送给用户,您的应用程序将只需要许可服务器的公钥来验证许可数据。

    【讨论】:

    • 我正在使用许可证文件,当应用程序启动时,读取和验证当前​​时间戳并将其以加密格式写入同一文件中,因此我需要私钥。
    • 这个没有解决办法,你的私钥永远不应该暴露。每当您的私钥暴露时,您的产品的安全性就完全消失了。
    • 我知道用户名和密码,但我该如何处理许可证?当用户启动应用程序时,我会跟踪上次使用的日期,因此用户无法使用系统日期。所以这就是为什么我也需要对此进行加密,所以我将这些数据写入同一个许可证文件中。你能告诉我你的想法如何处理这些数据吗?
    • 将创建时间写入许可证文件并跟踪您的应用程序文件,如果您经常写入的任何数据库或其他文件似乎在未来被写入,系统时钟已被调整.
    • 没看懂,能否详细解释一下。
    【解决方案2】:

    简短的回答是否定的,没有技术可以从逆向工程中保存私钥。没有可以阻止私钥逆向工程的混淆工具。您无法保护可执行文件中的私钥。

    不要相信我的话。搜索已对其私钥进行反向工程的黑客系统示例。有很多。我刚刚找到了这个例子:http://goodenoughsecurity.blogspot.com/2012/11/how-ps3-lv0-key-was-probably-hacked.html

    【讨论】:

      【解决方案3】:
      1. 我会使用服务器进行加密。然后我可以向服务器发出一个发布请求并发送密钥,或者验证密钥,或者删除密钥。错误:该应用是独立的。
      2. 打包您的应用程序。例如在 UPX 中。错误:无法打包。
      3. 在注册表中存储密钥。错误:不安全。 您需要将其存储在服务器上

      【讨论】:

      • 它是一个独立的桌面应用程序,可以在没有互联网的情况下运行,与防病毒应用程序相同。没有服务器
      • @VarunJain 在用户的计算机上运行服务器也是一种选择,但我会编辑我的答案。
      • 无论如何,如果我使用本地服务器,那么直到有人可以对提供私钥的服务器文件进行逆向工程
      • @VarunJain 是的。添加了其他选项。
      • @VarunJain 对不起。我给了一个不好的答案。再次编辑。
      猜你喜欢
      • 2014-06-25
      • 2018-07-05
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 2011-11-05
      相关资源
      最近更新 更多