我想谈的两类问题:
假设您为了版权目的而编写了一个要加密的程序(例如:拒绝未经许可的用户阅读某个文件,或禁用该程序的某些功能),但大多数基于软件的加密都可以被黑客破解(只需查看HACK程序可用的程序数量即可成为“完整版”。)
假设您想将软件推送给其他用户,但希望防止盗版(即,其他用户制作此软件的副本并将其作为自己的软件销售)。有什么有效的方法来防范这种情况(类似于CD上的音乐保护,如DRM)?从软件角度和硬件角度来看?
或者那些2属于同一类问题? (Dongles是基于硬件/芯片的解决方案,如下所述)?
那么,可以使用基于芯片或硬件的加密吗?如果是这样,究竟需要什么?你购买了一种特殊的CPU,特殊的硬件吗?我们需要做什么?
感谢任何指导,谢谢!
答案 0 :(得分:2)
除非你以数千美元的价格出售这个程序,否则几乎肯定不值得付出努力。
正如其他人所指出的那样,你基本上都在谈论一个加密狗,它除了是开发人员难以修复的bug的主要来源之外,也是用户的主要刺激源,并且这些据称“不可破解”的加密狗被破解的悠久历史。 AutoCAD和Cubase就是我想到的两个例子。
最重要的是,坚定的饼干仍然可以破解加密狗保护;如果你的软件对于破解者来说不是一个有吸引力的目标,那么它首先可能不值得花费。
只是我的两分钱。
答案 1 :(得分:1)
其他人建议的硬件加密狗是一种常见的方法。但是,这仍然无法解决您的问题,因为一个聪明的程序员可以修改您的代码以跳过加密狗检查 - 他们只需要根据是否通过检查在您的代码中找到分支的位置,并修改测试总是通过。
你可以通过混淆你的代码来使事情变得更加困难,但你仍然回到软件领域,同样聪明的程序员可以找出混淆并仍然达到他想要的目标。
更进一步,您可以使用存储在加密狗中的密钥加密部分代码,并要求引导代码从加密狗中获取它。现在你的攻击者的工作有点复杂了 - 他们必须拦截密钥并修改你的代码,以便认为它是从加密狗获得的,而实际上它是硬编码的。或者你可以让加密狗本身进行解密,传递代码并获取解密的代码 - 所以现在攻击者也必须模拟它,或者只是将解密的代码存储在永久的某个地方。
正如您所看到的,就像软件保护方法一样,您可以使这个任意复杂,给攻击者带来更多负担,但历史表明这些表倾向于攻击者。虽然破解您的方案可能很困难,但只需要执行一次,之后攻击者可以将修改后的副本分发给每个人。盗版的用户现在可以轻松使用您的软件,而您的合法客户则背负着繁重的复制保护机制。为合法客户提供更好的海盗体验是将合法客户变成海盗的一种非常好的方式,如果这是你的目标。
围绕此问题的唯一 - 主要是假设 - 方式称为Trusted Computing,并依赖于向用户的计算机添加硬件,限制他们可以对批准的操作执行的操作。您可以查看有关它的硬件支持的详细信息here。
由于上面详述的原因,我强烈建议您反对这条路线:您最终会为合法客户提供比使用盗版副本更糟糕的体验,这会激活人们不买你的软件。盗版是生活中的事实,有些用户即使你可以提供防水保护也根本不会购买你的软件,但很乐意使用非法复制品。您可以做的最好的事情是为您的合法客户提供最佳体验和客户服务,使合法副本比盗版更具吸引力。
答案 2 :(得分:0)
在我看到并行端口上的硬件加密狗的那天。今天你使用像this这样的USB加密狗。 Wikipedia link
答案 3 :(得分:0)