代码(可靠地)如何检测自身的变化?

时间:2017-03-19 10:34:09

标签: copy-protection source-code-protection

假设我编写了一个程序,并且我想确保它的代码不会被更改(现在,我们假设我们使用的是解释/脚本语言,所以"只需编译它& #34;不是有效答案。)

所以我想检测是否有人更改了代码。我怎样才能可靠地做到这一点?

最明显的方法是对代码进行哈希处理,将哈希值放入代码中并验证它 - 但当然这不起作用,因为简单地重新编写代码非常容易。你必须提前知道哈希并在计算哈希时将其放入其中,但这显然是鸡蛋问题。

还有其他可靠的选择吗?

2 个答案:

答案 0 :(得分:2)

您可以使用非对称加密(应该是数字信号方案)。使用密钥A加密代码的哈希值并随主软件一起提供,然后编程使用密钥B解密发送的哈希以查看它们是否匹配。由于您是唯一可以进行加密的人,因此其他人无法假冒已发货的哈希值。

追加:

但我认为它无法解决真正的问题。有人可能会修改您的代码,即使是随附的密钥B.因此,为了实现您的目标,验证必须由第三方平台(操作系统)完成。例如:Apple的看门人。

答案 1 :(得分:0)

不,无法完成。

...因为最后代码必须由计算机执行。这意味着您的代码或其任何转换在运行它的机器上可用,因此理论上可以更改它。

可以更改的事实意味着可以更改检测到代码更改的检测器。因此,这种探测器永远不会完全可靠。