首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  程序员

私钥签名的文件被替换成老版本,通常怎么处理

  •  
  •   mytry · 13 天前 · 770 次点击
    程序要鉴定某个文件是不是我发布的,通常在文件发布前先用私钥对其签名,运行时获得文件后使用公钥校验是否正确。(签名数据保存在文件里)

    虽然这样能确定这个文件是我发布的,但假如对方把之前某个老版本替换当前文件,同样也能通过校验。所以还需要一个版本号或者文件 Hash 值,进一步确认版本的正确性吗?还是用时间戳,来限定某个版本的有效时间?
    5 回复  |  直到 2018-12-07 11:06:10 +08:00
        1
    mason961125   13 天前
    同时给 shasum 和 sig
        2
    billlee   13 天前
    把时间戳或版本号也签上名
        3
    no1xsyzy   13 天前
    方法各异,保证最新的方法有很多,看你需求了。

    时间戳可以修改系统时间来绕过。
    hash 值能直接无视吧,不提供更新的 hash 就行了。
    实际上没有特别好的办法,HTTPS 联网验证恐怕是最稳定的手段了,但依旧可以通过伪造证书绕过,或者替换掉你的用户空间 HTTPS 连接代码来绕过……真要这么严格可能需要恶招 Devuno Anti-tampering。

    如果不是抗绕过,是为了保证别人发 issue 不是单纯因为某个文件的版本问题的话,那就随意联网验证一下呗。
        4
    jimzhong   13 天前
    我能想到的就是在签名内包含过期时间。
        5
    julyclyde   12 天前
    Windows 平台上,PE 格式除了可执行的代码,还带一堆属性
    包括签名也是属性其中之一
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1617 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 16:34 · PVG 00:34 · LAX 08:34 · JFK 11:34
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1