【问题标题】:How to avoid public key spoofing?如何避免公钥欺骗?
【发布时间】:2011-08-26 20:29:19
【问题描述】:

我正在做一个激活服务器,使用户能够激活他们的软件。问题是他们拥有公钥。验证方法需要公钥来检查许可证文件的签名。我担心有人可以使用两个密钥(公钥和私钥)生成自己的许可证文件,然后更改客户端上的公钥,这会欺骗他当前的许可证。

有没有办法避免这种情况?公钥应该存储在哪里?您必须考虑到检查是在客户端完成的,并且签名是在服务器上创建的。

谢谢。

【问题讨论】:

    标签: vb.net encryption licensing drm


    【解决方案1】:

    不要使用许可文件。每次启动应用程序时,都要连接到许可服务器以对其进行验证。

    【讨论】:

    • Wireshark、DNS 欺骗/重定向器、本地主机、127.0.0.1。模拟器。完成!
    【解决方案2】:

    所以?公钥加密的全部意义在于解密只能由密钥的对应方完成。如果您的应用使用用户的公钥加密某些内容并将其发送到您的服务器,则他们无法解密该数据包,因为只有您拥有的私钥才能工作。

    如果用户的许可证文件使用您的私钥加密,则只有他们的公钥可以解密它。这样一来,即使许可文件被共享,您也可以追踪谁共享它,因为只有一个用户的密钥能够解密它。

    【讨论】:

    • 我相信 OP 正在询问如何防止用户替换应用程序中的公钥(激活客户端);如果公钥被替换,用户可以使用他们自己的公钥/私钥对来欺骗激活服务器
    • 在某些时候担心绕过激活变得毫无意义。如果用户足够好来交换密钥,那么他们可能无论如何都可以禁用整个激活系统。
    • @Marc B 不错,你可能是对的.. 但也许有人对此有所暗示。我相信这还没有回答问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2011-03-07
    • 2021-05-25
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多