【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Google 宣布攻破 SHA-1,从此 SHA-1 不再安全!

  • 2017-02-23
  • 本文字数:1381 字

    阅读完需:约 5 分钟

SHA-1 等加密散列函数可谓加密学家手中的瑞士军刀。无论是浏览器安全保护、代码库管理乃至检测存储介质的重复文件,散列技术都在其中发挥着重要作用。散列函数能够将大量数据压缩为体积更小的消息摘要。作为一项被广泛使用的加密方案,其最基本的要求就是在当前计算能力上无法找到摘要相同的两条消息。然而随着时间的推移,这一要求很可能在针对散列函数数学基础的攻击或者计算能力提升等因素的冲击之下不再具有保障。

时至今日,距离SHA-1 的最初发布已经过去了十年,我们正式公布第一套可实现碰撞的实用性技术方案。这套方案代表着阿姆斯特丹 CWI 研究所与谷歌公司过去两年中的合作研究成果。我们总结了如何着手生成一个下文所介绍的碰撞。另外,作为本次攻击活动的概念验证证明,我们还发布了两份具有相同 SHA-1 哈希值但内容并不相同的 PDF 文件

对于技术业界而言,我们的发现强调了避免使用 SHA-1 的必要性。谷歌公司多年来一直主张弃用 SHA-1 方案,特别是在 TLS 证书签署等场景之下。早在 2014 年,Chrome 小组就宣布将逐渐淘汰对SHA-1 的使用。我们希望自己针对SHA-1 完成的实际攻击能够进一步巩固这一结论,让更多人意识到其已经不再安全可靠。

我们亦希望这一针对SHA-1 的实际攻击案例能够最终说服整个技术业界尽快转向更为安全的替代性方案,例如SHA-256。

加密散列碰撞是什么?

当两组不同的数据——可以作为文件、二进制文件或者网站证书存在的哈希值如上图所示具有相同的摘要内容时,即视为二者发生碰撞。实际上,安全的散列函数不应存在这种碰撞现象。然而,在使用SHA-1 等存在一定缺陷的散列算法的情况下,拥有充裕资源的攻击者确实能够实现这种碰撞结果。攻击者随后可以利用碰撞欺骗依赖于散列机制的系统,引导后者将原本的良性文件替换为拥有同样摘要的恶意文件——例如两份内容完全不同的保险合同。

寻找SHA-1 碰撞

2013 年, Marc Stevens 曾发表一篇论文,专门介绍了创建 SHA-1 碰撞的理论性方法。我们首先创建了一份专门作的 PDF 前缀,用以生成两份拥有任意不同内容的文档,但二者同时具备相同的 SHA-1 摘要。不过要在实践中重现这种理论性攻击,我们必须克服一系列新的挑战。此后,我们利用谷歌的技术专长与云基础设施计算碰撞情况,这也是我们截至目前已完成的规模最大的计算任务之一。

下面这些数字应该能让大家更为确切地感受此次计算任务的规模水平:

  • 总计 900 万兆(即百万的五次幂,具体为 9,223,372,036,854,775,808)次 SHA1 计算。
  • 要完成攻击的首个阶段需要单一 CPU 计算 6500 年。
  • 要完成攻击的第二阶段需要单一 GPU 计算 110 年。

虽然这些数字看似非常巨大,但 SHA-1 破坏性攻击的速度仍然较暴力破解攻击快 10 万倍,这意味着前者确实具有可行性。

降低 SHA-1 碰撞风险

着眼于未来,安全从业者比以往更为迫切地需要转而使用更加安全的加密散列算法,例如 SHA-256 与 SHA-3。根据谷歌公司的漏洞披露政策,我们将在发布代码之前等待90 天,且允许任何创建两份拥有相同SHA-1 散列摘要但图像内容彼此不同的PDF 文档,同时遵循一部分前提条件。为了防止此类攻击手段被主动使用,我们为Gmail 及G Suite 用户提供额外的保护措施,供其检测我们的PDF 碰撞技术。另外,我们也在为公众提供一套免费的检测系统。

感兴趣的朋友可以点击此处了解更多与SHA-1 攻击以及我们研究技术成果相关的细节信息。

原文链接: Announcing the first SHA1 collision

2017-02-23 17:3013539

评论

发布
暂无评论
发现更多内容

技术实践丨如何解决异步接口请求快慢不均导致的数据错误问题?

华为云开发者联盟

JavaScript typescript 大前端 浏览器 angular

jmeter命令行执行测试并对测试报表进行初步分析

行者AI

测试 Jmeter

恍然大悟丨Java 中 RMI 的使用

Java架构师迁哥

开发者必看,面试官心中的最佳数据库人才模型是什么样?

华为云开发者联盟

面试 开发者 华为云数据库 数据库人才

耗时1年的前端技术框架切换之旅

华为云开发者联盟

大前端 软件工程 React 框架

自动发布.NET Core Web应用

DisonTangor

DevOps 运维自动化 jenkins dotnet

技术干货|7个 React 性能提升技巧

拍乐云Pano

React

使用docker compose快速部署前后端分离项目案例

皮特王

nginx Docker Vue Docker-compose

精选Hive高频面试题11道,附答案详细解析

五分钟学大数据

大数据 hive 5月日更

聊聊 Zabbix 和 Prometheus(一)

耳东@Erdong

Prometheus zabbix 5月日更

如何更改 Notion 中的字体?

彭宏豪95

效率 Notion 工具 5月日更

工商银行分布式服务 C10K 场景解决方案

阿里巴巴云原生

容器 微服务 云原生 监控 应用服务中间件

华为云PB级数据库GaussDB(for Redis)揭秘第九期:与HBase的对比

华为云开发者联盟

HBase 华为云 开源数据库 NoSQL数据库 数据库GaussDB(for Redis)

你到底想做什么

ES_her0

5月日更

百度大脑UNIT拍了拍你,提醒你报名智能对话训练营

百度大脑

物联网 智能对话

HarmonyOS开发者创新大赛预选赛结束,23支队伍脱颖而出闯入决赛

Geek_283163

鸿蒙

高德 Serverless 平台建设及实践

阿里巴巴云原生

Serverless 运维 云原生 监控 中间件

那些激情燃烧的NFT们

zhoo299

区块链 加密货币 艺术 5月日更 NFT

Python OOP-5

若尘

oop Python编程 5月日更

腾讯云大神亲码“redis深度笔记”,从基础到源码,应有尽有

Java 编程 程序员 架构

打破思维定式(六)

Changing Lin

5月日更

一个朋友学会Java泛型后直接薪资翻倍!

北游学Java

Java 泛型

大数据实战:网站流量日志数据分析

大数据技术指南

大数据 5月日更

Golang Chaos Engineering

escray

学习 极客时间 Go 语言 5月日更

架构实战营-详细架构设计文档

Simon

架构实战营

【LeetCode】解码异或后的排列Java题解

Albert

算法 LeetCode 5月日更

只会重装系统的运维,不是好运维

运维研习社

Linux 5月日更 系统修复

这个英语学习APP更适合小白

小天同学

学习 英语 5月日更 APP推荐

五一假期回乡,跟大家聊聊感触

架构精进之路

心情 杂记 5月日更

阿里云入选 2021 Gartner APM 魔力象限,国内唯一入选云厂商

阿里巴巴云原生

阿里云 容器 微服务 运维 云原生

SICP 习题2.6之丘奇数

程序员历小冰

函数式编程 SICP 5月日更

Google宣布攻破SHA-1,从此SHA-1不再安全!_Google_Marc Stevens_InfoQ精选文章