注意:我不是在提倡任何人继续使用SHA1签名的证书:就安全性而言,它们已失效,并且不应再使用。我只是想澄清我对Shattered可能适用于此类证书的理论含义的理解。

最近的问题提示:Google发生碰撞攻击后,RSA-SHA1签名仍然安全吗? ,绝大多数回答为“否”,我想问一问粉碎结果实际上表明SHA1签名证书处于“危险”状态吗?

粉碎结果的存在是我认为这本身并不令人惊讶:每个人都知道,从理论上讲,您可以创建两个散列为相同值的字节流。 Google的成就(我不希望低估)是(a)他们聚集了足够的资源来实际执行此操作,并且(b)在保持碰撞文件为有效PDF的同时做到了这一点(也与原始文件的格式匹配)非常紧密,并且包括了背景颜色的“明显”差异。)

作为“已粉碎”仅适用于PDF文件的公认答案? Google解释说,Google拥有“豪华”的有效“自由格式”数据块,可以随意更改以实现碰撞。据我了解,嵌入在JPG数据中的“碰撞块”(本身嵌入在PDF中)对图像本身或PDF都没有(可见)影响。因此(为了简化事情),他们所要做的“所有”工作都是改变该块,直到实现碰撞为止。1。注入不受约束的数据的自由相同:签名的数据量要小得多;而且几乎没有任何余地可以自由更改-您可能会发现碰撞,但结果可能无法用作证书。

所以:说“破碎”是一个重大事件是正确的,但它本身并不表示创建可使用的,冲突的,SHA1签名的证书的机会增加了,实际上,这样做的机会仍在增加小吗?



1根据Maarten Bodewes的回答,我意识到Google的攻击并非完全随机:“魔术”在于他们对攻击的定制和“构成这种攻击的学术知识”。虽然定位对于能够找到冲突很重要,但是在不损害文件有效性的情况下将任意数据放入文件的能力也很重要。这是我要询问的后一个方面,同样的自由性是否也适用于X.509证书。

评论

另外,这些天的证书往往是随机的(使用序列号),因此,即使您发现适用于证书的冲突,您仍需要在开始大量计算工作之前预测序列号。同样,用MD5完成同样的事情也不是什么。

我认为,如果CA没有在原始证书上签名,而是在签名之前进行了更改-就像上面提到的一些序列号一样,也许问题已经解决了?

每个人都知道冲突的存在,问题是有人设法找到了一个。哈希函数经过专门设计,因此您实际上找不到一个。那是他们的全部目的。

#1 楼

是的,SHA1签名的证书是不安全的。

碎纸是有启发性的。从简介开始:


MD-SHA哈希函数系列是最著名的哈希函数系列,其中包括MD5,SHA-1和SHA-2广泛使用。这个家族最初于1990年开始使用MD4,但由于严重的安全漏洞,很快在1992年被MD5取代。尽管MD5的基础压缩功能存在早期已知的弱点,但它在软件行业中已广泛部署了十多年。 2004年初,试图通过蛮力发现碰撞的MD5CRK项目被终止,当时由王晓云领导的一组研究人员演示了由突破性的密码分析攻击所发现的MD5碰撞,该攻击开创了新技术。在重大发展中,史蒂文斯等人。后来的研究表明,可以对MD5进行更强大的攻击(所谓的前缀冲突攻击)。最终,这导致了Rogue认证中心的伪造,该伪造原则上在2008年完全破坏了HTTPS安全性。尽管如此,即使在2017年,MD5签名的弃用仍然存在问题。


让我在这里画出时间表:


