给软件增加防复制/盗版的功能,大家有什么好的建议?

2019-01-04 10:40:56 +08:00
 mathzhaoliang

领导要求我给公司的软件产品开发一个防复制 /盗版的功能,就是说,防止用户私自将软件拷贝到另一台电脑上运行。为此需要将软件的注册号和硬件信息绑定(硬盘序列号,mac 地址), 最好是能和 cpu id 绑定,但是好像 cpu id 在 i3 以后就不能用了。开发语言限定为 C 语言。

我们的软件目前是和硬件一起捆绑卖的,即卖出的电脑上安装了我们的系统,所以卖出电脑的硬件信息是知道的。

现在有两个选择:

  1. 使用开源库 (这个是最好的方案,但是我不知道有什么这样的开源库?)

  2. 自己动手写一个。

自己写一个的话,我的方案是这样的:

我知道破解的时候可以用跳转的方式跳过判定相等这一步,这种情况先不考虑,毕竟我们这个防破解只打算防一般的用户,不防高手。请大家看一看,这个方案可行不?有没有明显的漏洞?

8528 次点击
所在节点    程序员
63 条回复
yksoft1ex
2019-01-04 11:03:11 +08:00
主程序先加个强壳。
mathzhaoliang
2019-01-04 11:37:13 +08:00
@yksoft1ex 先不说壳,我这个方案有什么问题吗?我们这个程序只是一个辅助,也不能太复杂。
geelaw
2019-01-04 11:44:16 +08:00
为什么用户不自己算出来自己的 H',然后自己生成一对密钥 (sk', pk') 然后自己算出来 (E', pk') 呢?

另外这里你对“公钥”和“私钥”的使用方式有误。加密方案里用来加密的是公钥,解密的是私钥。
defel
2019-01-04 11:55:46 +08:00
防普通用户直接存 H 也没事,普通用户不知道你怎么解密的。知道你加解密运作方式的用户,已经不是这样操作可以防止的了,还是加壳比较给力点,或者再上个加密狗。
yukiww233
2019-01-04 11:56:04 +08:00
你做的应该是签名和验签
594duck
2019-01-04 12:00:37 +08:00
for 什么平台的,买一套方案就好了。
ggllioio
2019-01-04 12:14:00 +08:00
类似于一些工程预算软件,用加密狗?
agdhole
2019-01-04 12:38:27 +08:00
navicat 好像就是这么防盗版的,然后被人破掉了
sdhzdmzzl
2019-01-04 12:46:23 +08:00
lz 方案可行。没毛病,反正就是卖硬件,只要能判断是不是绑定的硬件就行了。硬件信息可以包括(硬盘序列号、mac 地址等)然后最好再来个时间的授权以及更新授权的接口。
mathzhaoliang
2019-01-04 12:50:01 +08:00
@yukiww233  可否多说几句解释下?
mathzhaoliang
2019-01-04 12:50:34 +08:00
@594duck 要是公司买一套方案,还招我做啥。
mathzhaoliang
2019-01-04 12:57:30 +08:00
@geelaw 软件里面会和事先存储的 E 比较,这个 E 是用 Priv_key 加密得到的,他拿不到 Priv_Key,当然就不知道 E 是多少。除非他跳转的方法找到了 E 的存储地址,但是这个只对单个产品有效。

还有,RSA 里面公钥私钥都可以用其中一个来加密,另一个来解密,二者的地位是相同的。我这里是 "任何客户端都可以解密,但是对方无法从解密算法反推出加密算法",这样避免对方写出注册机啊。
zxp
2019-01-04 13:47:44 +08:00
破解的时候可以用自己的 Priv_Key 来将另一台电脑的 H 加密到 E,制作出补丁包同时替换掉 (E, Pub_Key) ,来使复制版在新电脑上运行了,所以还需要一个强悍的壳。
jim9606
2019-01-04 13:48:34 +08:00
这套的弱点是软件内置的公钥会不会被注入篡改,而且没法引入 nonce 抵抗重放攻击(硬件信息采集的 api 可以被 hook )

@geelaw 楼主这里应该用的应该叫签名而不是加密(签名用私钥加密,加密是用私钥解密),RSA 下签名和加密是一样的
lsj8924
2019-01-04 14:16:05 +08:00
真的破解大神,要搞的话你这水平基本防不住。RSA 会替换了你的 e 和 d。
zzzzzzZ
2019-01-04 14:29:33 +08:00
漏洞就在:软件必须上非常强的壳,不然(E,pk')可以被篡改,这两者等价于任意设备的 H,从而绕过你原始的 sk',你程序如何验签都是同样的 H

#1#3#13#14 大家说的都是这个事情,请仔细阅读理解
CivAx
2019-01-04 14:41:09 +08:00
nsfocus 的 RSAS 就是这么卖的:

卖一台 ThinkPad,上面安装好软件版 RSAS,配一个加密狗( U 盘),要使用的时候必须插上 U 盘以加载秘钥。

如果你们卖的 “硬件” 部分是可以定制化的 PC 机,主机内仓就可以有充足的空间给你们做硬件上的加密,比如在主板上引一个 USB 口,然后插个定制化的酷豆 U 盘当加密狗,最后机箱封死完事。
wanwaneryide
2019-01-04 14:43:42 +08:00
加密狗,定时 5 分钟检测一次或者 10 分钟?
realpg
2019-01-04 14:59:25 +08:00
大容量带逻辑加密狗
大量核心算法中间件扔加密狗里……
mathzhaoliang
2019-01-04 15:11:28 +08:00
@jim9606 是这样的,硬件信息是可以作伪的,所以我们这个理论上是可以破解的,防君子不防小人而已。但我们本也没打算弄得很坚不可摧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523758

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX