软件许可计划[关闭]

2024-01-23

我设计了以下机制,以便在不直接连接到服务器的情况下许可软件,看起来很简单,但我没有发现任何严重的缺陷:

我计划使用非对称加密,以便从 1 个服务器(许可证服务器)向 n 个客户端(安装该软件的 n 个计算机)发送消息

  1. 客户端发送(例如通过邮件)有关计算机的一些信息(MAC 地址、机器名称,等等)

  2. 在许可证服务器上,这些信息使用安全良好的公共(不太公开)RSA 密钥进行加密,该加密的有效负载就是许可证。

  3. 加密的许可证发送给客户端

  4. 当软件启动时,它会检查许可证文件,它能够确保有效负载已使用服务器密钥(使用每个版本的软件附带的相应 RSA 私钥)进行加密。

  5. 许可证解密后,软件会检查它是否在授予许可证的同一台计算机上运行。

    在我看来,如果不访问许可证服务器 RSA 密钥,任何人都无法伪造加密的有效负载。

当然,许可证可能被盗,然后软件在模仿真实客户端机器的虚拟机中启动,或者软件可能被反汇编以拔掉许可证检查。

但这个方案足够好,还是我在这方面太天真了?

Thanks


这是一个不错的计划,尽管您确定想要client拥有私钥和服务器公钥?除非每次安装生成一个密钥对,否则不应该是相反的吗?

方案虽然简单,但是实用吗?如果您的目标是防止应用程序被随意破解,那么有更简单但同样有效的解决方案。如果您的目标是防止破解者运行您的应用程序,那么很可能 (a) 您不会成功,并且 (b) 您的程序不够重要,不值得如此关注。

当简单地对二进制文件进行十六进制编辑以将许可证检查代码更改为 NOP 几乎肯定可以正常工作时,为什么有人会寻求攻击许可证方案的加密部分呢?

