背景

我是密码学和网络安全领域的新手,在研究非对称密钥加密时,我了解了中间人攻击的可能性。 >
为了缓解这种威胁,人们想出了一种证书颁发机构,它通过向您提供用CA自己的私钥签名的各自的公钥来“证明”第三方的信任。问题

这就是让我感到困惑的地方。授权)?

如果证书颁发机构担保通用网站以确保信任和安全,那么谁担保证书颁发机构?

评论

我认为一般的想法是,“尽管对于某些随后的受保护的连接而言,攻击对拥有所有权验证很重要的连接发生的可能性要小得多,但对许多后续的受保护的连接却更是如此”。
您所发现的是一个基本原理:必须有通过非加密技术保护的密钥交换安全通道。加密是一种将密钥交换的安全性变成消息的安全性的手段。必须有一种安全地获取不依赖加密的CA公钥的机制。

IT安全性答案是:浏览器制造商将验证CA。他们可以并且会从浏览器中删除CA,以防其行为不检甚至安全漏洞(例如)。

因为这实际上是一个实际的安全问题,所以这是社会上与人类有关的问题,而不是纯粹的密码/数学问题。您可以在security.stackexchange.com/
上问这些问题
@MichaelHampton要采取严厉制裁需要相当多的不当行为。 (几年前,Comodo下车很轻松。)

#1 楼

Maarten Bodewes的答案是正确的,但我认为您问题的核心是人们在理解证书和CA时面临的主要障碍。我认为有必要详细说明它是如何工作的,我认为您会丢失。如果您正在运行Windows,则可以通过运行certmgr.msc来查看它们的含义(必须在搜索中键入完整的名称)。在该应用程序中,您将看到许多文件夹。其中之一被称为“受信任的根证书颁发机构”。如果在该文件夹下展开“证书”,您将看到一长串适用于各种CA的证书。他们出示的证明书的亲本包括此商店中的证明书。我在这里稍微简化了一点,但这是核心思想。例如,如果我在google.com上查看证书,则祖父母证书的友好名称为“ Google信任服务-GlobalSign根CA-R2”。我看了一下商店,然后看到了可以通过查看'thumbprint'来验证的确切证书。

所以没人能根证书的原因是您不打算使用根证书。要获得您信任的CA,您已经在计算机上安装了它们。如果使用受信任的CA商店中没有的带有CA证书的网站进行浏览,则浏览器应向您发出很多警告,表明该站点不受信任。我希望这有帮助。附带说明是,这还应帮助您了解导入新的受信任的根证书会有多少风险。例如,假设您正在做一些实验并生成自己的“ CA”证书。您可以将其导入为受信任的CA并小心!现在,您可以签署浏览器信任的证书。但是请考虑一下,如果其他人可以访问您为该根CA生成的私钥,那么会发生什么情况。他们现在可以为任何网站创建证书,除非您在所访问的每个网站上检查证书链,否则您可能会受到MiTM攻击。

评论


$ \ begingroup $
对于当前受支持的Windows(至少为8.1和10,可能更早),该列表不完整;请参阅security.stackexchange.com/questions/81491/…
$ \ endgroup $
–dave_thompson_085
19/12/6在5:48

$ \ begingroup $
另外,我认为Firefox使用它自己的证书存储,而不是系统证书。
$ \ endgroup $
–伊斯梅尔·米格尔(Ismael Miguel)
19/12/6在12:51

$ \ begingroup $
作为导入证书的后续措施:您在工作场所使用的机器可能具有一个或多个雇主证书作为受信任的根。如果是这样,则意味着您的雇主可以在您访问的任何网站上创建MITM。
$ \ endgroup $
– dbush
19/12/6在16:36

$ \ begingroup $
@dbush:您的雇主和其他人可以访问其MITM设备正在使用的私钥,甚至可能不是特定于其安装,而是在其他地方的同一产品中重复使用。
$ \ endgroup $
–R .. GitHub停止帮助ICE
19/12/7在22:11

$ \ begingroup $
公司通常会在员工的计算机上安装通配符证书CA颁发机构,以便他们看到所有浏览器安全连接的纯文本。他们本质上执行中间人攻击。
$ \ endgroup $
– Maxim Egorushkin
19/12/11在10:57



