Certificate authority (Wiki)
https://en.wikipedia.org/wiki/Certificate_authority
本文完全机器翻译,未经人工润色。
在密码学中,证书颁发机构或证书颁发机构(CA)是颁发数字证书的实体。数字证书由证书的指定主体证明公钥的所有权。这允许其他人(依赖方)依赖签名或对与经认证的公钥相对应的私钥所做的断言。CA充当受信任的第三方-由证书的主体(所有者)和依赖证书的一方信任。这些证书的格式由X.509标准指定。
证书颁发机构的一个特别常见的用途是对用于万维网的安全浏览协议HTTPS中使用的证书进行签名。另一个常见用途是由各国政府签发身份证,用于电子签字文件。
概述。
可信证书可用于通过Internet创建到服务器的安全连接。证书是必不可少的,这样才能绕过恰好在到达目标服务器的路径上的恶意方,因为目标服务器的行为就好像它是目标。这种情况通常被称为中间人攻击.。在启动安全连接之前,客户端使用CA证书对服务器证书上的CA签名进行身份验证,作为授权的一部分。通常,客户端软件(例如浏览器)包含一组受信任的CA证书。这是有道理的,因为许多用户需要信任他们的客户端软件。恶意的或受损的客户端可以跳过任何安全检查,仍然欺骗其用户相信否则。
CA的客户端是服务器监控器,它们调用其服务器将授予用户的证书。商业CA负责颁发证书,他们的客户期望CA的证书包含在大多数Web浏览器中,以便与认证服务器的安全连接能够开箱即用。信任特定证书颁发机构的Internet浏览器、其他设备和应用程序的数量称为无处不在。Mozilla是一家非营利性企业,它的产品发布了几个商业CA证书。[1]虽然Mozilla制定了自己的策略,但CA/Browser论坛也为CA信任制定了类似的指导方针。单个CA证书可以在多个CA或其转售商之间共享。根CA证书可能是颁发具有不同验证要求的多个中间CA证书的基础。
除了商业CA,一些非营利组织免费向公众发放数字证书;著名的例子是CACERT和Let’s Encrypt。
大型组织或政府机构可能有自己的PKI(公钥基础设施),每个PKI都包含自己的CA。任何使用自签名证书的站点都充当自己的CA。
浏览器和其他类型的客户机的特点是允许用户随意添加或删除CA证书。虽然服务器证书通常持续的时间相对较短,但CA证书会进一步扩展,[2]因此,对于反复访问的服务器来说,导入和信任颁发的CA是不太容易出错的,而不是每次更新服务器证书时都确认安全豁免。
较少情况下,可信任证书用于加密或签名消息。CA还提供最终用户证书,可以与S/MIME一起使用。然而,加密需要接收方的公钥,而且由于加密消息的作者和接收方显然相互了解,受信任的第三方的有用性仍然局限于对发送到公共邮件列表的消息进行签名验证。
提供者。
在世界范围内,证书颁发机构的业务是零散的,由国家或区域供应商主导其国内市场。这是因为数字证书的许多用途,例如具有法律约束力的数字签名,都与当地法律、法规和证书颁发机构的认证计划相联系。
然而,全球可信任的TLS/SSL服务器证书市场主要由少数跨国公司持有。由于技术要求,这一市场有很大的进入障碍。[3]虽然没有法律要求,但新的供应商可选择每年进行安全审计(例如北美证书颁发机构的WebTrust[4]和欧洲的ETSI[5]),以作为受信任的根列入网络浏览器或操作系统。Mozilla Firefox Web浏览器中有180多个根证书,代表了大约80个组织。[6]OSX信任200多个根证书。截至Android4.2(JellyBean),Android目前包含100多个CA,每个版本都会更新这些CA。
在2014年11月18日,包括电子前沿基金会、Mozilla、思科和Akamai在内的一些公司和非营利组织宣布,让我们加密吧,这是一个非营利认证机构,它提供免费的域验证X.509证书和软件,以便安装和维护证书。[8]让我们加密是由新成立的互联网安全研究小组(Internet Security Research Group)运营的,这是加州的一个非营利组织,根据第501(C)(3)条被认定为免税的。
根据监控活跃tls证书的行业标准netcraft 2015所述,“尽管全球(Tls)生态系统具有竞争力,但它由少数几个主要cas主导–三个证书颁发机构(赛门铁克(Symantec)、科莫多(Comodo)、高爸爸(Godp))占所有在面向公众的web服务器上颁发的证书总数的四分之三。自[我们]调查开始以来,赛门铁克(或赛门铁克收购它之前)一直占据榜首,目前它只占所有证书的不到三分之一。为了说明不同方法的影响,在百万个最繁忙的站点中,赛门铁克颁发了44%的有效、可信的证书–大大高于其整体市场份额。“[10]
验证标准。
为HTTPS服务器颁发大量证书的商业CA通常使用一种称为“域验证”的技术对证书的接收者进行身份验证。用于域验证的技术因CA而异,但在一般情况下,域验证技术旨在证明证书申请者控制给定的域名,而不是关于申请者身份的任何信息。
许多证书颁发机构还提供扩展验证(EV)证书,作为域验证证书的一种更严格的替代方法。扩展验证不仅用于验证对域名的控制,而且用于验证证书中包含的其他标识信息。有些浏览器在地址栏中的绿色框中显示此附加标识信息。EV作为域验证弱点的解决方案的一个限制是,攻击者仍然可以获得受害者域的域验证证书,并在攻击期间部署该证书;如果发生这种情况,受害者用户可以观察到的区别是没有带有公司名称的绿色条。至于用户是否会意识到这种缺失是否意味着攻击正在进行,存在一些问题:在2009使用InternetExplorer 7进行的测试显示,用户没有注意到IE7的EV警告,但是微软目前的浏览器边缘(Edge)显示,EV和域验证证书之间的差别要大得多,域验证证书有一个空心的灰色锁。
验证弱点。
域验证受到某些结构安全限制。特别是,它总是容易受到允许对手观察CA发送的域验证探测的攻击。这些攻击可能包括对DNS、TCP或BGP协议的攻击(这些协议缺乏TLS/SSL的加密保护),或路由器的危害。这种攻击可能发生在CA附近的网络上,也可能发生在受害者域本身附近。
最常见的域验证技术之一是发送包含身份验证令牌或链接的电子邮件,该电子邮件地址可能在管理上负责该域。这可能是域名WHOIS条目中列出的技术联系人电子邮件地址,也可能是管理员@、管理员@、网站管理员@、主机主@或邮政主管@该域之类的管理电子邮件。[14][15]一些证书颁发机构可能会接受使用root@、[引文所需]info@或域内支持@的确认。[16]域验证背后的理论是,只有域的合法所有者才能读取发送到这些管理地址的电子邮件。
域验证实现有时是安全漏洞的来源。在一个例子中,安全研究人员表明,攻击者可以获得Web邮件站点的证书,因为CA愿意使用诸如ssladmin@domain.com之类的电子邮件地址来访问domain.com,但并非所有的Webmail系统都保留了“ssladmin”用户名,以防止攻击者注册它。
在2011之前,没有可用于域验证的标准电子邮件地址列表,因此电子邮件管理员不清楚哪些地址需要保留。第一个版本的CA/浏览器论坛基线要求,通过了11月2011,指定了一个名单这样的地址。这允许邮件主机保留这些地址以供管理使用,尽管此类预防措施尚未普及。在2015,一名芬兰男子在微软Live.fi的芬兰版上注册了用户名“主机”,并获得了一个经过域名验证的live.fi证书,尽管他并不是该域名的所有者。
签发证书。
CA颁发包含公钥和所有者身份的数字证书。匹配的私钥不是公开可用的,而是由生成密钥对的最终用户保密。证书也是CA确认或确认证书中包含的公钥属于证书中所述人员、组织、服务器或其他实体的证书。CA在此类方案中的义务是验证申请者的凭据,以便用户和依赖方可以信任CA证书中的信息。CA使用各种标准和测试来实现这一点。本质上,证书颁发机构负责说“是的,这个人就是他们所说的那个人,我们CA证明了这一点”。
如果用户信任CA并能够验证CA的签名,那么他们还可以假定某个公钥确实属于证书中标识的任何人。
例子。
公钥密码可以用来加密双方之间通信的数据.。当用户登录到实现HTTP安全协议的任何站点时,通常会发生这种情况。在这个示例中,让我们假设用户登录了他们银行的主页www.bank.examplesto做在线银行业务。当用户打开www.bank.examplesPage时,他们会收到一个公钥以及他们的web浏览器显示的所有数据。公钥可用于将数据从客户端加密到服务器,但安全过程是将其用于确定临时共享对称加密密钥的协议中;这种密钥交换协议中的消息可以用银行的公钥加密,只有银行服务器具有读取它们的私钥。
接下来的通信使用新的(一次性)对称密钥,因此当用户向银行页面输入一些信息并提交页面(将信息发送回银行)时,用户输入到页面的数据将由他们的Web浏览器加密。因此,即使有人能够访问(加密)从用户传输到www.bank.example的数据,这种窃听者也无法读取或解密它。
只有当用户能够确定他们在Web浏览器中看到的是银行时,这种机制才是安全的。例如,如果用户键入www.bank.example,但是他们的通信被劫持,并且一个假网站(假装是银行网站)将页面信息发送回用户的浏览器,则该虚假网页可以向用户发送假公钥(对于该用户,虚假站点拥有一个匹配的私钥)。使用者会以个人资料填写表格,并提交网页。然后,伪造的网页就可以访问用户的数据了。
这是证书颁发机构机制要防止的。证书颁发机构(CA)是存储公钥及其所有者的组织,通信中的每一方都信任该组织(并知道其公钥)。当用户的Web浏览器从www.bank.example接收公钥时,它还会接收密钥的数字签名(在所谓的X.509证书中提供更多信息)。浏览器已经拥有CA的公钥,因此可以验证签名、信任证书和证书中的公钥:由于www.bank.example使用了由验证局认证的公钥,所以一个伪造的www.bank.example只能使用相同的公钥。由于伪造的www.bank.example不知道相应的私钥,因此无法创建验证其真实性所需的签名。
安全。
在向CA(可能是通过电子网络)提供数据时,以及在同样提供请求证书的人员/公司/程序的凭据时,很难确保数据与实体之间匹配的正确性。这就是商业CA通常使用多种身份验证技术的原因,包括利用政府局、支付基础设施、第三方数据库和服务以及自定义启发式。在一些企业系统中,本地形式的身份验证(如Kerberos)可用于获取证书,而外部依赖方又可以使用证书。在某些情况下,公证员必须亲自了解签名被公证的当事人;这比许多核证机关达到的标准要高。根据美国律师协会(American Bar Association)的“在线交易管理纲要”(Outline On Online Transaction Management),美国联邦和州有关数字签名的法规的主要要点一直是“防止地方法规的冲突和过于繁琐,并确定电子文字符合与纸质文件相关的传统要求”。此外,美国电子签字法规和建议的欧洲自由贸易联盟守则[20]有助于确保:
与此种交易有关的签字、合同或其他记录不得仅仅因为是电子形式而被否定其法律效力、有效性或可执行性;以及。
与此种交易有关的合同不得仅仅因为在其形成过程中使用了电子签字或电子记录而被否定其法律效力、有效性或可执行性。
尽管采取了安全措施来正确核实个人和公司的身份,但有一个单一的CA向冒充者颁发假证书的风险。还可以用相同或非常相似的名称对个人和公司进行登记,这可能导致混淆。为了尽量减少这种危险,证书透明度倡议提议审计公共不可伪造日志中的所有证书,这有助于防止网络钓鱼。[21][22]。
在大规模部署中,alice可能不熟悉Bob的证书颁发机构(可能每个证书都有一个不同的CA服务器),因此Bob的证书还可能包括由不同的CA 2签名的CA的公钥,据推测,Alice可以识别该公钥。此过程通常导致CA和CA证书的层次结构或网格。
权限撤销列表。
授权撤销列表(ARL)是包含颁发给证书颁发机构的证书的证书吊销列表(CRL)的一种形式,与包含已吊销的最终实体证书的CRLS相反。
行业组织。
证书权威安全委员会(CASC)-在2013 2月,CASC成立作为一个行业倡导组织,致力于解决行业问题和教育公众的互联网安全。创始成员是七个最大的证书颁发机构。[23][24]。
通用计算安全标准论坛(CCSF)-在2009成立的共同计算安全标准论坛是为了促进保护最终用户的行业标准。科莫多集团首席执行官MelihAbdulhayoğLu被认为是CCSF的创始人。
CA/Browser论坛-2005成立了一个由证书颁发机构和Web浏览器供应商组成的新联盟,以促进行业标准和互联网安全的基线要求。科莫多集团首席执行官MelihAbdulhayoğLu组织了第一次会议,并被认为是CA/Browser论坛的创始人。[26][27]。
基线要求。
CA /浏览器论坛发布基线要求,[28] CA遵循的政策和技术要求清单。这些是包含在Firefox[29]和Safari的证书存储中的要求。
CA折衷。
如果CA可以被颠覆,那么整个系统的安全性就会丢失,可能会颠覆所有信任受损CA的实体。
例如,假设攻击者EVE成功地获得了一个CA来向她发出一个声称代表Alice的证书。也就是说,证书将公开声明它代表Alice,并且可能包括关于Alice的其他信息。关于Alice的一些信息,比如她的雇主的名字,可能是真的,从而提高了证书的可信度。然而,EVE将拥有与证书相关联的所有重要的私钥。然后,伊芙可以用这个证书向鲍勃发送经过数字签名的电子邮件,诱使鲍勃相信这封电子邮件来自爱丽丝。鲍勃甚至可能用加密的电子邮件来回应,他相信只有爱丽丝才能阅读,而伊芙实际上能够用私钥解密它。
一个像这样的CA颠覆的著名案例发生在2001,当时证书颁发机构威瑞信给一个声称代表微软的人颁发了两份证书。这些证书的名称是“微软公司”,因此它们可以被用来欺骗某人,使他们相信微软软件的更新来自微软,而实际上并不是这样。这个骗局是在2001年初被发现的。微软和威瑞信采取措施限制问题的影响。[31][32]。
在2011份来自科莫多和DigiNotar的欺诈性证书中,[33][34]据称是由伊朗黑客取得的。有证据表明,伪造的DigiNotar证书是在伊朗的一次中间人攻击中使用的。
在2012,人们知道信任波发布了一个从属根证书,用于透明的流量管理(中间人),它实际上允许企业使用从属证书嗅探ssl内部网络流量。
密钥存储。
盗取证书颁发机构私钥的攻击者能够伪造证书,就好像它们是CA一样,而无需持续访问CA的系统。因此,密钥盗窃是证书颁发机构防范的主要风险之一。公开信任的CA几乎总是将其密钥存储在硬件安全模块(HSM)上,该模块允许它们使用密钥对证书进行签名,但通常会阻止使用物理和软件控件提取密钥。CA通常采取进一步的预防措施,将其长期根证书的密钥保存在离线的HSM中,除非需要对较短的中间证书进行签名。存储在在线HSM中的中间证书可以做签署最终实体证书和保持吊销信息最新的日常工作。
CA有时在生成签名密钥时使用密钥仪式,以确保密钥不会被篡改或复制。
可信第三方方案的实现弱点。
当前X.509方案实现方式中的关键弱点是,由特定方信任的任何CA都可以为其选择的任何域颁发证书。这些证书将被信任方接受为有效,不管它们是否合法和授权。[37]这是一个严重的缺点,因为使用X.509和受信任的第三方的最常见技术是https协议。由于所有主要的web浏览器都被分发给他们的最终用户,预先配置了数十个可信CA的列表,这意味着这些预先批准的可信CA中的任何一个都可以为任何域颁发有效的证书。[38]业界对此的反应已经减弱。[39]考虑到浏览器预配置的可信CA列表的内容是由分发或分发的一方独立确定的,因此业界对此的反应是低调的。[39]考虑到浏览器的预配置可信CA列表的内容是由分发方独立确定的,因此,这意味着任何一个预先批准的可信CA都可以为任何域颁发有效证书。导致安装浏览器应用程序时,CA本身实际上什么也做不了。
这个问题是基于DNS的命名实体身份验证(DANE)协议发展的推动力。如果与域名系统安全扩展(DNSSEC)一起采用,DANE将大大减少(甚至完全消除)可信第三方在域的PKI中的角色。
软件。
可以使用各种软件来操作证书颁发机构。一般来说,需要这样的软件来签署证书、维护撤销信息和操作OCSP或CRL服务。一些例子是:
DogTag[40]
EJBCA
gnoMint
OpenCA
OpenSSL, an SSL/TLS library that comes with tools allowing its use as a simple certificate authority
EasyRSA, OpenVPN’s command line CA utilities using OpenSSL.
r509[41]
TinyCA, which is a perl gui on top of some CPAN modules.
XCA[42]
XiPKI,[43] CA and OCSP responder. With SHA3 support, OSGi-based (Java).
Boulder is an automated server that uses the Automated Certificate Management Environment[44] (ACME) protocol.
Windows Server contains a CA as part of Certificate Services for the creation of digital certificates. In Windows Server 2008 and later the CA may be installed as part of Active Directory Certificate Services.
OpenXPKI