自原始版本以来,此问题已得到重大修订和阐明。

如果我们查看我的“受信任的根”存储区中的每个受信任的证书,我应该信任它们多少?

什么?当我评估每个根证书颁发机构对从本地存储中删除潜在根证书的信任度时,应该考虑哪些因素?

更多信息:
如果证书颁发机构向未经正确验证的一方颁发证书,那么这将导致信任该CA的所有计算机容易受到MITM攻击。结果,所有CA都会严格验证给定SSL证书请求的请求者,以确保其CS链的完整性。向错误的一方颁发证书。这可能是由于CA运营商的错误,政府的要求,或者是CA运营商的强制(贿赂)。

我想了解更多有关哪个默认CA更有可能向其颁发证书的信息。错误的一方。我打算使用此信息来建议用户从其受信任的证书存储中删除该CA。

示例:
假设控制特定CA的政府希望采用Microsoft.com的身份,并且要求CA的验证过程例外。然后,该政府还要求维护此例外的秘密性。然后将生成的密钥对用于MITM攻击。

Windows Azure默认信任

Windows Azure支持275个CA,如以下链接所示。根据特定CA的用途,其中一些CA可能会增加特定攻击的表面积。实际上,从技术上讲,这可能是使某些应用程序正常运行所必需的。

Amazon默认信任

(不可用)请共享指向Amazon,Google和VMWare的默认CA列表的链接如果您遇到它们。

Mozilla

提供了所有证书和审核语句的列表。

Apple iOS

此#WWDC2017中提到的所有iPhone根证书的列表。视频

评论

我认为您需要清理术语。 “证书”是公开可用的信息。我认为您的意思是“密钥对”,并且您在这里做很多假设,即所有SSL密钥对都是以相同的方式生成的,并且任何单个CA仅使用一种方式来颁发密钥和证书。另外我认为您可能是说“受信任的证书存储”而不是“受信任的根存储”,因为您可能是在谈论由体面的受信任根签名的弱中间CA ...

@bethlakshmi-我的印象是,私钥从未发送到上游CA,因此也没有说密钥对。这不正确吗?

如常见问题所述,澄清威胁模型将大有帮助。我预计,很多CA将很容易受到强大的主要政府的全面攻击,无论是通过强制性还是通过社会工程手段,还是通过利用漏洞。所有这些都已经在野外得到证明。如果您只是一条小鱼,那么您可能仍然需要担心一些CA,这些CA似乎与喜欢监听的政府密切相关。如果您可以将其范围缩小到要保护的特定资产,则只需删除所有CA(使用这些资产所需的CA除外)即可。

相关:DigiNotar的CA被黑,允许进行MITM攻击

Fox-IT关于DigiNotar黑客的独立报告已公开,请参阅scribd.com/doc/64011372/Operation-Black-Tulip-v1-0

#1 楼

更新5 CA模型的根本问题(heh)是,在一般情况下,任何CA都可以为任何域颁发证书,因此您很容易受到最弱链接的攻击。至于您可以信任的人,我怀疑这个名单太长了,因为风险很高,安全性也很困难。我推荐Christopher Soghoian在该主题上的帖子,该帖子阐明了世界各国政府用于访问私有用户数据的各种方法-无论是通过运行窃听还是直接通过运营云服务的公司直接要求它,或者现在越来越多地通过CA强制要求或骇客:轻微的偏执狂:导致DigiNotar骇客的力量。

在此,我提供一些细节,最后提供一些潜在修复程序的链接。

2009年,Etisalat(阿联酋政府拥有60%的股份)推出了看起来很无害的BlackBerry补丁程序已将间谍软件插入RIM设备中,从而可以监视电子邮件,因此很难认为它是可信赖的。但是它在许多受信任的CA列表中:
http://arstechnica.com/business/news/2009/07/mobile-carrier-rolls-out-spyware-as-a-3g-update.ars

更新1另请参见成功攻击的示例,据称是伊朗人ComodoHacker攻击Comodo:Rogue SSL证书(“ case comodogate”)-F-Secure Weblog。 F-Secure指出,Mozilla包括中国,以色列,百慕大,南非,爱沙尼亚,罗马尼亚,斯洛伐克,西班牙,挪威,哥伦比亚,法国,台湾,英国,荷兰,土耳其,美国,香港,日本的CA颁发的证书,匈牙利,德国和瑞士。

突尼斯是另一个运营着广受信任的CA的国家,并且也有很好的文件证明了其政府侵犯隐私的行为:Facebook如何回应突尼斯黑客的内幕-Alexis Madrigal-技术-大西洋

