1
89ao 1 天前
不是设计者,我是用户。
反正经验来看,所有的不限次数的,基本都会被重复利用; 不联网续签的,也基本都会被滥用; |
2
cassidy0134 1 天前 1
@victimsss YubiHSM ,用这东西,这是个物理密钥,他插在哪儿,哪台机器能用。
本地程序调用 HSM 接口拿信息、key 、滚动 token ,上传远端验证,信息过期、key 不对、token 过期,直接拒绝。 |
3
YiXinCoding 1 天前 2
看着就麻烦了。
1. 设备烧录一个全局唯一的 ID 和公钥。 2. 后台维护每个设备 ID 的质保有效期和激活状态(同一个 ID 二次激活需要人工审核)。 3. 设备联网的时候取到包含有效期和私钥签名的 License 存起来,每次设备启动的时候公钥验签一遍就完事了。 License 只有服务端的私钥能加签名,伪造不了。要破解只能重新烧录。 |
4
seers 1 天前 via Android
其实你只需要服务端生产一套 key ,每次联网下发公钥就行,每个设备生成一套或者共用都行,设备信息用设备唯一 id 进行一次 aes 再 rsa
|
5
Huelse 1 天前
注意对设备自身固件进行数字签名验证,并且使用 https 等加密通信,其余就正常联网验证流程。
|
6
ttkanni 1 天前
|
7
YiXinCoding 1 天前
ID 和程序烧录到芯片里面,然后加上物理防拆,像 POS 机、身份证读卡器、ETC 设备,这种都有防拆。谁来硬破都难。
|
8
realpg 1 天前
既然联网了 直接要求在线登录就完事了
激活码这种旧时代的方案也就是放纵盗版以及评估没有破解价值的场景才有点意义 |
9
Lukedis 1 天前
能联网激活,就不要考虑其他方案,除非不在意被破解
|
10
heiya 1 天前
@YiXinCoding 请教一下。我的需求是有不能联网的情况且代码要离线部署在客户服务器上,具体的要求是一个组织下有若干台设备,一个激活码控制着组织下的所有设备。现在的问题是纯软件的情况下不能百分百保证 A 组织的激活码不能被 B 组织使用,应该怎么设计呢?
|
11
YiXinCoding 1 天前
@heiya 用机器码啊(也就是他们说的指纹)
1. 每个服务器的机器码是唯一的(根据 CPU 、内存、硬盘、操作系统等信息生成) 2. 程序启动先把机器码打印出来,让客户把机器码发来。 3. 然后管理员再根据机器码生成一个 License 给客户。 4. 然后客户再填入 License 激活,这个 License 就只能用于这一个机器码。 |
12
heiya 1 天前
@YiXinCoding 感谢🙏 豁然开朗
|
13
goodhunter 3 小时 6 分钟前
@YiXinCoding 如何确认 license 只用于这一个机器码呢?感觉是不是应该分别 给 A 组织和 B 组织每台设备一个唯一的 ID ,这个 ID 跟设备的机器码绑定,然后到管理员那里生成,客户拿到返回的 license 激活,是不是更完善?
|
14
YiXinCoding 2 小时 39 分钟前
@goodhunter
1. 首先 License 是经过私钥签名的,用公钥验签,其它人没有私钥无法生成签名,这个就保证了 License 无法伪造。 2. 然后 License 内容里面包含机器码、有效期。对这个内容进行加签。 3. 程序启动每次计算的机器码都是一样的,和 License 里的机器码对比,一致才算校验通过。 |