#2 楼

在某些方面您必须信任某些东西。操作系统附带“根”证书颁发机构。这些证书既可以在安装操作系统时安装,也可以通过安全连接从至少一个与操作系统一起安装的证书中下载。

您可以(和许多开发人员一样)添加自己的证书根证书到计算机的受信任根目录。在这种情况下,您可以使用证书对其他证书进行开发,并且您的计算机或另一台安装了证书作为受信任的根证书的计算机上的浏览器和应用程序将很高兴将连接显示为安全。

因此,您在浏览器中转到https://www.mybank.com,浏览器将收到证书。该证书具有信任链。在Chrome中,您可以转到开发者控制台的“安全性”标签,并查看证书和信任链,这将导致可信任的根证书颁发机构。在Windows 10上,您可以使用“管理计算机证书”查看计算机的证书。

注意我的意思是该站点的内容:



HDC-PROXY01-1向stackexchange.com颁发证书的地址很奇怪,是吗?事实证明,我的雇主正在受到MITM攻击,他偷窥了我在工作中所做的一切。他们为我提供的计算机为此目的而安装了公司自己的证书,称为“受信任的根证书颁发机构”。他们的代理可以拦截安全连接并提供其证书而不是属于您要访问的站点的证书,使用站点的实际证书通过安全连接将数据代理到该站点,然后使用代理证书重新加密数据寄回给我我的浏览器信任代理的证书,因为它是在我信任的商店中用公司的证书签名的。

评论


$ \ begingroup $
._。我希望你的老板不会看到这个帖子
$ \ endgroup $
– FireCubez
19/12/8在13:51

$ \ begingroup $
奇怪的是,我希望你的老板看到这个帖子
$ \ endgroup $
–ellman121
19/12/12在9:45

#3 楼

否,因为您使用的浏览器在安全性存储中具有内置功能,因此完全可以创建到CA的安全连接。

通常,您只能请求特定域的证书,例如通过使用特定于域的邮件地址。通常,如果可追溯性,您还应该为提供少量服务的服务付费。 >

对于数字签名证书,通常需要某种形式的证明来证明您对组织有控制权。例如,请参阅此处可以提供的文档列表。显然,许多CA并不那么在乎,并且可以肯定该系统在许多方面都已损坏。要求提供代码签名证书时,该列表也已链接到该列表。银行这些安全证书在密码学方面不一定更安全,但原则上它们应该在证书的颁发中增加一定程度的信任(请参阅下面的评论中的讨论)。之所以用过去时表示,是因为显然还没有真正满足使网络更安全的EV证书标准。

评论


$ \ begingroup $
银行证书如何“更安全”?他们使用与免费证书完全相同的加密技术。他们所拥有的只是其他身份信息(尽管经过CA验证,但仍可能会产生误导)。
$ \ endgroup $
–user2313067
19/12/5在22:08

$ \ begingroup $
好吧,他们有更多经过验证的信息。到目前为止,除散列算法外,加密对安全性的影响很小。这种验证与例如密钥大小和算法(如果不是更多的话)。当然,就像任何事情一样,实现可能会被破坏,但是从原则上(当然,我也确实相信),它们肯定更安全。
$ \ endgroup $
–马腾·博德威斯♦
19/12/5在22:18



$ \ begingroup $
这是不正确的。额外的验证已被大大夸大了。在所有主流浏览器中均已弃用它们。 troyhunt.com/extended-validation-certificates-are-dead具有良好的书写效果。他们确认的唯一一件事是,在某些国家/地区有一个注册的法律业务,名称明确。它不必是唯一的。有关示例,请参见stripe.ian.sh。只需使用Letsencrypt。
$ \ endgroup $
– SAI Peregrinus
19/12/5在23:03

$ \ begingroup $
@SAIPeregrinus嗯,我了解事物的理论。我暂时将其保留,但如果实际上是破产的话,那就破产了。
$ \ endgroup $
–马腾·博德威斯♦
19年12月6日0:00