MD4发布。
-
MD5发布。
-
-
SHA- 1个发布。 Hans Dobbertin会在几秒钟内报告MD4中的冲突。
Hans Dobbertin会报告MD5压缩功能中的冲突。密码学家建议不要使用MD5。 SHA-1可以不间断地使用。
-
-
-
-
-
NIST在FIPS 180-2中发布了SHA-2。
-
王小云的团队报告了几个小时内在MD5中发生的碰撞。在这一点上使用MD5是非常愚蠢的。 SHA-2可作为不间断的替代产品。
Wang Xiaoyun的团队报告说,SHA-1遭受了$ 2 ^ {69} $的碰撞攻击费用,后来降至$ 2 ^ {63} $。密码学家建议不要使用SHA-1,甚至不告诉工程师使用SHA-2而不是MD5或SHA-1。密码学家意识到那里有很多白痴,并试图通过制作冲突的x.509证书对来劝说他们停止使用MD5,尽管它们只有相同的名字。
-
Stevens等人。演示对MD5的选择前缀冲突攻击,从而可能伪造具有不同名称的证书。
密码学家意识到,即使证书颁发机构的操作员都是白痴,并试图通过伪造x.509证书来说服他们停止使用MD5。在真正的CA上实时显示。一些HTTPS CA操作人员​​勉强承认可能存在问题。
-
-
CA /浏览器论坛写下了基本要求的初稿,以便Web浏览器可以正式形式化排除不合格HTTPS CA的理由。 。
BLAKE2是根据SHA-3决赛入围者发布的。据记录,美国和以色列政府在针对伊朗破坏核计划的国际工业破坏事件中部署的Flame恶意软件中,使用独立开发的针对MD5的选定前缀冲突攻击来伪造代码签名证书。此攻击大概是在2007年之前开发的,否则为什么不使用已发布的攻击呢?
-
CAB论坛投票赞成明年SHA-1日落。
HTTPS CA发出强烈要求,要求推动SHA-一年回来有1次日落。 NIST在FIPS 202中发布了SHA-3。
HTTPS CA发出抱怨,并要求将SHA-1日落推迟一年。 CAB论坛投票要求要求随机数≥64位序列号,这是自从实践中证明了MD5证书伪造以来八年来对证书(但一般不对签名)进行选择的前缀冲突攻击的第一次缓解措施。
史蒂文斯等。报告SHA-1中的冲突。在这一点上使用SHA-1是非常愚蠢的。通过多年的分析,SHA-2,SHA-3和BLAKE2可以作为不间断的替代品,具有很高的可信度。
-
[更新,2019-05-10:GaëtanLeurent和Thomas Peyrin报告选择的前缀SHA-1中发生碰撞的成本仅为SHAttered的几倍,这是向证书伪造迈出的重要一步。]

SHAttered论文中演示的技术是相同前缀的碰撞攻击。具体来说,攻击使用前缀$ p $并找到两对消息块$(m_0,m_1)\ ne(m'_0,m'_1)$,使得$$ \ operatorname {SHA-1}(p \ mathbin \ Vert m_0 \ mathbin \ Vert m_1 \ mathbin \ Vert s)= \ operatorname {SHA-1}(p \ mathbin \ Vert m'_0 \ mathbin \ Vert m'_1 \ mathbin \ Vert s)$$任何后缀$ s $。相比之下,MD5证书伪造使用了选择的前缀冲突攻击,该攻击带有两个前缀$ p \ ne p'$并找到中间部分$ m \ ne m'$,以便对于任何后缀$ s $,$$ \ operatorname {MD5}(p \ mathbin \ Vert m \ mathbin \ Vert s)= \ operatorname {MD5}(p'\ mathbin \ Vert m'\ mathbin \ Vert s)。$$

可以这样吗对SHA-1的特定攻击可用来伪造x.509证书?可能不会。有人可以在SHA-1上找到选定前缀的冲突攻击吗?从第一次碰撞到对MD5的相同前缀碰撞攻击花费了一年的时间。从相同前缀到针对MD5的选定前缀碰撞攻击,花了两年多的时间。我们已经对SHA-1进行了相同前缀的冲突攻击。我希望我们在人们听取建议以停止使用SHA-1之前,无需在实践中证明其他CA伪造。 [更新,2019-05-10:我们现在选择了针对SHA-1的前缀冲突攻击,其成本仅为SHAttered的相同前缀攻击的几倍。]