Mozilla注意到需要注意的另一种可疑做法:CA允许RA合作伙伴直接从根目录而不是通过中介发布证书:Comodo证书发行– Mozilla安全博客的后续。
另请参见,包括有关一个孤独的伊朗黑客Web浏览器对责任主张的猜测,以及Comodo披露了一次成功的证书颁发机构攻击,也许来自伊朗|修补匠的自由

更新3:ComodoHacker似乎也对DigiNotar CA发起了另一次成功的攻击。他们的网站从2009年开始遭到入侵,但直到2011年伊朗人还使用DigiNotar来为Google,Yahoo!,Mozilla,WordPress和The Tor Project的网站签署虚假证书后才注意到。 DigiNotar已有一个多月没有透露其入侵网站的知识。在DigiNotar上了解更多信息Hack重点介绍了SSL Web安全模型的严重故障|修补匠的自由。

我猜想,各种CA的脆弱性范围以及它们的效用都相差很大。因此,我建议您调整策略重点。当您可以将其范围缩小到要保护的特定资产时,只需删除所有CA(使用这些资产所需的CA除外)。否则,请考虑消除那些认为您最容易受到资产关注或最不受欢迎的CA,以减少攻击面。但是请接受这样一个事实,即使用最流行和最仔细的CA,您仍然会遭受复杂的攻击。<​​br />
更新2:在Freedom to Tinker上修复危险的CA基础设施方面,有一篇很棒的文章:更好的CA基础架构

它讨论了这些创新:


ImperialViolet-DNSSEC和TLS
网络公证人-观点:改进SSH样式的主机身份验证多路径网络探测功能
Google在线安全博客:提高SSL证书的安全性

Update 4我们在2011年8月发布的IT安全博客文章中还包括了转向DNSSEC的案例:
基于风险的解决证书颁发机构问题的解决方法«Stack Exchange Security Blog

Update 6一些证书颁发机构被发现违反规定。其中包括法国网络防御机构(ANSSI)和Trustwave,它们中的每一个都与欺骗性数字证书相关联。 (印度CCA)2014年:Google在线安全博客:维护数字证书安全性

另请参阅“证书透明性”问题,它看起来像是一种有助于早期发现不良证书和违反政策的方法。

评论


伟大的联系;我肯定会使用+1

–半音
2011年5月17日在17:02

DNSSEC不是万能药

–布伦南
2012年4月17日在21:50

@Ashwin您指的是哪几篇文章?还要注意,尽管某些私钥受到高级硬件的良好保护,但其他私钥只是通用计算机上的位,而且更容易被盗。同样,通常也可以在没有主私钥的情况下获得新证书。通过破坏注册商或获得对委派的CA证书的控制,如此处其他参考文章所述。

–nealmcb
2012年7月12日在21:16

本月初,印度国家信息中心(NIC)发生了另一起滥用行为:googleonlinesecurity.blogspot.com.es/2014/07/…

–Ángel
2014年7月17日在23:10

然后是联想等制造商插入的根证书,例如Superfish的疯狂证书,它带有自己的不安全CA,包括私钥。摆脱那一个!

–nealmcb
2015年2月21日在22:42



#2 楼

正如马特·布拉兹(Matt Blaze)曾经写道的那样,CA可以保护您免受任何他们不愿意从中获利的人的侵害。那应该告诉您有关CA激励机制的位置以及该安排中的一些潜在风险的信息。

评论


这句话如此简洁明了,我不得不接受这个答案。我仍然对评估每个受信任根中的风险的方式感兴趣。

–半音
2011-3-18在22:20

@makerofthings但是请记住-您是信任开始的地方-路径最终是循环的。因此,只有考虑到您的资产和威胁,您才可以最终根据您对每个CA的了解评估您是否担心,它们是否有可能将您出售。

–nealmcb
11 Mar 20 '11在2:12

#3 楼

恐怕这个问题的简短答案是,据我所知,这是不可能知道的。大多数常见的浏览器中都安装了大量默认CA,并且很难评估将证书颁发给政府或其他组织的“可信度”。

如果CA成为被称为不可信,那么它们很可能会从浏览器的默认安装列表中删除(根据下面的@ xce,Diginotar是一个很好的示例,Digicert也是一个很好的例子)

他们有可能在没有对请求者进行适当安全检查的情况下提供证书的风险。几年前,在Defcon上有多次主题演讲,主题是无需授权即可获得证书。

如果这是一个令人担忧的问题,那么我唯一想到的方法就是创建您已审核过的CA的白名单,并对提供的安全性感到满意。显然,这对于访问常规Internet无效,因为您最终可能会删除对您要使用的站点有证书问题的CA。