$ \ begingroup $
@DamianYerrick代码签名是一个非常不同的方案,但是会引出一个相同的问题:我们信任谁签名,我们信任他们检查什么?对于网站或软件下载而言,检查某人是否支付了10美元,或者是否已经注册了一个具有特定名称的公司并不是特别有用。
$ \ endgroup $
–IMSoP
19/12/6在10:17

#4 楼

在这种情况下,我发现一个有用的想法是,将密码系统视为实现担保安全性的绝对方法,而不是将较大的问题减少为希望较小但仍然潜在的其他问题的方法。从这个角度来看,您基本上掌握了以下几点:


公共密钥密码术是一种减少与另一方建立机密和认证通道的问题的方法。与该方建立经过身份验证的通道。
公共密钥基础结构是一种减少与许多不同方建立经过身份验证的通道的问题的方法,可以减少建立具有较少的可信任证书颁发机构的经过身份验证的通道的问题。
但是不同之处在于,这种表达主题前景的方式本身就是一个问题,实施纯加密解决方案后剩下的问题本身也可能是一个问题,其解决方案可能需要非加密元素。例如,操作系统供应商具有根证书程序(例如,Microsoft,Apple),该程序决定将哪些根证书与它们的操作系统捆绑在一起。但是,即使我们假设这些程序是可靠的(不是),这也不会阻止联想在笔记本电脑上预装广告软件,该软件捆绑了容易被黑客入侵的根证书,从而对用户的SSL连接以便向他们展示广告。这是您担心的攻击的真实示例:


我们不能仅仅使用相同的逻辑来拦截和破坏用户与用户之间的信息传输。 CA(证书颁发机构)?如果证书颁发机构担保通用网站以确保信任和安全,那么谁担保证书颁发机构?


因此,答案是肯定的,有可能会损害根CA捆绑包的交付,并且对此没有纯粹的加密解决方案,因为信任树必须扎根并且加密结束,而您将剩下平凡的东西例如您的计算机供应商是否值得信赖。降低风险的方法是采用非加密措施来验证您购买的计算机没有恶意配置的信任存储(例如,从已完成的副本中首次获得时,进行全新的操作系统安装)尽力验证)。

#5 楼

这是一个非常好的问题。

公钥证书的目的是对声明进行身份验证,即您正在与要与之通信的实体进行通信。具体来说,通过对使用的密钥材料进行身份验证来防止中间人攻击(MitM)。

您的问题如下。假设A和B想要使用其公钥$ K ^ \ mathsf {pub} _A $和$ K ^ \ mathsf {pub} _B $建立安全通道。如果他们尚未建立安全的密钥交换,则普通交换容易产生MitM。因此,您利用了一个受信任的实体(在PKI中为CA,在Kerberos中为KDC),该实体通过证书保证交换后的公钥的真实性(请参阅下文)。非对称加密的巨大优势在于,证书一旦颁发,便可以为许多通信对等体重复使用多次。将其与不能重用Kerberos票证的对称情况进行比较-这是证书的使用寿命比Kerberos票证更长的原因之一。剩下的唯一问题是如何在A与CA之间以及B与CA之间建立安全通道。这不可能以可信赖的方式临时发生,这是您问题的中心。

因此,似乎利用CA可以解决问题且没有任何进展(甚至更糟,您引入了一个新的关键依赖性),但是有一个重要的区别:您只需要使用一个信任锚建立安全通道-首先使问题变得可行。在您和信任锚之间建立信任的特殊途径。这可以通过亲自会面或其他合适的带外机制进行。在Windows Active Directory环境中,这是使用凭据在加入域的计算机上进行身份验证的方法。这里的窍门是设计过程以使其能够很好地扩展。但是,仍有许多信念可以实现:

原则上,公钥证书的工作方式与任何其他类型的证书(包括现实世界中的证书)一样。 X)$代表某些$ X $

如果A以一种不可伪造的方式发布断言
如果某个实体Y信任A

,则Y实际上别无选择,只能相信$ \ mathsf {Property}(X)$是正确的。

对于X.509样式PKI中的公钥,意味着A是CA,$ \ mathsf {Property}(X)$是“此处的密钥$ K ^ \ mathsf {pub} _X $属于实体$ X $”的声明,并且不可伪造的方式是通过具有足够密钥长度的安全数字签名(为简单起见,我假设所有相关算法均已完美实现...)。此外,以下每个条件都至关重要:


