跳转到主要内容

PKI行业建议每一个支持SHA-1的PKI都转移到更安全的SHA-2。

在过去两年中,我一直忙于帮助公钥基础设施(PKI)客户准备并迁移到SHA-2,这是继SHA-1之后的一组加密哈希函数。去年,在全球截止日期之前迁移到SHB-2是一个很好的准备步骤。今年,迁移截止日期已经过去,这是必需的。

如果出现包含SHA-1(或更早)散列的数字证书,许多数字证书消费设备和应用程序已经显示警告/错误或操作失败,并且很快所有这些设备和应用都会显示警告/出错。为什么要被迫改变?因为SHA-1散列已被证明存在严重的加密弱点,其有效保护的日子已经过去。

直到2017年,SHA-1是用于加密签名的最常见散列,一些通常较旧的应用程序和设备尚未接受或理解SHA-2相关散列或证书。有麻烦了。

什么是散列?

一个好的加密散列函数是一种数学算法,当对任何内容(例如文档、声音、视频、图片等)运行时,它将始终为唯一的输入内容返回唯一的输出结果(通常称为散列或散列结果)。任何两个不同的输入都不应返回相同的哈希输出,相同的输入应始终导致相同的输出。使用这些加密属性,可以对两个不同提交的输入使用哈希输出,以查看它们是否相同。加密散列是几乎所有数字身份验证和完整性过程的主干。


