什么是SHAttered? SHA-1碰撞攻击,解释

在2016年第一天,Mozilla终止了在Firefox Web浏览器中支持一种名为SHA-1的弱化安全技术。 几乎立即,他们扭转了他们的决定,因为它会削减访问一些较旧的网站。 但是在2017年2月,他们的恐惧终于成真:研究人员通过创建第一个真实世界的碰撞攻击打破了SHA-1。 这就是所有的意思。

什么是SHA-1?

哈希

SHA-1中的SHA代表安全散列算法 ,简单地说,你可以认为它是一种数学问题或者扰乱了数据的方法。 由美国NSA开发,它是用于加密互联网上的重要传输的许多技术的核心组件。 常见的加密方法SSL和TLS,您可能已经听说过,可以使用哈希函数像SHA-1来创建您在浏览器工具栏中看到的签名证书。

sha-1数学​​图形

我们不会深入到任何SHA功能的数学和计算机科学,但这里是基本的想法。 “散列”是基于任何数据的输入的唯一代码 即使很小,随机字符串的字母输入到像SHA-1这样的散列函数将返回一个长的,设置数量的字符,使得(潜在地)不可能将字符串恢复回原始数据。 这是密码存储通常工作原理。 创建密码时,密码输入由服务器散列并存储。 返回后,当您输入密码时,会再次进行散列。 如果它匹配原始哈希,输入可以假定是相同的,您将被授予访问您的数据。

sha指纹

散列函数很有用,主要是因为它们可以很容易地判断输入(例如文件或密码)是否已更改。 当输入数据是密码时,如密码,哈希几乎不可能反转和恢复原始数据(也称为“密钥”)。 这有点不同于“加密”, 其目的是加扰数据,以便以后使用密码和秘密密钥对其进行解扰 散列只是为了确保数据完整性,以确保一切都相同。 Git,用于开源代码的版本控制和分发软件, 因为这个原因使用SHA-1哈希

这是很多技术信息,但简单地说:哈希与加密不同,因为它用于识别文件是否已更改

这项技术如何影响我?

openssl

假设您需要私下访问网站。 您的银行,您的电子邮件,甚至您的Facebook帐户都使用加密,以保持您将其发送给他们的数据。 专业网站将通过从可信的授权机构(第三方)获得证书来提供加密,第三方可信,以确保加密在网站和用户之间是私有的,并且不被任何其他方监视。 与第三方(称为证书颁发机构CA )的这种关系至关重要,因为任何用户都可以创建“自签名”证书,甚至可以在运行带有Open SSL的Linux的计算机上自行执行 例如,赛门铁克和Digicert是两家广为人知的CA公司。

documeng签名

让我们通过一个理论场景:How-To Geek希望通过加密将用户会话记录为私有,所以它向证书签名请求CSR)等赛门铁克申请CA。 它们创建用于加密和解密通过因特网发送的数据的公钥私钥 CSR请求将公钥和关于网站的信息一起发送给Symantec。 Symantec会根据其记录检查密钥,以验证数据是否由所有各方保持不变,因为数据中的任何细微更改都会使哈希值完全不同。

数字锁

这些公钥和数字证书由散列函数签名,因为这些函数的输出很容易看到。 具有来自Symantec(在我们的示例中)的经过验证的散列的公钥和证书(一个权威机构)向How-To Geek的用户保证该密钥不变,并且不是由恶意的人发送的。

证书

因为哈希是容易监视和不可能(一些人会说“困难”)反转,正确的,验证的哈希签名意味着证书和连接可以被信任,并且数据可以被同意从端到端加密发送。 但是如果哈希实际上不是唯一的呢?

什么是碰撞攻击,在现实世界中是否可能?

你可能听说过数学中的“生日问题” ,虽然你可能不知道它叫什么。 基本的想法是,如果你收集足够多的人,机会是相当高,两个或更多的人将有相同的生日。 高于你的期望,事实上 - 足以看起来像一个奇怪的巧合。 在一个小到23人的组,有两个人将分享一个生日的50%的机会。

sshot-642

这是所有散列中的固有弱点,包括SHA-1。 理论上,SHA函数应该为放入它的任何数据创建一个唯一的哈希,但随着哈希数的增加,不同的数据对可能会创建相同的哈希。 因此,可以创建一个与受信任证书具有相同散列的不可信证书。 如果他们让你安装那个不受信任的证书,它可能伪装成受信任的,并分发恶意数据。

在两个文件中查找匹配哈希称为冲突攻击 已知至少一次大规模冲突攻击已经发生在MD5哈希。 但是在2017年2月27日,Google宣布了SHAttered ,这是SHA-1的第一次制作的碰撞。 Google能够创建一个与另一个PDF文件具有相同SHA-1散列的PDF文件,尽管内容不同。

SHAttered在一个PDF文件上执行。 PDF是相对宽松的文件格式; 许多微小的位级更改可以在不阻止读者打开它或导致任何明显的差异。 PDF也经常用于传递恶意软件。 虽然SHAttered可以工作在其他类型的文件,如ISO,证书被严格指定,使这种攻击不可能。

