本文讲的是 还没迁移到SHA-2?赶紧吧!,从SHA-1到SHA-2,你需要知道下面这些。
PKI(公约基础设施)行业建议每个采用了PKI的SHA-1都迁移到更加安全的SHA-2。迁移原因和方法如下:
SHA-2是继任SHA-1的加密散列算法。去年,在全球截止日前迁移到SHA-2还是件“最好这么做”的预备性工作。今年,迁移截止日已过的现在,就是必须要做的事了。
很多消费数字证书的设备和应用,已针对包含SHA-1的数字证书弹出警告/错误提示,或直接运行失败。很快,所有此类设备和应用都将照此执行。为什么要强制转变呢?因为SHA-1散列有严重加密漏洞,它能起到有效保护作用的时光已经终结了。
直到2017年,SHA-1都是加密签名最常用的散列算法,有些老旧应用和设备甚至不接受,或者不理解SHA-2相关散列算法或证书。摩擦由此产生。
散列是什么?
好的加密散列函数是一套数学算法,对任意内容(如:文档、音频、视频、图片等等)执行时,可针对特定输入产出唯一输出结果(常被称为散列值)。不同输入不应产生同一散列输出,相同输入的输出结果应总是同一个。利用该加密特性,散列输出可用于检查两次提交输入是否相同。加密散列是几乎每一个数字身份验证和完整性过程的基石。
PKI证书机构服务,使用加密散列验证身份和数字证书请求,允许其他信任方(如计算机、软件、用户等等)确认数字证书和证书撤销列表(CRL)。如果PKI服务使用的加密散列被认为不够强壮,那么信任方就不能依赖该数字证书的有效性和该CA签署的其他内容。整个PKI系统中的信任,都是加密散列的强度建立的。
注:“校验和”是类似散列的验证,但其背后没有任何密码学证明可验证能为唯一输入提供唯一输出。基本上,加密散列被认为比校验和更安全,尽管校验和常用于不重要的完整性和身份验证检查。
散列攻击
加密散列的强度,在于其所有被提交的唯一内容,总是产出同样唯一输出的固有能力。同时,仅获得散列结果的人,不应仅靠散列结果就能恢复出提交的原始内容。若有人能做到这一点,就被称为“前像”攻击。而两个不同输入,也不应产生完全相同的散列输出。如果真相同了,即为“碰撞”。
大多数普遍接受的加密散列标准,在最初都被认为是足够强壮的。但随时间流逝,密码攻击者发展出很聪明的方法,利用数学知识弱化所选散列比特长度的保护强度。所有散列都有一个规定的比特长度,也就是散列输出中1和0的个数。
加密散列的强度,由其规定有效比特长度减去1比特确定。因此,128比特散列,在没有已知漏洞的情况下,拥有127比特(2^127) 有效保护。只要有人能提交数学证明,表明散列可在其有效比特长度减1位情况下被破解,该散列即被认为是弱化的。通常,或者至少目前为止,所有广为接受的散列算法都随时间弱化了,因为加密攻击不断提升能力,缩减散列的有效比特长度。
随着有效比特长度的缩短,散列也变得不那么有价值了。到有人能以合理时间和资源(通常还是以几十上百万美元计)“破解”散列时,该散列也就被认为“已损坏”,不应再被使用了。损坏的散列被恶意软件和攻击者用于假冒合法数字签名的软件。Flame恶意软件就是案例之一。总之,弱散列事关重大,不应再被使用。
SHA介绍
SHA-1由美国国家安全局(NSA) 设计,1995年被美国国家标准与技术局(NIST)定为联邦标准。NIST发布的加密标准往往为世界大多数国家信任,美国政府和军方运行关键业务的计算机系统上,也往往要求遵循这些加密标准。SHA-1替代了之前较弱的加密散列算法,比如MD-5。
时光流逝,针对SHA-1的多个持续密码攻击开始缩短其有效密钥长度。由于对SHA-1攻击接连不断的成功,NSA和NIST在2002年将其继任者SHA-2,指定为新的推荐散列标准。这还是SHA-1被认为失效之前很久的事了。2017年2月,成功碰撞攻击公布,基本上标志着SHA-1不再能起到加密签名保护作用。
关于SHA-1被破的讨论和示例文档可在http://shattered.io/找到。
SHA-2家族
SHA-2是当今所有软硬件都应采用的加密散列标准,至少未来几年是这样。SHA-2常被称为SHA-2散列家族,因为包含有很多不同大小的散列。比如224、256、384、512比特的。有人说采用了SHA-2散列,你未必会知道人家用的是几比特长度的,但最流行的是256比特。
虽然SHA-2与SHA-1共享某些数学特性,也被发现了一些小弱点,但从加密的角度,仍可认为在可预见的将来是够强壮的。毫无疑问,SHA-2比SHA-1优良,任何启用了SHA-1的关键证书、应用,以及使用SHA-1的硬件设备,都应迁移到SHA-2。
SHA-1禁用处理
所有主流Web浏览器厂商(微软、谷歌、Mozilla、苹果)及其他依赖方,都已要求目前仍在使用SHA-1的所有客户、服务和产品,迁移到SHA-2(也已经那么做了好几年)——尽管各厂商对何时该迁移什么有不同要求。
比如说,大多数厂商只关心TLS证书,而微软,当前只关注“公共”CA颁发的数字证书是否使用了SHA-1。但预期所有厂商都要求每个应用和设备所用加密散列函数迁移到SHA-2——如果还没迁移的话。如果网站用的是公共SHA-1数字证书,现代大多数浏览器都会弹出错误消息提示,但有些会允许无视错误继续访问。很快,所有主流浏览器厂商就会阻止访问SHA-1保护的网站,也不允许用户绕过错误提示了。
不幸的是,SHA-1到SHA-2的迁移,在大多数服务器场景里是单向的不归路。比如说,一旦你将Web服务器证书从SHA-1换到SHA-2,不能识别SHA-2证书的客户端就会看到警告或错误提示,或者直接访问失败。SHA-2迁移对不支持的应用和设备而言是个风险。
PKI SHA-1到SHA-2迁移计划
有还没采用SHA-2的内部PKI的每家公司,将需要创建 SHA-2 PKI,或将现有 SHA-1 PKI 迁移至SHA-2。SHA-2迁移计划包括:
- 向涉及到的团队成员普及SHA-2概念,以及为什么SHA-2是必须的。
- 为所有消费或使用散列/数字证书的关键应用和设备列个清单。
- 确定哪些关键消费应用或设备可使用什么长度的SHA-2,而哪些不能使用,并搞清可能的操作顾虑有哪些(这通常需要与厂商联系并做测试)
- 确定哪些PKI组件可以,或将被迁移到SHA-2
- 创建迁移计划将SHA-1组件转变到SHA-2,包括消费客户端和PKI组件,再添加回滚计划以防不测
- 概念验证测试
- 管理风险接受和做/不做决策
- 生产环境迁移计划实现
- 测试和反馈
大多数SHA-2迁移项目中最难的部分,是确定哪些设备和应用能用SHA-2。如果消费设备不理解SHA-2,预期会失败或弹出错误消息——或许不会像“SHA-2不识别”这么清楚明白。大概会是:“证书不识别”、“连接不确定”、“无法建立连接”、“不良证书”、“非受信证书”。
可以先从清点需要理解SHA-2的每个设备、操作系统和应用开始。尝试依靠厂商断言也未尝不可,但直到亲自测试使用SHA-2,你无法确知会发生什么。
升级应用和设备通常不是小事,往往会比预期耗时更长。即便到了现在,仍有大堆设备和应用依然运行着老版本的OpenSSL——早该在心脏滴血爆发后就打上布丁的。还得记着,升级是需要普通用户测试和接受的。
如果已有内部PKI,那就将之为SHA-2做好准备吧。有时候这意味着升级你的CA,获得新CA证书,或者安装全新PKI。出于各种原因,推荐最后一种方式——全新PKI可给你重新开始的机会,不受过去遗留错误的影响。
PKI迁移模型
下列PKI组件实现SHA-2的场景可供参考(假定使用2层PKI——线下根,线上企业颁发CA,每个都能是新PKI组件或迁移的组件):
两棵PKI树,一棵全SHA-1,另一棵全SHA-2
其他选项假定单一PKI树
整棵PKI树,从根到端点,全用SHA-1
整棵PKI树,从根到端点,全用SHA-2
SHA-1根,SHA-2颁发CA,SHA-2端点证书
SHA-1根,SHA-2颁发CA,SHA-1端点证书
SHA-1根,SHA-1和SHA-2颁发CA,SHA-1和SHA-2端点证书
SHA-2根,SHA-1颁发CA,SHA-1端点证书
SHA-2根,SHA-2颁发CA,SHA-1端点证书
SHA-2根,SHA-1和SHA-2颁发CA,SHA-1和SHA-2端点证书
按需在SHA-1和SHA-2之间切换的颁发CA也是可能的,但这会给PKI服务造成混乱(特别不推荐)。如果可能的话,最简单的迁移方法,是运行两套PKI,一套SHA-1,另一套SHA-2,然后在测试允许的情况下迁移消费设备和应用。
注:即便仍用SHA-1,根CA的CA证书也不用迁移到SHA-2。所有SHA-1禁用检查程序仅关心根CA自有证书后面的事(至少不远的将来依然如此)。不过,完全迁移也是有好处的,至少就可以说自己的PKI是全SHA-2的,能规避点未来任何所需的SHA-1修改。
公共CA已将期限过2017年1月的证书都从SHA-1转成SHA-2了,所以你的精力应集中在公共数字证书还未迁移的服务器和应用上。此事解决后,再开始检查内部PKI和依赖方。SHA-1向SHA-2的迁移技术上不是太难,但是个大规模后端改变,涉及成堆后果,要求诸多测试。
多数厂商未必知道SHA-1最终死亡期限(比如应用到所有设备和应用上而引发“致命”错误的时候),但随着越来越多的消费者迁移到SHA-2,这一天迟早到来。你最好早做准备。
SHA-3已出,但真的应该用吗?
尽管SHA-2中尚未发现明显加密弱点,但其算法与SHA-1一脉相承。 大多数专家认为其生命周期与SHA-1类似。NIST在2015年8月已通过了名为SHA-3的替代加密散列算法。SHA-3与SHA-1和SHA-2没有任何共同的数学属性,理应比SHA-2抵御加密攻击的时间更长久。
不幸的是,想拖延SHA-2迁移,一步到位直接上SHA-3的人,将会失望透顶。SHA-3的广泛采用是好几年后的事,而SHA-2却是当前紧迫的要求。如果你现在就迁移到SHA-3,那你几乎所有依赖加密的应用和设备都将报错(报告称不识别数字证书)。
所以,如果你还没迁移到SHA-2,赶紧动手。当SHA-2开始弱化的时候,我们就能全体迁移到SHA-3了。