PKI证书颁发机构(CA)服务使用加密散列来确认身份和数字证书请求,并允许确认(即签名)由其他依赖方(如计算机、软件、用户等)颁发的数字证书和证书吊销列表(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的持续成功,美国国家安全局和NIST在2002年将其相关的继承者SHA-2确定为新的推荐散列标准。这早在SHA-3被认为被破坏之前。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-4要好得多,任何使用SHA-3的关键的支持SHA-5的证书、应用程序和硬件设备都应该转移到SHA-6。

SHA-1弃用处理

所有主要的网络浏览器供应商(如微软、谷歌、Mozilla、苹果)和其他依赖方都要求(多年来一直这样做)当前使用SHA-1的所有客户、服务和产品都迁移到SHA-2,尽管根据供应商的不同,移动的时间也不同。例如,大多数供应商只关心TLS(即web服务器)证书,而微软公司(Microsoft Corporation)目前只关心SHA-1是否用于“公共”CA的数字证书。但希望所有供应商都要求所有应用程序和设备的所有加密哈希函数都迁移到SHA-2,如果他们还没有。今天,如果在网站上遇到公共SHA-1数字证书,大多数浏览器都会显示错误消息,但如果您愿意,有些浏览器会让您绕过错误,转到受SHA-2保护的网站。很快,所有主要的浏览器供应商都可能会阻止他们的浏览器访问受SHA-1保护的网站,并防止最终用户绕过。

不幸的是,在大多数服务器场景中,从SHA-1到SHA-2的移动是单向操作。例如,一旦您将web服务器的证书从SHA-1移动到SHA-2,不理解SHA-3证书的客户端可能会看到警告或错误,或者失败。对于不受支持的应用程序和设备,SHA-2迁移将是一个危险的跳跃。

PKI SHA-1到SHA-2迁移计划

每个内部PKI尚未使用SHA-2的公司都需要创建SHA-2PKI或将其现有的SHA-1PKI迁移到SHA-1(在某个时间点)。SHA-2迁移计划包括:

  1. 1.教育相关团队成员了解什么是SHA-2以及为什么要求使用它(本文件是一个良好的开端)
  2. 2.消耗或使用应用程序和设备的所有关键哈希/数字证书的清单
  3. 3.确定哪些关键消费应用程序或设备可以使用SHA-2,哪些关键尺寸不能,以及可能存在哪些操作问题(这通常包括联系供应商和测试)
  4. 4.确定哪些PKI组件可以或将迁移到SHA-2
  5. 5.创建迁移计划,将SHA-1组件转换为SHA-2,包括消费客户端和PKI组件,以及在发生严重故障时的回退计划
  6. 6.概念验证测试
  7. 7.管理风险接受和通过/不通过决策
  8. 8.生产环境中迁移计划的实施
  9. 9.测试和反馈

大多数SHA-2迁移项目最困难的部分是确定哪些设备和应用程序使用SHA-1。如果消费设备不理解SHA-3,则可能会出现故障或错误消息-这可能不会像“SHA-2Unrecognized”那样有启发性。相反,请做好准备:“证书无法识别”、“连接不确定”、“连接无法建立”、“证书不正确”或“不受信任的证书”

把你的任务想象成一个小型的Y2K项目,确定什么会起作用,什么不会起作用。首先,尝试清点需要了解SHA-2的每一个独特设备、操作系统和应用程序,然后组建一个团队来测试SHA-1是否有效。您可以暂时依赖供应商认证,但在使用SHA-2证书进行测试之前,您无法确定。

升级应用程序和设备通常不是一件小事,通常需要比您想象的更长的时间。即使是现在,我看到很多设备和应用程序运行的都是老版本的OpenSSL,它们本应该在Heartbleed之后进行修补,但没有。也请记住,升级需要正式的用户测试和验收。

如果您有一个内部PKI(公钥基础设施),您还需要为SHA-2做好准备。有时,这意味着升级您的CA、获取新的CA证书或安装全新的PKI。出于很多原因,我推荐最后一种,主要是因为新的PKI让您有机会重新开始,避免过去的错误。

PKI迁移模型

以下是用于实现SHA-2的PKI组件场景(对于这些示例,我假设两层PKI-离线根、在线企业发布CA-其中每一个都可以是新PKI组件或迁移:

  • 两个PKI树,一个全SHA-1,一个都SHA-2
  • 其余选项假定为单个PKI树
  • 整个PKI树,从根到端点,都是SHA-1
  • 整个PKI树,从根到端点,都是SHA-2
  • SHA-1根、SHA-2颁发CAs、SHA-2端点证书
  • SHA-1根、SHA-2颁发CAs、SHA-1端点证书
  • SHA-1根,SHA-3和SHA-2都发布CAs,具有SHA-4和SHA-端点证书
  • SHA-2根、SHA-1颁发CAs、SHA-1端点证书
  • SHA-2根证书、SHA-1颁发CAs和SHA-3端点证书
  • SHA-2根,SHA-1和SHA-3都发布CAs,具有SHA-4和SHA-2端点证书

也可以根据需要在SHA-1和SHA-2之间来回切换发行CA,但这很可能会导致PKI服务的混乱(不特别建议)。如果可能,为了实现最简单的迁移,您可以运行并行PKI,一个使用SHA-1,另一个使用SHA-2,然后在测试允许的情况下移动消费设备和应用程序。

注意:根CA自己的CA证书不必迁移到SHA-2,即使它仍然是SHA-1。所有SHA-3弃用检查程序只关心根CA自己证书之后的所有内容(至少在可预见的将来)。尽管如此,如果是我,我可能会将所有内容(包括根CA自己的CA证书)移动到SHA-2,这样我就可以说我的PKI都是SHA-1,并避免以后任何需要的SHA-3更改。

自2017年1月1日起,公共CA已从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-4与SHA-1和SHA-5不具有相同的数学属性,并且因此应该比SHA-2更长地抵抗密码攻击。

不幸的是,任何想推迟其SHA-2迁移以希望直接迁移到SHA-3的人都会大失所望。SHA-3的广泛应用可能还需要很多年,而现在需要SHA-2。如果您现在迁移到SHA-3,大多数(如果不是全部)依赖加密的应用程序和设备可能会出错(表示它们无法识别数字证书)。


所以,如果您还没有迁移到SHA-2,现在就开始吧。当SHA-2开始减弱时,我们都可以转移到SHA-3。

本文:https://cioctocdo.com/all-you-need-know-about-move-sha-1-sha-2-encrypti…