那么这次攻击有多容易? SHAttered是基于由Marc Stevens在2012年发现的方法,需要超过2 ^ 60.3(9.223 quintillion)SHA-1操作 - 一个令人惊讶的数字。 然而,该方法仍然比用蛮力实现相同结果所需的操作少100,000倍。 谷歌发现,110个高端显卡并行工作,大约需要一年的时间来产生冲突。 从Amazon AWS租用此计算时间将花费大约11万美元。 请记住,随着电脑部件的价格下降,你可以获得更少的力量,像SHAttered的攻击变得更容易脱身。

$ 110,000可能看起来很多,但它在一些组织的负担能力的领域 - 这意味着现实生活网络病毒可能伪造数字文档签名,干扰备份和版本控制系统,如Git和SVN,或使一个恶意的Linux ISO出现合法。

幸运的是,有防止这种攻击的缓解因素。 SHA-1很少用于数字签名。 证书授权中心不再提供使用SHA-1签名的证书,Chrome和Firefox都不支持这些证书。 Linux发行版通常比每年发布更频繁,这使得攻击者创建一个恶意版本并且然后生成一个填充以具有相同的SHA-1哈希值是不切实际的。

另一方面,基于SHAttered的一些攻击已经在现实世界中发生。 SVN版本控制系统使用SHA-1区分文件。 将具有相同SHA-1散列的两个PDF上传到SVN存储库将导致其损坏

如何保护我自己免受SHA-1攻击?

对于典型的用户来说没有多少。 如果您使用校验和比较文件,应使用SHA-2(SHA-256)或SHA-3,而不是SHA-1或MD5。 同样,如果你是一个开发人员,一定要使用更现代的散列算法,如SHA-2,SHA-3或bcrypt。 如果你担心SHAttered已经被用来给两个不同的文件相同的哈希,谷歌已经发布了一个工具,在SHAttered网站 ,可以检查你。

图片提供: Lego Firefox大量的哈希 ,请不要伤害网络作者未知, 谷歌

什么是SHA-1,为什么会退休在数以千计的互联网?

firefox-sha-1

在2016年第一天,Mozilla在Firefox Web浏览器中终止了对名为SHA-1的技术的支持。 几乎立即,他们扭转了他们的决定,因为它会切断重要的互联网访问成千上万,如果不是百万人。 但是这种技术做什么? 为什么会中断访问? 为什么他们会决定首先删除它?

什么是SHA-1?

散列

该SHA的SHA-1代表安全散列算法 ,并且,简单地说,你可以把它作为一种数学题或方法的打乱被放入其中的数据 由美国NSA开发,它是用于加密互联网上的重要传输的许多技术的核心组件。 常见的加密方法SSL和TLS,您可能已经听说过,可以使用哈希函数像SHA-1来创建您在浏览器工具栏中看到的签名证书。

sha-1数学​​图形

我们不会深入到任何SHA功能的数学和计算机科学,但这里是基本的想法。 “散列”是基于任何数据的输入的唯一代码 即使很小,随机字符串的字母输入到一个散列函数像SHA-1将返回一个长的,设置数量的字符,使它(潜在)不可能将字符串恢复到原始数据。 这是密码存储通常工作原理。 创建密码时,密码输入由服务器散列并存储。 返回后,当您输入密码时,会再次进行散列。 如果它与原始哈希匹配,则输入可以假定为相同,并且您将被授予访问您的数据的权限。

sha指纹

哈希函数很有用,主要是因为它们可以很容易地判断输入,例如文件或密码是否已更改。 当输入数据是密码时,如密码,哈希几乎不可能反转和恢复原始数据(也称为“密钥”)。 这是从“加密”,有一点不同,其目的是为了以后解扰它的目的扰数据 ,使用密码和密钥。 散列只是为了确保数据完整性,以确保一切都相同。 Git的,开放的源代码版本控制和分发软件, 使用SHA-1散列这个原因

这是一个很大的技术信息,但简单地说:哈希是不一样的东西加密,因为它是用来标识文件是否已改变

这种技术如何影响我?

openssl

假设您需要私下访问网站。 您的银行,您的电子邮件,甚至您的Facebook帐户都使用加密,以保持您将其发送给他们的数据。 专业网站将通过从可信的授权机构(第三方)获得证书来提供加密,第三方可信,以确保加密在网站和用户之间是私有的,并且不被任何其他方监视。 这与第三方的关系,称为证书颁发机构CA,是至关重要的,因为任何用户都可以创建一个“自签署”证书,你甚至可以自己动手用开放SSL运行Linux的计算机上 例如,赛门铁克和Digicert是两家广为人知的CA公司。

documeng签名

