现在 SHA1 已经属于不安全的 hash 算法了,但是很多软件的 codesign 还是 SHA1 的,是否有伪造签名的风险?

73 天前
drymonfidelia  drymonfidelia
5463 次点击
所在节点   信息安全  信息安全
26 条回复
geelaw
geelaw
73 天前
很多是哪些?知名的 SHA-1 根证书已经过期了。
Xbluer
Xbluer
73 天前
已知 sha1 构造特定格式且有意义的内容还是很难的吧
hefish
hefish
73 天前
有。pass
crackidz
crackidz
73 天前
现在都改 SHA-256 了吧...
julyclyde
julyclyde
73 天前
风险并不因为“发现它不安全”而增加
风险一直都是那么多
julyclyde
julyclyde
73 天前
问有没有?那肯定有
无限的输入产生有限的输出,那碰撞的概率是必然大于零的
dzdh
dzdh
73 天前
支付宝微信接口还支持 md5 呢
xuanbg
xuanbg
73 天前
风险肯定有,但要制造一个能够实现入侵的碰撞,非常非常难,可以说几乎不可能。非对称加密还能暴破呢,只要暴破成功的时间还是以万年为单位,会有人觉得这个加密算法有风险不能用吗?
k9982874
k9982874
73 天前
但是 sha1 快啊,虽然不安全可是碰撞成本还是很高的啊。
合理设置时间戳也可以减少安全风险,一般 api 加固够用了
crackidz
crackidz
73 天前
哦,我还在想是在说文件 hash 校验,刚反应过来楼主说的是 API 请求签名...

事实上在有限上下文长度时,md5/sha1 也是安全的,因为单一请求时,文本长度通常不会很长....而有限文本下的安全性可以简单通过枚举法进行验证
hamsterbase
hamsterbase
73 天前
@geelaw git 用的就是 sha1
tool2dx
tool2dx
73 天前
openssh 写了放弃 sha1 的原因,大公司花美金买算力破解 sha1 才是不安全的。屌丝又不花钱,sha1 就是安全的。
trzzzz
trzzzz
73 天前
aws s3 v2 用的 sha1 ,v4 默认用的 sha256
drymonfidelia
drymonfidelia
73 天前
@geelaw 我说的是代码签名,很多软件还在用 SHA-1 的签名分发
drymonfidelia
drymonfidelia
73 天前
@crackidz codesign 是代码签名啊,exe 右键属性里的那个
takato
takato
73 天前
@tool2dx 确实从一个角度上来看是可以这样理解。但从另一角度看,如果没有人做实验或者做了实验不通报粗略结果,那么我们就无从知道一个算法的安全程度究竟如何。
wwqgtxx
wwqgtxx
73 天前
哪怕是用 md5 对于代码签名来说,想伪造一个既能正常运行,还能达到你目的,同时 hash 结果不变的代码,目前也没有成熟的攻击方法吧
geelaw
geelaw
73 天前
@hamsterbase #11
Git 和签名有完全不同的场景,因为 Git commit 通常是 non-adversarially constructed (非别有用心构造的),所以用一个过时的散列函数危害没有那么大。如果用户对自己的 Git 仓库构造 SHA-1 碰撞,受害者是用户自己,而不是别人。请注意 Git commit 签名和 commit hash 是两码事儿,它的 commit 签名的作用对象是 commit object 被 sign 之前的内容,而不是 commit hash ,而 commit object 本身的信息是当前内容快照加上一些 commit 信息(比如消息、时间、committer ),因此可攻击的面仅限于内容快照。

当然,我的观点是 Git commit 签名意义不大,考虑用户 A 签名 commits 后又继续被别人开发,然后用户 A 的私钥泄露,那么对于新来的人,没有办法确认过去被 A 签名的 commits 到底是泄露之前签名的,还是泄露之后伪造的——除非重新签名并改写过去所有的 Git 历史。其意义不大的根本原因在于我期待软件开发历史隽永,但是签名的安全性并不隽永。

@drymonfidelia #14

考虑我定义的签名算法 Sign(sk, msg) = 123 并且给所有程序都加入这个签名。显然该算法不安全,请问它是否有伪造的风险?

答:有“被伪造的风险”,但是此问题无意义,因为没有任何人会认为被这个不安全算法签名的程序是“有背书的”,即没有“错误认为有安全签名的风险”。

习题:过期的证书不被信任,一个证书的证书链只能追踪到过期的根证书,那么被这个证书签名的程序,是否有伪造签名的风险?

没有验证程序支持的签名,不过是一堆无甚意义的数字。
ZeroClover
73 天前
所有 CA 已经不签发新的 SHA-1 代码签名证书了(包括买了兼容性的),现在也没有 SHA-1 代码签名证书还没过期

但是,Windows 的代码签名允许一个有有效时间戳且签署时间在证书过期前的继续被视为有效签名,这也很容易理解,不然软件每三年全得换一次这谁受得了

@wwqgtxx MD5 早就可以随便碰撞了,现在可以做到一个 MD5 文件有几十个不同内容且有意义的文件
bclerdx
73 天前
@crackidz 是的,有的还是 SHA-384 呢

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

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

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

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

© 2021 V2EX