如果我是您,我会重新考虑许可策略及其对您的产品及其成功的重要性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件许可计划[关闭] 的相关文章

  • Microsoft(SQL)服务器许可[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们正在规划一个浏览器应用程序 xbap 它将与 WCF 服务进行交互 这些 WCF 服务从 SQL 数据库获取信息 我们的每个客户在此服
  • 如何获得 Java 软件商业许可? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用 Java 编写了一个基于桌面的会计软件 我想放置密钥或许可证或其他类型的安全措施来防止客户端重新分发软件 我只是想知道该怎么办
  • 如何从 SSL 证书中提取密钥?

    我有一个在以下网站购买的 SSL 证书 pem crt der格式 我想知道如何从证书中获取密钥文件 有什么办法可以做到这一点吗 您可以提取公钥 这的用处有限 也许您将在其他不使用证书的工具 例如 SSH 或 PGP 中使用相同的密钥 使用
  • 关于您的项目所依赖的许可证的 Maven 报告[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个大型多模块项目 我想生成一份报告 显示该项目所依赖的所有内容的所有许可证 我查看了 tattl
  • Visual Studio 2010 中的自动源文件前导码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想配置我的 VS2010 以便每次创建新的源文件时 都包含一个注释序言 将包含许可证 我们迫切需要的
  • BigIntegers、gcd、模逆来查找公钥

    所以 我使用 java 来查找 RSA 密码的公钥 现在我不确定我在做什么 也不确定它是否正确 我有公钥的信息 C 5449089907 n p q 8271344041 q 181123 p n q 45667 d 53 phi n p
  • 使用 XmlCipher (RSA) 加密 XML 文件

    我只需要使用公钥加密一些 XML 元素 我成功地可以将此代码与 simetric 算法 XMLCipher AES 128 一起使用 但在尝试使用 XMLCipher RSA v1dot5 时失败 这就是代码 import java sec
  • 有人使用过 .Net 的 Manco.net 许可吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 http www mancosoftware com licensing index htm http
  • 获取 rfc7517 格式的 JWKS for Firebase

    我正在使用 Firebase 对我的应用程序中的用户进行身份验证 Firebase 生成一个 JWT 令牌 我需要在我的服务器上对其进行身份验证 我使用 tyk io 来做到这一点 Tyk 支持这些令牌 但要求公钥的数据源位于https w
  • 如何在 Go 和 Android 之间使用 RSA

    我 1 在 Go 中创建公钥并将其发送到 Android 2 android使用下面的代码来加密它的数据以字符串类型发送到Go 3 去获取字符串数据并尝试解密 但不能 我的Go代码 DecryptWithPrivateKey decrypt
  • 如何在 ios、swift 中生成公钥/私钥对,如下所示

    这就是我生成公钥 私钥对的方式 var statusCode OSStatus var publicKey SecKey var privateKey SecKey let publicKeyAttribute NSObject NSObj
  • 在 OSX 下将许可证文件附加到 dmg

    伙计们 我可以使用任何命令行将许可证文件附加到 dmg 吗 非常感谢 我在编辑器上遇到了问题 所以如果您在文本中看到 奇怪的事情 请原谅我 我为你找到了一篇博客文章 链接在这里 http thehobbsfamily net archive
  • 如何从模数、指数和私有指数创建 Crypt::RSA 对象?

    我正在尝试将以下 php 功能移植到 perl public function loadKey mod exp type public rsa new Crypt RSA rsa gt signatureMode CRYPT RSA SIG
  • 在 Android 中解密从 .net 生成的 RSA 加密值

    我在这里浏览了很多帖子 但没有找到正确的解决方案 我想从 Android 解密在 c net 中加密的值 我已使用以下代码片段在 net平台中成功解密 public static void Main string privateKey Ba
  • 公钥的长度(加密)可以与私钥不同吗?

    我有一个 1024 位的私钥 并用它来生成公钥 这是否自动意味着我的公钥也具有 1024 加密 或者它的加密大小可以更小吗 512 256 PS 我最感兴趣并谈论的是 RSA 密钥中模数 n 的大小 大小通常为 1024 或 2048 位
  • gitosis 要求输入密码

    我已经按照以下说明设置了 gitosis 服务器here http scie nti st 2007 11 14 hosting git repositories the easy and secure way 它对于初始用户来说效果很好
  • C# 中加密的数据太长,无法在 Java 中解密

    我有一个用 Java 编写的服务器 它在将其发送到客户端之前将其 RSA 密钥转换为 NET 使用的 XML 格式 public String getPublicKeyXML try KeyFactory factory KeyFactor
  • PHP shell_exec 使用 ssh 运行 shell 脚本

    我有一个 shell 脚本 使用 ssh 和密钥连接到另一台机器 因此它不需要用户名和密码 当我从命令行运行这个脚本时 它工作正常 但是当我从 php shell exec 运行这个脚本时 它不起作用 如果我与 PHP 建立 ssh 连接并
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • 如何将 pem 公钥转换为 openssl RSA* 结构

    假设我必须像这样公开 pem 密钥 BEGIN PUBLIC KEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk O3Kwc4qsEnSZp TR fQi

随机推荐

  • Spring Batch CommandLineJobRunner找不到.xml配置文件

    我是 Spring Batch 框架的初学者 我发现了易于理解的代码http www javabeat net introduction to spring batch http www javabeat net introduction
  • 使用 jQuery touchwipe 进行某些擦除的默认擦除

    我正在使用这个很棒的插件来捕获移动设备上的擦除事件 http www netcu de jquery touchwipe iphone ipad library http www netcu de jquery touchwipe ipho
  • 如何在需要旧式 unsigned char 的地方使用新的 std::byte 类型?

    std byte是 C 17 中的一个新类型 其形式为enum class byte unsigned char 这使得在没有适当转换的情况下无法使用它 因此 我为这种类型的向量创建了一个别名来表示字节数组 using Bytes std
  • 将 GLSurfaceView 的屏幕捕获为位图

    我需要能够捕获一个图像GLSurfaceView在某个时间点 我有以下代码 relative setDrawingCacheEnabled true screenshot Bitmap createBitmap relative getDr
  • xgboost.plot_tree:二元特征解释

    我构建了一个 XGBoost 模型并试图检查各个估计器 作为参考 这是一个具有离散和连续输入特征的二元分类任务 输入特征矩阵是scipy sparse csr matrix 然而 当我去检查单个估计器时 我发现很难解释二进制输入特征 例如f
  • 无法确定引发 NullPointer 异常的原因

    我有一个看起来像这样的方法 try doStuff catch Exception ex logger error ex 我并没有真正使用像 doStuff 这样的方法名称 这只是为了让事情变得简单 在 doStuff 中 我做了很多事情
  • 对 pandas 系列中的多索引级别进行总结

    我想对具有 3 级多重索引的系列中的一个级别进行求和 边缘化 以生成具有 2 级多重索引的系列 例如 如果我有以下内容 ind tuple x for x in ABC ABc AbC Abc aBC aBc abC abc mi pd M
  • 如何使用idlelib.PyShell在tkinter程序中嵌入解释器?

    我需要将交互式 python 解释器嵌入到我的 tkinter 程序中 谁能帮我看看如何整合它 我已经看过了main 功能 但它对于我的需求来说太复杂了 但我似乎无法在不破坏它的情况下减少它 您必须执行的操作的一些细节可能取决于 IDLE
  • 图像可以在 chrome 中下载,但不能在 safari 中下载

    在我的应用程序中我使用html2canvas用于将 HTML 转换为画布 然后我使用该画布将该画布转换为图像toDataURL 在 chrome 中一切都很好 图像在页面加载后很快就会下载 但在 safari 中图像加载在同一页面中而无需下
  • 使用 ast.literal_eval 时字符串格式错误

    我使用 json 转储 然后使用 json 加载相同的数据 数据是unicode 所以我将其转换为字符串 使用 ast literla eval 我尝试获取要字典的字符串类型 但收到错误 格式错误的字符串 json加载的输出如下 data
  • 在 Java 应用程序中执行“sp_msforeachdb”

    StackOverflow 社区大家好 我来找你是为了分享我的问题之一 我必须提取一个SQL Server 实例的每个数据库中的每个表的列表 我发现了这个查询 EXEC sp msforeachdb Use SELECT DB NAME A
  • 从 Redux Observable 返回 Promise

    也许我的想法是错误的 但我使用 redux thunk 的常见模式是返回一个承诺 这样当某件事完成或失败时我可以在容器对象中执行一些额外的操作 以 Thunk 为例 动作创建者 const action data gt dispatch g
  • 选项卡布局中的标题不可见

    与 一起工作TabLayout问题是标题不可见 我覆盖了getPageTitle在适配器中 我还返回了一个字符串 该字符串将是标题 但该字符串没有显示 我已经调试了我从服务器获取标题的应用程序 是的 我跟着this https stacko
  • 获取 ListViewItem 子项

  • Vue.js 是否有内置方法将持久对象的副本添加到重复数组中

    我有一个 Vue js 应用程序 其中对一系列项目有 v repeat 我想将一个新项目添加到项目列表中 当我尝试时this items push this newItem 推送的对象仍然绑定到输入 考虑以下几点 new Vue el de
  • Xcode 4 中的 Cocoa 绑定

    Objective c 是可以学习的 可可是可以学习的 我发现 Interface Builder 及其后代 Xcode 4 完全难以理解 没有文本 相当于 C 或 Obj c 源代码 可供参考 所有的描述都是 拖到这里 连接那个 Ctl
  • 如何从私有 Docker Hub 存储库远程提取 Docker 映像?

    我在 Docker Hub 私有存储库中有多个映像 我需要使用 Docker 远程 Rest API 将这些映像拉到远程计算机上 有没有办法远程验证 这些是我想远程拨打的电话 docker login docker pull myrepo
  • 无法使用 Youtube Data API 删除视频

    无法使用 Youtube Data API 删除视频 我正在使用 Python 客户端库 所有这些似乎都是直接来自文档 所以我真的很困惑为什么它不起作用 这是我的功能 def delete youtube video by id video
  • 使用 asort() 对包含日期的数组进行排序无法正常工作

    这是未排序的数组 格式为 dd mm yyyy array 6 7 0 gt string 10 28 04 2014 7 1 gt string 10 29 04 2014 7 2 gt string 10 30 04 2014 7 3
  • 软件许可计划[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我设计了以下机制 以便在不直接连接到服务器的情况下许可软件 看起来很简单 但我没有发现任何严重的缺陷 我计划使用非对称加密 以便从 1 个服务器