Y需要拥有CA公钥的真实副本。
CA必须是可信赖的,这意味着,他们知道自己的所作所为,并且没有腐败或崩溃。
涉及的所有设备都是值得信赖的(即不受特洛伊木马,后门之类的侵扰)

其中的每一个都是非常棘手的,并且很难实现-甚至根本无法实现。

以可信赖的方式获取公钥/>
我认为这是引起这个问题的问题。由于任何人都可以创建任意密钥对,并由此创建任意证书,所以诀窍是区分小麦和谷壳,即区分真假根证书。这可以通过安全的渠道来完成,但是为此您需要某种可信赖的“种子”。例如,如果您考虑信任之网的工作方式,特别是传说中的PGP密钥签名方,则所有参与的参与者都将面对面并相互检查带有照片的证件(另一种证书...)。但是,这无法缩放。

另一方面,如果您考虑如何在Web浏览器和操作系统中分发根证书,则会发现您依赖软件供应商。现在,曾几何时,人们想到了具有一个最终受信任的根的全局PKI,在该处几乎可以在任何地方(例如,在印刷出版物中)张贴公钥或其数字指纹的副本。当然,关于可能的人,没有/可想而知,因此这个职位仍然空缺。嗯,不是完全,软件供应商默默地填补了这个空缺,并且似乎暂时没有更好的选择,这似乎被接受了,并且某种程度上,这似乎可行(但是请参见下文)。
企业和政府机构之类的封闭组织是一类特殊的案例-每当您进入该组织时,便会获得PC,您的帐户,并获得密钥对和组织根CA的公钥(更多信息)确切地说,它通常存储在Windows Active Directory中,AD体系结构及其协议(如Kerberos)提供了安全通道。)

CA可信度

正确运行根CA这并不容易,尤其是因为它们是非常有吸引力的攻击目标。您需要详细的程序,员工的背景检查,定期的培训,合适的房间等,等等。是的,浏览器论坛和其他机构可能进行了审核,但是Commodo和DigiNotar的著名故障表明了它的难度是正确运行CA的方法。 />
这是另一个很难实现的属性。带有通用操作系统的通用硬件允许您安装所需的任何软件-巧合的是,不需要的任何软件(包括恶意软件)也可以安装。普通的教科书描述了一个加密过程(比如说),爱丽丝用她的密钥K或类似的东西加密消息M。但是爱丽丝是谁?如果那是一个人,则该陈述将被读为爱丽丝指示她的计算机执行...。鉴于我们过去看到的Trojan恶意软件(尤其是“替代”在线银行的Trojan),可以很容易地认为该计算机的功能与预期的或预期的完全不同,而假装成其他情况。 ?

老实说,没人知道。布鲁斯·施耐尔(Bruce Schneier)和其他人为此写了很多书。但是据我所知(尽管我没有密切关注),整个建筑从未在法庭上进行过全面的辩论。在此之前,它保持了我之前所说的内容:尽管您必须进行信念上的许多飞跃,但现有的体系仍会以某种方式起作用,而且还没有被广泛接受的替代方案。

#6 楼

我想谈谈马尔滕·博德威斯的回答。尽管过去,扩展验证(EV)证书可能需要进一步的人类身份验证来提高您正在浏览的网站的合法性,但这并不意味着它并未被用于网络钓鱼。

EV证书的一个缺点是人工验证部分:人类容易犯错误,一个经验不足的简单工人可能会不小心签发EV证书,以诱骗一家不太知名的公司。