让我们通过一个理论上的情况下运行:操作方法野人希望保持登录私人加密用户会话,所以它像请愿赛门铁克与CA 证书签名请求 ,或企业社会责任 他们创建加密和解密通过互联网发送数据的公开密钥私有密钥 CSR请求将公钥和关于网站的信息一起发送给Symantec。 Symantec会根据其记录检查密钥,以验证数据是否由所有各方保持不变,因为数据中的任何细微更改使得哈希值完全不同。

数字锁

这些公钥和数字证书由散列函数签名,因为这些函数的输出容易看到。 具有来自Symantec(在我们的示例中)的经过验证的散列的公钥和证书(一个授权)向How-To Geek的用户保证该密钥不变,并且不是由恶意的人发送的。

证书

因为哈希是容易监视和不可能(一些人会说“困难”)反转,正确的,验证的哈希签名意味着证书和连接可以被信任,并且数据可以被同意从端到端加密发送。 但是,如果哈希实际上并没有独特之处

等等,这是一个问题,这是我的生日?

生日问题

你可能听说过的数学“生日问题” ,虽然你可能不知道这是什么所谓。 基本的想法是,如果你收集足够多的人,很可能是两个或更多的人将有相同的生日。 高于你的期望,事实上 - 足以看起来像一个奇怪的巧合。 在一个小到23人的组,有两个人将分享一个生日的50%的机会。

sshot-642

这是所有散列中的固有弱点,包括SHA-1。 理论上,SHA函数应该为放入它的任何数据创建一个唯一的哈希,但随着哈希数的增加,不同的数据对可能会创建相同的哈希。 因此,在理论上,可以创建一个不可信证书与可信证书具有相同的散列。 如果他们让你安装那个不受信任的证书,它可能伪装成受信任的,并分发恶意数据。

碰撞

发现这两个文件中的匹配散列称为碰撞攻击 ,并且由于增加功率的(和下降成本)计算的,它变得明显,如果SHA-1不尽快退役,这将是伸手可及,以使假证书选自重复散列。

这背后其实数学是很简单 ,如果我们为2 ^ 14 * 2 ^ 60的处理器周期的猜测找到一个重复的哈希值。 亚马逊出租服务器在仅仅美分小时的速度,如果速度不断增加和服务器每小时的成本不断下降,这超越循环次数能在2018年成本只有173000美元 这意味着现实生活中的网络威慑者很快就能够负担得起由可信当局签名的证书的创建。

碰撞攻击已经可能?

certs碰撞

不仅碰撞攻击可能,至少一个大规模的碰撞攻击已知已经发生。 回到2012年,计算机通过Windows更新工具感染,因为Microsoft使用MD5哈希签名他们的证书。 这种较旧的创建散列签名的方法现在非常容易生成一对,使得所有MD5签名的散列证书相当无用。

sshot-643

开源软件Hashclash可以在亚马逊的服务器上通过与诀窍几乎任何人都可以利用来产生对MD5哈希值的为低价格低约65美分,以约10小时 而且,正如我们已经讨论过的,即使对于SHA-1,它也很快就能解决重复的签名问题。

这意味着任何使用SHA-1签名的加密证书的网站很快就会与使用MD5哈希的网站一样有问题。 如果出现这种情况,用户可能会在不知情的敏感数据传输到“ 中间人 ”提出一个假的证书具有相同的哈希,甚至让一些成熟干练的Windows Update工具的地方劫持来传播恶意软件

为什么Mozilla决定恢复对SHA-1的支持?

伤害了网

作为最受欢迎的免费和开源浏览器之一,许多人认为Mozilla是互联网安全的权威。 他们的意图当然是好的,几乎所有与在线安全有利害关系的当局都同意应该尽快被淘汰。 事情的不幸的事实,虽然是旧技术具有永远不会死的倾向 (谁在Windows XP上阅读这篇文章?)

3975852051_45ae1013c6_o

SHA-1散列证书不幸的是在网上比他们有任何权利更受欢迎,所以Mozilla平面切断支持他们阻止加密的网站不能更新到更好的SHA-2或SHA-256。 不能(或根本不能花时间)更新其证书的网站可能会被使用Firefox的用户完全切断。 当你考虑到,这可能是有可能在较贫穷的国家发生比较有限接入互联网,它违背了Mozilla的来上网的权利的基本原则 不用说,Mozilla已经迅速扭转他们的决定和更新的Firefox允许SHA-1证书在有限的时间更长

SHA-1后有生命吗?

SHA-2和相关的哈希算法家族于2001年创建,因此他们已经进行了彻底测试,并且很可能被您使用的大多数重要服务所采用。 除此之外,SHA-3于2015年8月发布。它可能有一天被用于签署证书,或者另一个,甚至更复杂的哈希方法将取代它。

SHA-1散列仍然是暂时的安全 ,作为创建碰撞对投资成本超过五十万美元的服务器时间在2016年但它仍然是可能的,而且这种威胁是值得了解。

图片来源: 乐高火狐哈希的地段戏剧自动碰撞媒体DEI PADRONI VS INTERNET ,请不要伤害网络作者不详。

赞 (0)
分享到:更多 ()