2

我们打算在网上销售我们的框架,并且它需要受到保护,而不是有人购买它,他不能​​把它放到网上,或者把它交给其他开发者。几个月后,我们不想在网上找到它。

我想到了几种方法,但每种方法都有它的收获。

为每个开发人员提供一个唯一的 ID,并将该 ID 编程到框架中,因此他必须输入该 ID 才能使用它。问题是,他可以将带有 id 的框架提供给任何人。

询问设备编号并在我的框架中为每个开发人员仅启用该设备。这里的问题是,当他把它放在商店里时,所有用户都不能使用它,因为他们有其他设备 ID。

使用网络检查一些方法(??),我不希望将用户限制在这种需要上。

我可以用只有我可以提取的代码对每个框架进行编程,所以当我在网上找到它时,我可以确定是什么开发人员把它放在那里(它没有帮助 - 我不能起诉每个人)

有没有其他方法可以为每个开发人员制作框架,但也可以让它在应用商店的所有其他用户那里工作?

谢谢 。

4

2 回答 2

3

@diederikh 提出了很好的观点,NicolasMiari 也提供了很好的见解。最好的答案 IMO 是这两者的结合。(同时记住 dieerikh 的极好建议,即您的目标是想出一些简单的东西,让合法客户遇到困难。)

您无需为每个客户重新编译整个框架,而是让您的许可证密钥依赖于他们的捆绑标识符。他们会向您发送他们的捆绑包 ID。您使用您的私钥并签署他们的捆绑包 ID。这为您提供了您发送给他们的哈希值。现在,在运行时,您的框架使用公钥(不敏感;您可以在任何地方发布)来验证您的签名。请参阅SecKeyRawVerify()在 iOS 上执行此操作。

您可以使用这种方法来创建有时间限制的密钥。只需在签名数据中包含时间戳即可。

使用这种方法,如果您愿意,您可以让客户使用您的包标识符无限期地测试您的框架。您可以将该标识符的签名哈希提供给试用客户。但是一旦他们想上传到 AppStore,他们就必须更改标识符并向您支付新的签名密钥。

当然有办法解决这个问题。攻击者可以修改您的框架以忽略签名验证。但这总是正确的,事后与律师一起防止这种情况比使用 DRM 更好,因为 DRM 只会给付费客户带来麻烦。

于 2013-09-14T20:11:21.353 回答
1

看看 PSPDFKit 是如何做到的。如果你想在演示模式下使用它,你必须调用一个具有唯一 ID 的方法。此 ID 将启用在演示模式下不可用的功能。

您还可以使用针对每个客户的唯一证书对框架进行签名(使用协同设计工具)。

我不会太担心;如果总能找到绕过你的锁的方法。

于 2013-09-14T13:15:29.760 回答