This topic created in 2740 days ago, the information mentioned may be changed or developed.
程序要鉴定某个文件是不是我发布的,通常在文件发布前先用私钥对其签名,运行时获得文件后使用公钥校验是否正确。(签名数据保存在文件里)
虽然这样能确定这个文件是我发布的,但假如对方把之前某个老版本替换当前文件,同样也能通过校验。所以还需要一个版本号或者文件 Hash 值,进一步确认版本的正确性吗?还是用时间戳,来限定某个版本的有效时间?
5 replies • 2018-12-07 11:06:10 +08:00
 |
|
3
no1xsyzy Dec 6, 2018
方法各异,保证最新的方法有很多,看你需求了。
时间戳可以修改系统时间来绕过。 hash 值能直接无视吧,不提供更新的 hash 就行了。 实际上没有特别好的办法,HTTPS 联网验证恐怕是最稳定的手段了,但依旧可以通过伪造证书绕过,或者替换掉你的用户空间 HTTPS 连接代码来绕过……真要这么严格可能需要恶招 Devuno Anti-tampering。
如果不是抗绕过,是为了保证别人发 issue 不是单纯因为某个文件的版本问题的话,那就随意联网验证一下呗。
|
 |
|
4
jimzhong Dec 7, 2018
我能想到的就是在签名内包含过期时间。
|
 |
|
5
julyclyde Dec 7, 2018
Windows 平台上,PE 格式除了可执行的代码,还带一堆属性 包括签名也是属性其中之一
|