评论


您是否知道审查CA的方法?

–半音
2011-2-23在22:06

可以通过标准的信息安全样式审核来建立良好的基本信任度(通常会警告诸如ISO27XXX等事物的有效性)。将数据传递给政府组织的可能性很难。我想您需要在特定国家/地区建立针对隐私的法规和法律保护,然后将其与可能鼓励政府组织访问信息的动机进行权衡。最终,如果您担心政府层面的干预,那么我倾向于在CA上设置您的身份,而不信任任何公共机构:)

–罗里·麦库恩(Rory McCune)
2011-02-24 13:59



DigiNotar就是一个例子。

–user11101
2012年7月31日12:35

#4 楼

2个示例成为您需要了解的内容的核心内容,而不是您明确要求的内容:


几年前(2006年或2005年底),广为宣传的SSL网络钓鱼事件-一家伪造的银行网站收到了合法的SSL证书(我相信是从GeoTrust获得的),原因是该地区银行的网站存在拼写错误。 (更新:找到了这个历史链接-地址是银行的全名,而不是简称)。从那时起,还有其他案例发生网络钓鱼(SSL)网络钓鱼。。。要点是,无需借助“强制”即可获得证书。
最近的Stuxnet中篇小说,除其他策略外,还依赖于被盗证书。这些是从第三方驱动程序制造商那里“借来的”,并且由于它们是“受信任的”,因此可以被滥用以植入恶意软件。

然后,当然还有一些甚至没有使用CA的软件方案-例如具有调用Web服务的胖客户端,而不必费心验证服务器的证书...。

我的意思是,如果您担心基于SSL的MITM,通常(不是)应该让您担心的政府强制措施。通常有更简便,更易用的方法。
我什至反对“受信任的证书”被称为“受信任的” ...仅仅因为我知道你是谁,并不意味着我应该信任你...而且这并不意味着我应该相信您知道别人是谁。

更不用说,如果您从受信任的存储区中删除标准根证书,那么Internet上的许多站点将无法正常工作。

另一方面,如果您要处理的服务器/设备不需要一般的浏览功能,但要与特定的服务器(或一组服务器)通信,则一定要删除所有根证书,除了需要的白名单。
如果使用自己的内部CA,那就更好了....

评论


好的答案,但也许是另一个问题。当然,总是很想知道是否有未解决的问题...。也许我们应该在ssl标签的Wiki上标注我们一直认为人们应该问的各种问题。

–nealmcb
2011-2-27在20:16

@nealmcb,我同意-但正如您想说的那样,“您的威胁模型是什么?”我想指出,他在问一个错误的问题,以解决他所说的“问题”。

–AVID♦
2011-2-27在20:19

是的-我也想看看这个问题的更多背景知识,以找出引起问题的原因。但这是一个干净的问题,答案仍然是干净的。它只是应该放在关于ssl其他方面的其他更有用的问题的网络中,我们正在这个站点上慢慢编织这些问题:)

–nealmcb
2011-2-27在20:56



#5 楼

每个CA都会发布一个证书实践声明,描述它们如何保护自己的密钥,并在颁发证书之前验证对证书的请求。该文档所在位置的URL通常嵌入在CA颁发的每个证书中。假设所讨论的CA确实遵循了此策略文档,则应向您说明它们用来确定请求证书的实体的有效性的长度。寻找陈述,表明他们使用硬件安全模块或加密模块来保护其CA签名密钥来保护签名密钥,多因素身份验证和基于仲裁的授权来签署证书等。这些保护方法使其变得更加困难且昂贵让流氓第三方窃取签名密钥。

大量受信任的CA(我的Mac System根钥匙串有175个)在这里为您提供方便,以使HTTPS系统可用于您以及不问这些问题的地球上的每个人。当然,您可以将每个CA排除在此列表之外,除非您亲自审核了它们的做法。对于封闭系统,在该系统中,您可以控制所有端点,并且受信任方的数量有限,这是可行的。 Subversion版本控制系统不包含任何受信任的Root证书,但是欢迎您为每个客户端添加自己的证书。对于整个网络,我们发现使其可用的唯一方法是让带外受信任方(提供操作系统或浏览器的公司,无论您如何看待它们)提供受信任的列表。证书,使您可以连接到世界上几乎所有启用SSL的服务器。