有一些缓解措施,例如随机序列号,因此对于公共HTTPS证书(CA / Browser论坛基准要求1.5.9§7.1必须对2016-09-30之后发布的所有证书使用随机≥64位序列号),

当然,CAB论坛也有要求(第7.1.3节,第135页)。 44)明智的做法是,禁止从2016年1月1日开始使用SHA-1签名的新证书!所有HTTPS CA是否都遵守该规则?我希望是这样,但是如果他们不尊重它,也许他们也将不遵守随机序列号的规则。签署为Flame伪造的证书。即使您将问题限制在x.509证书之内,例如openssl ca命令行工具(很多人都在其中构建专用的CA),也建议并使其易于使用顺序序列号,并且不宣传内置方法随机生成序列号。

PS不管您提出了多少警告,这样的问题都使密码学家感到沮丧,因为它们为不重要的Hacker News读者提供了饲料,使他们无视围绕特定个体科学结果的所有背景,而是得出结论,认为特定个体科学结果没有纹身在他们的额头上发生了碰撞,因此还不需要更换SHA-1。

评论


$ \ begingroup $
建议添加“已发布SHA-2,提供升级路径”;维基百科说2001年,尽管我拥有的最早的副本是2002年8月。(最初不包括-224,但AFAICT从来没有人使用-224进行证书,除非DSA-2048可以使用,而且几乎没有人在公共网上使用任何DSA。)FWIW NIST SP800-131的初始草案于2010年提出,要求从2011年开始要求SHA-2,但其用户将其追溯至2014年。
$ \ endgroup $
–dave_thompson_085
18年7月10日在4:34

$ \ begingroup $
已经很接近了,但是我认为这个答案比Maarten的答案更能为我澄清事情。对于让您感到沮丧的问题,我深表歉意–我可以(主要是)感激您的挫败感来自何方–但是(为了扮演恶魔的拥护者),不想澄清类似于以下问题的特定个体科学结果的后果凭空依靠安全性?有些人总会陷入困境,或者故意歪曲结果的上下文,但是他们是否有足够的理由不尝试并完全理解所有后果?
$ \ endgroup $
– TripeHound
18年7月10日在7:07

$ \ begingroup $
@TripeHound结果的确切性质是一回事:这是一个前缀相同的冲突攻击,证明在单个富裕公司的预算之内。在长达数十年的分析过程中,这一步骤的后果是另一回事,需要全面了解。对安全性的信心并非来自一支无法破解的聪明密码学家团队的一篇论文。信心来自许多团队经过多年的分析,具有足够的背景知识可以从他们所做的工作范围内推断出某人可以做什么。
$ \ endgroup $
–吱吱作响的s骨
18年7月10日在14:57

$ \ begingroup $
@TripeHound如果我对每位告诉我的工程师说欧元,他们无法想象一种利用最新最好的学术成果来破坏其特定系统的方法,那么他们就不需要修复它,好吧,我将是一只富裕的鸟,他花更多的时间将这些资金用于拆除资本主义制度和实施该制度的国家暴力行为,而不是回答互联网上笔名陌生人的加密问题。担心缺少上下文的工程师可能会将重点放在单个结果上,而不考虑上下文,这并不是出于模糊。
$ \ endgroup $
–吱吱作响的s骨
18年7月10日在15:02

$ \ begingroup $
@TripeHound要明确:我并不是要把你们归为欠我欧元的那些工程师。但这现在是一个热门网络问题,成千上万的人正在阅读,其中许多是来自密码学界以外的人,而正是这种令人无法忍受的Hacker News线程中的参与者错误地表述了密码学的状态,这将成为挑剔的话题。他们认为自己对密码系统的安全性过于自信,认为没有自尊的密码学家会建议任何人使用它。
$ \ endgroup $
–吱吱作响的s骨
18年7月10日在15:07

#2 楼


