假设我编写了一个程序,并且我想确保它的代码不会被更改(现在,我们假设我们使用的是解释/脚本语言,所以"只需编译它& #34;不是有效答案。)
所以我想检测是否有人更改了代码。我怎样才能可靠地做到这一点?
最明显的方法是对代码进行哈希处理,将哈希值放入代码中并验证它 - 但当然这不起作用,因为简单地重新编写代码非常容易。你必须提前知道哈希并在计算哈希时将其放入其中,但这显然是鸡蛋问题。
还有其他可靠的选择吗?
答案 0 :(得分:2)
您可以使用非对称加密(应该是数字信号方案)。使用密钥A加密代码的哈希值并随主软件一起提供,然后编程使用密钥B解密发送的哈希以查看它们是否匹配。由于您是唯一可以进行加密的人,因此其他人无法假冒已发货的哈希值。
追加:
但我认为它无法解决真正的问题。有人可能会修改您的代码,即使是随附的密钥B.因此,为了实现您的目标,验证必须由第三方平台(操作系统)完成。例如:Apple的看门人。
答案 1 :(得分:0)
不,无法完成。
...因为最后代码必须由计算机执行。这意味着您的代码或其任何转换在运行它的机器上可用,因此理论上可以更改它。
可以更改的事实意味着可以更改检测到代码更改的检测器。因此,这种探测器永远不会完全可靠。