您是否真的需要信任列表中的所有这些证书?可能不会。但是您的OS /浏览器供应商无法预期(也不应该控制)您想与谁开展业务,因此它们包含了所有功能。大列表的问题在于,您拥有来自所有辖区的所有羽毛的CA,以及各种验证方法,它们的处理方式完全相同。并非每个CA都具有相同的作用:我们已经看到了受损的经销商登录凭据甚至CA密钥受损的情况。有些CA要求提供公司注册证书和您的长子的承诺,而其他CA仅验证您可以在您要申请证书的域上收到电子邮件。但是,您的浏览器将每个CA完全相同地对待。

针对相同通用名称的流氓证书的防线将是在客户端上缓存原始证书:如果突然出现了来自不同CA的不同证书,则应该引起关注。我不知道今天的浏览器如何处理这种情况,而且我也懒得找出答案。

#6 楼

这种讨论总是使我想起这个Mozilla错误,要求包含一个新的CA。非常好笑,但很有见识。

#7 楼

我相信几年前美国政府曾试图通过立法,赋予他们权力以迫使CA产生第三方的有效证书以进行窃听或不进行窃听。我找不到这方面的证据,所以我可能想起了DefCon谈话中提到的Rory。

#8 楼


假设一些糟糕的政府希望看到计算机的SSL流量。强制默认CA颁发新证书的可行性如何?


谓词和问题无关。强制CA颁发新证书的难易程度或频繁程度无关紧要-可能的窃听者看不到您的数据,除非它们具有已安装证书中的私钥。 IIRC(但我建议您检查一下),CSR不包含私钥-因此CA无法以这种方式获得它。他们无法更改您的计算机使用的密钥。

但是,流氓CA可能会颁发伪造的证书-这样一来,您的站点就有可能遭受MITM攻击。 MD5格式和Etisalat的最新问题表明它并非不可能。

评论


您不需要伪造的证书,只需由强制CA签名的受信任证书即可进行MITM攻击。由于可以将Fortinet防火墙配置为进行MITM攻击,因此使此操作变得容易。 MITM在我的工作上失败的唯一原因是我的计算机没有安装并受信任的Fortinet证书,因此在启动Mac Mail(Gmail的证书无效)时出现警告。

–布拉德利·克雷德(Bradley Kreider)
2011-2-24在15:00

#9 楼

研究要在Windows PC中删除的证书时,首先应确保未删除系统所需的证书。如果尝试这样做,将会收到以下错误消息



这是带有证书列表的URL,这些证书不能从Windows系统http中删除: //support.microsoft.com/?id=293781

接下来,您应该考虑删除(测试删除)中间证书,因为它们仅“纯粹出于遗留原因”存在。

在评估删除所有剩余证书时,请考虑Microsoft根证书计划要求CA通过以下审核标准之一:


ETSI 102 042
ETSI 101 456
用于CA的WebTrust
WebTrust EV就绪审核
ISO 21188(请注意,它们不接受ISO 27001)

如果要从非MSFT浏览器(IE),则您可能需要查看这些CA质量准则。

限制

该程序还具有适用于密钥用法的其他审核。密钥用法仅限于以下用途:


服务器身份验证(SSL)= 1.3.6.1.5.5.7.3.1
客户端身份验证(SSL)= 1.3.6.1.5.5 .7.3.2
安全电子邮件(SMIME)EKU = 1.3.6.1.5.5.7.3.4
代码签名EKU = 1.3.6.1.5.5.7.3.3
时间戳EKU = 1.3.6.1.5.5.7.3.8
OCSP EKU = 1.3.6.1.5.5.7.3.9
加密文件系统EKU = 1.3.6.1.4.1.311.10.3.4

禁用的密钥用法

以下密钥用法被禁止通过以下程序:智能卡登录这是仅限企业的方案,因为需要Active Directory部署,并且必须将根添加到Active Directory中的NTAuth存储中。有关详细信息,请参见以下知识库文章。 http://support.microsoft.com/default.aspx?scid=kb;zh-CN;Q281245
数字版权此EKU已过时。 Windows Media DRM将其自己的XML格式用于许可证,而不使用X.509。
限定从属此EKU已过时,Windows会忽略。
密钥恢复企业CA方案。
文件恢复此EKU已过时,并且被Windows加密文件系统(EFS)忽略。
所有应用程序策略我们不能授予“所有用途”,因为这必然允许企业专用的EKU和其他不可接受的EKU。复制企业方案
证书请求代理
企业CA方案
密钥恢复代理企业CA方案
CA加密证书
企业CA方案

接受条件

此外,在根目录上添加通用或政府CA之前,必须满足以下条件:


