protection - 请评论这个简单的软件保护模式

标签 protection drm

我被要求为我们的产品实现许可模式。它们是非常昂贵的产品,很少有客户稀疏地分布在世界各地,基本上每个产品都有一个设计环境(一个 Windows 应用程序安装在单个 Windows 机器上,每个客户有 1 到 150 台客户端机器)和一个托管生产环境的 Web 服务器(每个客户 1 到 8 台机器)。我们的产品已获得服务器使用许可,因此客户可以使用任意数量的客户端;我们决定不对服务器部分进行许可(因为它受 SLA 协议(protocol)的约束),而只对客户端进行许可,因为一段时间后无法使用客户端,系统就基本上变得无用了。

我们的基本假设是客户“足够诚实”,我们唯一想涵盖的是如果没有适本地获得过期许可证,则停止客户端设计环境。

我评估了不同的许可产品,发现它们要么太贵要么太难管理,所以我想出了这个简单的解决方案:

  • 许可证将是一个简单的签名 XML 文件,使用 w3c 的标准 XML 签名功能签名,使用将通过 USB key 提供给管理部门的私钥;如果他们丢失了副本,那么许可模式将失败,但这将是他们的错
  • 客户端将在启动时打开许可证文件并使用嵌入在二进制文件中的公钥检查其有效性
  • 如果许可证 XML 有效并且其中的数据(到期日期和产品名称)比设计师的作品正确;如果没有,将显示适当的消息

关于可能出现的问题或如何改进场景的任何想法?

最佳答案

如果有足够的兴趣,我还没有看到在几周内没有被破坏的许可方案。您的方案看起来非常好(尽管可以肯定的是,如果有人真的想要,他们会破坏它)。

无论您做什么,都应该遵循 Eric Sink 的 advice :

The goal should simply be to "keep honest people honest". If we go further than this, only two things happen:

  1. We fight a battle we cannot win. Those who want to cheat will succeed.
  2. We hurt the honest users of our product by making it more difficult to use.

由于您正在为专为企业使用而设计的程序实现许可方案,因此您可以更简单,只需在客户端保留某种 ID 和到期日期以及简单的签名,如果许可过期则拒绝启动或签名失败。打破它并不难,但没有许可方案,如果您认为您的客户是诚实的,这就足够了。

关于protection - 请评论这个简单的软件保护模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170006/

相关文章:

python - 在Python中使用selenium启用了 'Play DRM'

php - Zend Guard 与 ionCube

ios - 通过应用商店发布时,Apple 会向我的 .ipa 添加多少 MByte?

ios - 如何防止通过 Phonegap 或 Cordova 中的 quicktime 播放器在 iphone 中镜像 ios 应用程序

iphone - 如何保护 iOS bundle 文件

android - 适用于 Android 的可下载内容系统 : Questions about integrity and security

java 许可证执行,创建激活 key 的算法?

java - 使用Java以编程方式保护Word文档

ios - 如何保护 iOS bundle 文件,如 plist、图像、sqlite、媒体文件

php - 如何在PHP中实现Clear-Key视频加密并在HTML中播放