我有一个运行在Linux操作系统上的服务器程序。 我需要给个人电脑安装这个程序给某人使用一段时间,但我需要防止程序被非法复制。 我知道绝对防止黑客是不可能的。 不知道我能做些什么来尽量减less可能性。
以下是我通过searchnetworking获得的提示:
请注意,encryption主目录并将(服务器)程序放在主目录中不是一个选项,因为PC用户可能需要打开PC才能访问该程序提供的服务。
物理访问就等于简单地把它放在银盘上。 但是,如果你必须,你必须。
一些想法:
cat
打开文件)。 这可能很难或很容易。 由于大部分“保护您的物理机器”build议已经完成,您可能还想考虑另外可以添加的另一个安全function。
保护您的软件不被分发到非授权的机器上。 具体来说,你可以编译你的软件包专门为那个人检查机器CPU ID +网卡Mac地址|的额外挂钩 md5sum,然后交叉引用您的预定义的有效机器列表。 请注意,这当然不适用于解释的代码,也不是完美的(在给定足够的时间的情况下没有办法),但这是一个想法。
确保你设置了BIOS,以便它不能启动U盘或PXE启动或从任何东西启动,但安装的HD。
但这可能是最好的合同处理,复制软件的严厉处罚。
为防止软件被非法复制,只需授权收件人复制它。 那么他所做的任何副本都是合法的。
如果你想防止它被复制,无论是合法的还是非法的,那将是一个不同的问题。
我意识到你正在寻求技术解决scheme,但以我的经验来看,第8层和第9层同样重要,而且往往更有效。
build立明确规定他们不能做什么的协议,以及他们必须做些什么来保护你的代码。 设立重罚的合同。
另外,最好不要试图抓住源头,这样做不是最有利的。 尝试build立一个长期的关系,fi保证过期,如果他们打开箱子或在其他地方运行的代码。
如果你的机器有TPM,那么你可以有最终的保护。 您可以为程序使用带有encryption分区的可信GRUB。 这将为您提供保护,即使硬盘驱动器被物理移除并连接到另一台主机 – 操作系统也无法从中启动,并且无法读取encryption分区。 你甚至不需要locking你的机箱。 显然,用户在任何情况下都不应该被授予“root”访问权限。
考虑重新实施您的程序作为他们通过互联网连接的Web服务?
只要你不需要来回推送太多的数据,就可以让你的“程序”与他们控制的东西隔离开来。
如果你不能这样做,你可以让你的程序通过互联网login中央服务器。 如果您的程序无法访问您的服务器,则会自行禁用。 基本上它可以检查和响应挑战algorithm…(你想防止服务器被欺骗)
其他人已经有了一些非常好的想法,所以我只是build立在物理安全上。
我以前的任务是采购防篡改密封件,并没有find任何我可以推荐的东西。 在任何情况下,粘合剂都可以软化,通常使用松节油或煤油,将标签去除并稍后重新涂覆。 仔细地做,你永远不能告诉密封被删除。
忘记挂锁的情况下。 正如已经指出的(几乎)任何人都可以select锁。
我build议你改用实物印章。 我更喜欢由电线和curl铅封组成的旧式。 原始的,但令人惊讶的有效,这就是为什么他们仍然被用于许多安全情况。