MD5哈希碰撞问题详解与IE安全配置指南

本文详细解析MD5哈希碰撞对数字证书安全的影响,提供Internet Explorer的证书吊销检查与OCSP配置指南,并说明如何识别易受攻击的MD5签名证书及采用SHA-256等更安全算法的迁移方案。

关于MD5碰撞问题的信息

今日微软发布了安全公告(961509),涉及证书中MD5哈希的碰撞问题。该问题影响整个行业,并非微软特定漏洞。MD5的严重弱点已知多年,正因如此,微软安全开发生命周期(SDL)禁止在新代码中使用MD5。强烈建议开发者停止使用MD4、MD5甚至SHA1,转而使用SHA-256及更高版本进行哈希、签名和消息认证码(更多信息参见幻灯片22:http://download.microsoft.com/download/8/4/7/8471a3cb-e4bf-442a-bba4-c0c907d598c5/Michael%20Howard%20SDL%20Development%20Practices.ppsx)。

证书颁发机构(CA)签发的证书主要有三种用途:

  • 安全套接层(SSL)或传输层安全(TLS)
  • 安全电子邮件(如S/MIME)
  • 代码签名(如Authenticode)

在此背景下,我们认为最可能的攻击场景将通过SSL/TLS进行(尽管目前未观察到任何攻击)。因此,常见网页浏览器同样面临此问题,因为HTTPS使用SSL/TLS建立安全连接。

本文旨在详细解释该问题,并重点介绍使用Internet Explorer时的缓解措施和变通方案。最后需注意,使用SHA1哈希的证书不受此问题影响。

问题摘要

MD5哈希碰撞允许恶意用户从有效证书生成伪造证书。由于证书哈希相同,两者均显示为合法,攻击者可借此冒充有效站点或个人。攻击者需诱使用户发起SSL/TLS连接,客户端验证证书时将其视为有效,用户误以为与合法站点或个人建立安全连接,实则与攻击者通信。

尽管任何使用MD5哈希并签名的证书都可能被篡改,但我们未观察到任何主动攻击。

缓解措施与变通方案

绿色地址栏(IE7和IE8)

扩展验证证书(http://www.cabforum.org/EV_Certificate_Guidelines.pdf)要求使用SHA1(而非MD5),因此不受此问题影响。Internet Explorer 7及更高版本通过绿色高亮地址栏利用EV证书。更多信息参见:http://blogs.msdn.com/ie/archive/2006/11/07/improving-ssl-extended-validation-ev-ssl-certificates-coming-in-january.aspx。示例如下:

(图片占位符)

简言之,如果Internet Explorer 7地址栏显示为绿色,则无此攻击风险。

IE7和IE8中的证书吊销及OCSP配置

证书吊销允许证书颁发机构撤销特定证书,此后用户浏览器不再视其为有效。虽不能完全防止攻击,但提高了CA响应能力,允许其禁用欺诈证书。

Internet Explorer 7及更高版本(在Vista及以上系统运行)默认启用证书吊销,因为使用在线证书状态协议(OCSP)确认证书有效性。因此,若恶意证书被主动使用,CA可撤销它,Internet Explorer将自动阻止访问的网站。

以下是配置OCSP的步骤:

在Vista SP1和Windows Server 2008上本地配置自定义OCSP响应程序位置的步骤:

  1. 启动证书MMC管理单元
    • 单击开始按钮,在“开始搜索”字段中输入mmc.exe
    • 从“文件”菜单选择“添加/删除管理单元…”
    • 在左侧选择“证书”管理单元,单击“添加”
    • 选择“计算机账户”,单击“下一步”,然后单击“完成”完成向导
    • 单击“确定”关闭对话框
  2. 配置管理单元显示物理证书存储
    • 选择“证书(本地计算机)”节点
    • 从“查看”菜单选择“选项…”
    • 勾选“物理证书存储”复选框,然后单击“确定”
  3. 选择要配置自定义OCSP响应程序的公共商业根CA
    • 选择“证书(本地计算机)”->“受信任的根证书颁发机构”->“第三方”->“证书”节点
    • 选择根CA
  4. 将根CA证书移至“注册表”节点
    • 右键单击根CA证书
    • 选择“剪切”
    • 选择“证书(本地计算机)”->“受信任的根证书颁发机构”->“第三方”->“证书”->“注册表”->“证书”节点
    • 从“操作”菜单选择“粘贴”
  5. 使用根CA证书配置自定义OCSP响应程序位置
    • 右键单击根CA证书
    • 选择“属性”
    • 选择“OCSP”选项卡
    • 在“添加URL”按钮旁的编辑框中输入自定义OCSP响应程序的URL,然后单击“添加URL”
    • 单击“确定”

通过组策略配置自定义OCSP的步骤:

  1. 选择将存储证书配置的组策略对象
  2. 在组策略编辑器中,选择“计算机配置”->“Windows设置”->“安全设置”->“公钥策略”->“受信任的根证书颁发机构”节点
  3. 将根CA证书添加到组策略。注意:应用此策略前,必须手动从每台计算机的“第三方证书颁发机构存储”中移除根CA证书
    • 右键单击“受信任的根证书颁发机构”节点,选择“导入…”以添加根CA证书
    • 单击“下一步”
    • 输入根CA证书的文件名,然后单击“下一步”
    • 单击“下一步”,然后单击“完成”完成向导
  4. 使用根CA证书配置自定义OCSP响应程序位置
    • 右键单击根CA证书
    • 选择“属性”
    • 选择“OCSP”选项卡
    • 在“添加URL”按钮旁的编辑框中输入自定义OCSP响应程序的URL,然后单击“添加URL”
    • 单击“确定”

IE6中的证书吊销

Internet Explorer 6默认禁用证书吊销检查,因为它需要下载证书吊销列表(CRL)来验证证书是否仍标记为有效。在低带宽连接(如拨号)上,这可能增加延迟。

可通过以下步骤启用Internet Explorer 6的证书吊销:

  1. 在“工具”菜单上,单击“Internet选项”,然后单击“高级”选项卡。
  2. 在“安全”区域,选中“检查发行商的证书吊销”和“检查服务器证书吊销”复选框。

更多信息参见以下链接: http://www.microsoft.com/technet/prodtechnol/ie/reskit/6/part2/c06ie6rk.mspx?mfr=true

检查证书

另一种验证证书是否使用MD5的方法是查看证书详细信息。需注意,必须检查证书本身及整个链(证书路径)(根证书除外),以评估是否使用了MD5哈希证书。以下是在Internet Explorer 7中执行此操作的步骤:

  1. 单击地址栏中的锁图标: (图片占位符)
  2. 将打开以下窗口: (图片占位符)
  3. 单击“查看证书”
  4. 将打开以下窗口: (图片占位符) 如果签名算法为使用RSA的SHA1(sha1RSA),则该证书免受本文所述漏洞影响;如果是MD5(如md5RSA),则可能被泄露。

注意事项:如果伪造证书有关CRL的信息误导,网页浏览器可能无法识别证书已吊销。在企业PKI部署中,我们建议在Windows OCSP配置中配置特定OCSP响应程序。这将允许组织撤销已被欺诈签名并修改为不再携带正确验证位置的证书。

我们感谢帮助制定上述指南的工程师:

  • Internet Explorer团队的Eric Lawrence
  • Windows加密团队的Kelvin Yiu和Tom Albertson
  • Microsoft安全响应中心团队的Maarten Van Horenbeeck
  • 安全开发生命周期团队的Michael Howard

最后,讨论此公告的Microsoft安全响应中心(MSRC)博客链接为:http://blogs.technet.com/msrc/archive/2008/12/30/information-on-microsoft-security-advisory-961509.aspx

更新2008年12月31日:根据发送至switech@microsoft.com的电子邮件更新了“检查证书”部分。

Damian Hasse,MSRC工程博客作者 发布内容“按原样”提供,无任何保证,也不授予任何权利。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计