另一个法律是允许在不同业务领域运营的公司使用相似名称,或在不同国家/州运营的公司使用相似名称。这可以在特洛伊·亨特(Troy Hunt)(《我曾经被拥有》的创作者)中清楚地看到:扩展验证证书(真的,真的)已经死亡。 X国/州X中的公司(例如James Food)可以在Y国/州Y中使用类似名称的公司(James Foods),或者X国/州中作为食物链(Ben's)运营的公司可能具有类似名称在同一国家/州作为旅馆(本旅馆)经营的公司。除了在国内或国际上更改法律外,没有其他方法可以解决此问题。

进一步增加问题的是EV证书的成本:尽管EV证书销售商(例如Comodo CA)列出了多个域名的价格统一费率(每年398美元),每增加一个域名,价格就会提高到139美元(域名)。对于具有多个子域的大型网站而言,这特别昂贵,而对于使用通配符并提供子域作为服务一部分的网站(例如,userX.wordpress.com或userX.github.io)而言,这是不可能的。 />由于Firefox开发论坛提供的上述问题(提供了错误的附加安全感),诸如Google Chrome,Firefox,Safari和Edge之类的浏览器也正在删除浏览器上的EV指示器:运送意图:移动扩展验证信息超出网址栏

评论


$ \ begingroup $
电动汽车概念的问题从一开始就是根本性的,并且显而易见,因为任何对安全性有一般理解的人都可以通过阅读电动汽车供应商的商业“宣传”来看到:他们将电动汽车作为“高质量”的产品引入=“在提供证书之前,我们将真的检查信息”,这实际上是证书的全部重点,因此他们实际上是在写“如果您付给我们更多的钱,我们将尽我们所能”。因此,很明显,这是商业性产品,而不是面向安全性的产品,或者他们没有暗示他们仍然会出售有缺陷的产品。
$ \ endgroup $
–好奇
19/12/7在18:48

#7 楼

这是一个有洞察力的问题,可以正确地将注意力集中在问题的困难部分。这是他们的全部工作。

对于Web PKI(网站使用的证书以及您在Internet上使用的大多数内容),有公认的规则通常被称为证书颁发机构如何执行的十大祝福方法。您绝对不希望每次访问网站时都采取十种有福方法中的任何一种,甚至是相对简单的方法,例如发送电子邮件,然后等待网站所有者单击确认链接,以便您知道如果每个人都只需要访问一个网站就必须这样做,这是不切实际的。

CA可以超越这些规则,甚至可以更彻底。例如,流行的Let's Encrypt服务使用一种方法进行了讨论,在这种方法中,他们的验证将在世界范围内从多个角度同时进行,从而避免攻击者仅在涉及Let's Encrypt服务器时假冒您的网站。

并且可以通过植根于DNS系统DNSSEC的密码术来进一步保护某些方法,以便冒名顶替者需要进入域名注册机构才能获取任何名称的证书通过它进行注册。

但是,确实可以肯定,CA所做的最终只是您可以自己进行的更彻底的调查,主要的好处是每个用户都可以从验证中受益。只发生一次。如果坏人能够欺骗验证过程(在某些情况下确实会发生),那么该系统确实会失败。

对于最有可能遭受此类攻击的站点,如今,最后一道防线是证书透明系统。没有CT日志发布证明的情况下,包括Chrome和Safari在内的浏览器将不接受证书,并且这些日志可供公众检查。因此,对于感觉冒充冒充风险的站点,可以选择监视那些日志中的意外证书,以便在发现任何意外时立即采取措施。

评论


$ \ begingroup $
系统地完成了哪些“彻底的调查”?
$ \ endgroup $
–好奇
19年12月12日,0:32

$ \ begingroup $
据我所知,任何CA所做的唯一真正调查是从许多远程位置探测服务器证书,这使得MitM攻击更加困难。某些“ EV”证书可能需要传真信头,但CA不知道信头的外观,因此这仅仅是攻击者的社会工程学要求。
$ \ endgroup $
– Mikko Rantalainen
19/12/13在6:41

$ \ begingroup $
curiousguy-例如,鲍勃想要他的网站bobs-plumbers.example获得Some CA的证书。方法3.2.2.4.4构造的电子邮件如下所示:某些CA查找bobs-plumbers.example的WHOIS记录,并发现联系人为bob@example.com,因此他们将电子邮件与代码一起发送到bob@example.com以及指向Some CA网站的验证链接。 Bob会通过链接获取电子邮件并复制并粘贴代码。某些CA现在已经验证,鲍勃-bobs-plumbers.example的所有者-想要此证书。
$ \ endgroup $
–tialaramex
19/12/14在18:53

#8 楼

一般而言,这里有几个很好的答案,可以提供有关PKI系统和证书颁发机构的大量信息,但是没有一个人专门回答以下问题:“谁为证书颁发机构提供担保?”

这个问题是证书颁发机构(CA)通过全面的年度审核来保证自己。审核验证CA是否满足或超过证书颁发机构/浏览器论坛(CA / B论坛)(由CA,浏览器和其他相关方组成的集合)建立的法规和标准。 CA / B论坛共同努力,为发布用于网站,代码签名和其他用途的数字证书建立准则。

受信任的CA将在其网站上加盖印章,以表明它们是SysTrust或WebTrust认证的网站。引用您单击图章时出现的解释,“适用的SysTrust或WebTrust保证图章表示该站点已由独立会计师检查。此外,该图章表示从业人员的报告(请参阅下文)管理层断言所依赖实体的业务符合适用的《信托服务原则和准则》。由美国注册会计师协会和加拿大特许会计师协会共同开发和管理的系统和电子商务服务。通过由独立从业人员进行的审查表明对信托服务标准的遵守,实体享有显示保证书的权利。“虽然每个操作系统,浏览器,甚至硬件/软件制造商都可以拥有自己的已批准CA信任库,并在这些信任库中输入自己的标准,但他们几乎都要求首先列出的证书颁发机构必须获得不合格的审计报告,表明根据CA / B论坛的规定,遵循CA的政策和程序符合AICPA / CICA证书颁发机构原则和标准的WebTrust。 DR:所有CA都必须满足一系列行业法规。为了证明他们遵守这些规定,CA接受了年度审核,其结果可通过WebTrust Seal在该CA的网站上查看。

#9 楼

在许多情况下,根CA受到损害。但是,整个机制的一部分是根CA在网络中一起工作。他们的CA能力取决于其他根CA签署的持有的信任证书。一旦发现其中一个CA不可信,就立即将完全相同的机制“踢掉”,因为签署相关根CA可信度的证书被宣布为无效。因此,尽管通过互联网传播需要花费一些时间,但该特殊CA的证书又变成无效的,由自我更正组织解决了。

评论


$ \ begingroup $
是的,当CA被人发现时,可能会被打一巴掌。但是在许多情况下,流氓证书会逃避检测(谁保留了自己设备信任的证书日志)。一旦发现,合格的CA将很难证明(甚至是正确的)证明他们遵循了自己的政策。得知一个称职的三字母代理公司(我居住的四个字母)能为任何事情迅速获得有效证书,我不会感到惊讶。
$ \ endgroup $
–fgrieu♦
19/12/6在11:44



#10 楼

我的回答是:没人。各种公共CA都不提供任何保证,或者具有相当有限的保证。至于存储在浏览器中的证书,我认为黑客安装自己的伪造证书不会太困难。我认为公共PKI / CA结构“比替代方案更好”,但仅此而已。由银行和其他组织使用的受严格控制的私有PKI更好。

请参阅Carl Ellison和Bruce Schneier的文章。

#11 楼

是的,正如其他人所解释的那样,(基本上)预先在浏览器中加载了一组“受信任”授权机构的公钥。 。

一个重要的问题是:谁来决定“信任”哪些CA?答案是,对于大多数一般用户,这由浏览器供应商确定。浏览器供应商认为应该信任的CA可能与最终用户实际希望信任的CA不同。因此,您可以查看和更改列表。许多组织的IT部门将使用一组不同的受信任CA配置最终用户的计算机。例如,在政府和军事组织中,这是很常见的。实际上,某些组织将使用受信任的CA配置最终用户的计算机,专门用于对往返Internet的流量进行MITM检查。即使使用TLS加密,这也允许他们打开并检查所有流量。如果这样做,组织应告知用户其通信受到监视。

#12 楼

在科学界,CA受到IGTF的审查:可互操作的全球信任联合会。 IGTF设置了CA操作方式的规则,并且对可信赖的CA进行了认证。可信度是通过审核确定的。 IGTF定期编译包含可下载和安装的认可CA根证书的列表。不信任的CA从该列表中启动。
IGTF由区域PMA(政策管理机构)组织;


用于北美和南美的TAGPMA
用于欧洲的EUGridPMA ,非洲,中东
亚太地区的APGridPMA

另请参阅https://www.igtf.net/