CA必须提供以下要求的信息(请参阅第1步。请与Microsoft联系),并获得该计划成员资格的初步批准。
CA必须提供一个由CA的根证书颁发的测试证书,用于测试。可选地,CA可以向Microsoft提供可公开访问的服务器的URL,在该URL中可以验证从其根证书颁发的证书。 (有关详细信息,请参阅常见问题解答)。
CA必须完成Microsoft CA协议。只有在您完成了申请流程的第1步并获得了您的申请的初步批准之后,我们才会提供该协议。
根证书必须符合下面的“技术要求”部分。特别是,对于任何根和所有颁发CA,我们都要求RSA 2048位模数的最小加密密钥大小。 Microsoft将不再接受具有任何到期的RSA 1024位模数的根证书。我们希望新的根从提交之日起至少有效8年,但在2030年之前过期,尤其是当它们具有2048位RSA模数时。
从根证书颁发的证书必须支持CRL分发点扩展。 CRL分发点应指向可公开访问的位置。
CA必须具有成文的撤销策略,并且CA应该能够撤消其颁发的所有证书。

CA必须每十二(12)个月完成一次审核并将审核结果提交给Microsoft。审核必须涵盖Microsoft将通过分配扩展密钥用法(EKU)启用的完整PKI层次结构。我们启用的所有证书使用情况都必须定期审核。审核报告必须记录PKI层次结构的完整范围,包括颁发审核所涵盖的特定类型证书的任何子CA。合格的审核包括:



用于证书颁发机构的WebTrust v1.0或更高版本,由许可的WebTrust for CA审核员完成,
ETSI TS 101 456 v1.2.1或更高版本,
/> ETSI TS 102 042 V1.1.1或更高版本,或者
ISO 21188:2006,“金融服务的公共关键基础结构-做法和政策框架”,由CA审核员的授权WebTrust或



















我们保留更改上述审核和/或将来接受其他类似审核的权利。

技术要求

新的根证书必须满足以下技术要求:


根证书必须为x.509 v3证书。
主题名称必须包含有意义的CA名称(例如,不能为“ Root”或“ CA1”)
基本约束扩展:cA = true
密钥用法(如果存在):仅keyCertSign和cRLSign

根密钥大小要求基于NIST SP 800-57:

     RSA greater or equal to 2048-bit modulus

     ECC greater or equal to P256 modulus


哈希算法必须至少为SHA1。不接受MD2,MD4或MD5哈希。
对于大于或等于RSA 2048位模数的根密钥,根证书必须在提交后至少8年且不迟于2030年到期。
中级CA证书不包括在根CA程序中(有关更多信息,请参见常见问题)。
CA不会颁发MD2,MD4或MD5从属或最终证书。由本程序分发的任何根证书中的实体证书,于2009年1月15日生效。
现有的(“旧版”)1024位RSA根证书可以由本程序分发,直到NIST截止日期为2010年12月31日为止,除非Microsoft另行提供。
CA可以从本程序分发的根证书中颁发1024位RSA证书,直到NIST截止日期为2010年12月31日为止。


#10 楼

使用MD5弱点创建恶意CA的演示:


原始研究
新闻报道


评论


请在答案中包括一些实际的相关内容-不仅仅是链接。

– Iszi
11年8月30日在18:42

要点,但它回答了第一个问题:可行性如何:非常。

–布拉德利·克雷德(Bradley Kreider)
11年8月31日在18:28

#11 楼

尝试着眼于第二个问题。

问题“我应该删除哪个默认受信任的根证书?”基本上取决于您与谁打交道。

您将“仅”需要信任对您所连接的任何网站进行签名的所有CA。

对于奶奶类型总是访问相同站点的用户,可能只有少数几个CA就足够了,而对于大量的Internet用户来说,列表却不会*如此迅速地增长。违反直觉的是,一些CA被大量使用(包括太大到无法使用的CA),而另一些CA则很少像几乎是地理上的CA那样在Internet上使用。

工具
缺省情况下,来自securitybydefault的SSLCop可能有助于阻止您不信任/不太可能需要的国家(例如,您不希望访问Brobdingnag政府的网站,而Brobdingnag政府恰好是该CA的主要用户):
http ://www.security-projects.com/?SSLCop

但是,如果您不信任太多的CA,最终将无法获得对用户所需网站的信任锚(并且无论是否有安全警告,都将继续访问它们),这同样很糟糕。

#12 楼

自2012年6月12日起,Microsoft发布了一个新的更新程序,它将禁用不受信任的根证书和任何其他报告给Microsoft的不可信证书。

此更新可用,目前尚不清楚更新已通过Windows Update发布,或者它是带外更新。

http://support.microsoft.com/kb/2677070