我认为,SHAMPTED结果的存在本身并不令人惊讶:众所周知,从理论上讲,您可以创建两个散列为相同值的字节流。 Google的成就(我不希望低估)是(a)他们聚集了足够的资源来实际执行此操作,并且(b)在保持碰撞文件为有效PDF的同时做到了这一点(也与原始文件的格式匹配)非常紧密,并且包括了背景颜色的“明显”差异。)


不,这不是SHAttered的目的。 “粉碎”使用量身定制的攻击(详细信息请参见“粉碎”)。根据破碎的常见问题解答:


破碎的攻击比依赖生日悖论的暴力攻击要快100,000。蛮力攻击将需要1200万个GPU年才能完成,因此这是不切实际的。


因此,粉碎的攻击当然不仅仅在于进行计算。构造这样的攻击需要学术知识。

大多数漏洞确实是已知的,构造攻击可能是最重要的贡献。以前的攻击(例如IAIK进行的分布式“ SHA-1冲突搜索”)没有成功(并且我浪费了CPU周期以至于无所作为)。对于SHA1签名的证书,没有相同的自由来注入不受约束的数据:签名的数据量要小得多;而且几乎没有任何余地可以自由更改-您可能会发现冲突,但结果可能无法用作证书。


X.509证书是一个非常复杂的结构,可能会嵌入很多领域。尝试阅读X.509规范,您将很快意识到,嵌入看似随机数据的块并不难。

请注意,基于MD5的证书也受到了类似的攻击。尽管这些攻击并不直接适用,但它们显示了我们将来可能期望的攻击类型:


由于这次成功的攻击,我们目前拥有一个流氓证书颁发机构证书。该证书将被所有通用浏览器接受为有效且受信任的证书,因为默认情况下,它似乎是由浏览器信任的根CA之一签名的。反过来,由我们的恶意CA签署的任何网站证书也将受到信任。如果毫无戒心的用户是使用此类证书的中间人攻击的受害者,则可以通过所有常见的安全指示符来确保连接的安全性:地址栏中的“ https://” URL,如果他们选择检查证书,则会关闭密闭的挂锁并显示诸如“此证书是可以的”之类的消息。前述文件:


任何遵守CA / Browser Forum规定的证书颁发机构都不再可以颁发SHA-1证书。此外,要求证书颁发机构在序列号字段中插入至少64位随机性。如果实施得当,则有助于防止实际的利用。




所以:说“破碎”是一个重大事件,但它本身并不意味着正确吗?证明创建可使用的,冲突的,由SHA1签名的证书的机会增加了,实际上,这样做的机会仍然很小? 。即使不间断,它在许多情况下也只能提供80位安全性,而这些协议通常会争取128位或更多的安全性。因此显然不应再使用SHA-1。

就是说,如果有内部发行的顶级CA证书使用旧的根证书签名,那么它们仍然是安全的。但是,应拒绝第三方要求的任何新发行的证书。既然已经知道了SHAFTED攻击,那么这只是一个购买计算机时间来执行攻击的问题。

需要注意的是,如果可以欺骗CA签署准备好的X.509证书, -在遭受攻击之后-可能会更改所述证书的内容,其中可能包括域名。因此,如果您使用的是安全的CA,则其他人可能会滥用另一个受信任的CA这一事实足以使证书容易受到攻击。这需要相对强大的攻击,现在看来似乎不可行。


最后,我将引用RFC 4270来结束有关Internet协议特别是SHA-1漏洞的问题(已发布)在2005年):


我们中的一个人(Bruce [ED:Schneier])认为,由于以下原因,每个人现在都应该开始迁移到
SHA-256 [SHA-256]
MD5和SHA-1中已经证明的弱点。美国国家安全局(NSA)里面有句老话:“攻击总是会变得更好;
它们永远不会变得更糟。”当前针对MD5的碰撞攻击
可以在一台计算机上轻松完成;如今,针对SHA-1
的碰撞攻击还处于可行的边缘,但是随着时间的推移它只会有所改善。


您已经来不及了。立即从SHA-1迁移。

评论


$ \ begingroup $
谢谢。出于记录,我无论如何都不容忍仍然使用SHA1。我也接受Google在实际发现碰撞方面的突破是他们对搜索的定制。但是,仍然存在这样的情况,通过选择JPG-in-a-PDF,他们有“自由”来充分利用“量身定制的搜索”,而不必担心“破坏” PDF。我想我想问的是,“ [可能嵌入很多字段的[X.509证书]的非常复杂的结构”是否可以赋予同样的自由度,而不必担心证书作为整个。
$ \ endgroup $
– TripeHound
18年7月9日在12:52

$ \ begingroup $
好吧,添加了一个示例,该示例显示了对证书的类似基于MD5的攻击...可以质疑是否可以在特定协议上进行攻击,但是在加密方面,请谨慎一点:)
$ \ endgroup $
–马腾·博德威斯♦
18年7月9日在12:58

$ \ begingroup $
谢谢...我将探索MD5链接,看看它是否能回答我的问题的核心。正如我已经说过的:我绝不建议任何人继续使用SHA1签名的证书,并在安全方面完全支持错误。
$ \ endgroup $
– TripeHound
18年7月9日在13:06

$ \ begingroup $
对md5证书的攻击涉及一种独特的选择的前缀冲突攻击和一种具有不良发行惯例的CA。
$ \ endgroup $
– Peter Green
18年7月9日在15:44

$ \ begingroup $
@Hamsterrific&immibis:是的,这直接与输出160位的散列能够传递的80位安全性相关。请注意,MD5仅具有64/128位,因此要强行使用,与使用SHATERTED的攻击向量创建SHA-1冲突的方式相同。换句话说,即使没有受到攻击,它也不安全。
$ \ endgroup $
–马腾·博德威斯♦
18年7月10日在10:38



#3 楼

问题是,CA不仅会签署客户提供的证书,它们还会根据签署请求和他们自己的策略生成证书。因此,攻击CA并不是简单地生成一对冲突证书并要求CA对其签名的问题。

使用MD5的CA成功遭到http://www.win的攻击。 tue.nl/hashclash/rogue-ca/。但是,有关该攻击有两点需要注意。


它涉及“独特的前缀选择”冲突攻击。不是像sha1那样简单的碰撞攻击。 (更新:现已设计出针对sha1的不同选择的前缀冲突攻击)
涉及使用未随机化序列号的CA。
它仍然进行了多次尝试。

因此,不对CA进行攻击不只是简单地受到Google攻击并“花时间”。

评论


$ \ begingroup $
不同的选择前缀和简单冲突之间有什么区别?
$ \ endgroup $
–adi
18年7月10日在4:15

$ \ begingroup $
@adi我认为(但我仍在学习)一个简单的冲突是找到/制作任何两个哈希值相同的文件(但是内容可能完全不同,您几乎无法控制它们) 。相同的前缀是查找/制作两个相同的文件,然后开始相同,然后不同,但对相同的文件进行散列(破碎攻击)。选择的前缀可以获取两个带有任意前缀的文件,然后通过制作后续数据使它们的哈希值恢复一致。请参阅碰撞攻击。
$ \ endgroup $
– TripeHound
18年7月10日在6:51



$ \ begingroup $
@adi为了进一步阐明TripeHound的出色评论:简单的冲突意味着可以用相同的哈希值制作两个不同的文件,但是选择前缀的冲突使我可以提取现有文件并弄清楚如何产生内容不同但哈希相同的文件。这很重要,因为这意味着我可以拿走您的文件(例如,数字签名的法律文件或SSL证书),然后将一个看起来像您的文件的文件制作成任何依赖哈希的文件,但实际上是我的版本。这显然对于恶意目的非常有用。
$ \ endgroup $
–anaximander
18年7月10日在9:05

$ \ begingroup $
不,通过选择不同的前缀冲突攻击,您可以构建具有相同哈希值和选择的不同前缀的文件对。使用与现有文件相同的哈希值构造文件将是原映像攻击。
$ \ endgroup $
– Peter Green
18年7月10日在10:49