文章目录
- 前言
- 一、Certificate Authorities
- 二、Key Agreement Protocols
前言
本文来自 Intel SGX Explained
请参考:密码学(一)
一、Certificate Authorities
非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。这个假设非常关键,因为非对称密钥系统的整个安全性依赖于某些操作只能由与公钥对应的私钥的所有者执行。
更具体地说,如果Eve能够让Bob相信她自己的公钥属于Alice,那么Eve可以产生似乎来自Alice的消息签名。
这种情况下,Eve可以中间人攻击的方式,截取Alice和Bob之间的通信,冒充Alice并使用自己的公钥作为Alice的公钥,然后代表Alice签署消息。
如果Bob错误地信任Eve的公钥,他可能会被欺骗,接受被篡改或伪造的消息作为来自Alice的真实通信。这可能导致各种安全风险,包括未经授权的访问、数据篡改或错误信息传播。
为了减轻这种风险,建立安全可信的机制来分发和验证公钥非常重要。这可以涉及使用由受信任的第三方实体(称为证书颁发机构或CA)颁发的数字证书,或者采用去中心化的信任模型,如信任网络,其中个人对彼此的公钥进行数字签名以建立信任。
密码学(一)的介绍性材料假设每个参与方通过具有完整性保证的信道传输他们的公钥。但实际上,这并不是一个合理的假设,安全分发公钥仍然是一个尚未解决的研究问题。
最广泛采用的解决公钥分发问题的方法是证书颁发机构(Certificate Authority,CA)系统,它假设存在一个受信任的机构,该机构的公钥被安全地传输给系统中的其他所有参与方。
在CA系统中,信任的根源是由一个或多个CA机构拥有的根证书。这些根证书的公钥被预先分发给参与方,以确保其可靠性。然后,CA机构可以颁发数字证书,将公钥与实体的身份信息绑定在一起,并用CA机构的私钥对数字证书进行签名。其他参与方可以使用CA机构的公钥验证数字证书的有效性和真实性。
通过使用CA系统,参与方可以相信从CA机构获得的数字证书,因为它们具有信任的根源和可验证性。这种机制解决了公钥分发的问题,确保了公钥的可靠性和身份的验证。
证书颁发机构(CA)负责安全获取每个参与方的公钥,并发行将参与方的身份(例如,“Alice”)与其公钥绑定的证书,如下图所示:
上图表明了证书是由证书颁发机构(发行者)签名的陈述,将一个主体的身份与一个公钥绑定起来。
在这个过程中,参与方需要向CA提交其公钥以进行注册。CA会验证参与方的身份,并确保其公钥的真实性和可信度。一旦验证通过,CA将发行一个数字证书,其中包含参与方的身份信息和对应的公钥。
这个数字证书包含了许多信息,如证书的颁发者(即CA的身份)、证书的持有者(即参与方的身份)、公钥以及其他元数据。为了确保数字证书的完整性和真实性,CA会使用自己的私钥对证书进行签名。其他参与方可以使用CA的公钥来验证证书的签名,从而确认证书的有效性和真实性。
一旦参与方获得了数字证书,它们可以使用证书中的公钥来进行安全通信。在加密通信中,发送方可以使用接收方的公钥加密消息,而接收方则使用自己的私钥解密消息。在数字签名中,发送方可以使用自己的私钥对消息进行签名,接收方可以使用发送方的公钥验证签名的真实性。
通过CA系统的运作,参与方可以信任其他参与方的公钥,因为它们通过由受信任的CA颁发的数字证书进行验证和确认。
总结而言,证书颁发机构(CA)负责安全地获取每个参与方的公钥,并发行将参与方的身份与其公钥绑定的数字证书。这确保了公钥的真实性和可信度,为参与方之间的安全通信提供了基础。
证书实质上是由证书发行者(通常是CA)的私钥生成的加密签名。由发行者签名的消息声明了一个公钥属于一个主体。证书消息通常包含标识符,说明证书的预期用途,例如“此证书中的密钥只能用于签署电子邮件消息”。证书消息通常还包括发行者认证策略的标识符,该策略总结了发行者采取的措施,以确保主体的公钥的真实性。
在CA系统中的一个主要问题是没有明显的方法来撤销证书。撤销机制对于处理私钥意外暴露的情况非常重要,以避免攻击者使用证书冒充被损害的主体。虽然已经开发了先进的证书撤销系统,但防止密钥被泄露的首要措施是为证书添加过期日期。
在一个CA系统中,每个参与方都会提供自己的证书和公钥。任何信任CA并已安全获取CA的公钥的参与方都可以使用下图所示的过程来验证任何证书。
上图表明了由CA颁发的证书可以被任何已安全获取CA公钥的参与方验证。如果证书有效,其中包含的主体公钥可以被信任为属于证书所标识的主体。
一个主要的缺点是CA系统中,CA的私钥成为攻击的目标。通过尽量减少对CA私钥的使用,可以在一定程度上减少其被攻击的机会。上述描述的机构成为根CA,他们的私钥仅用于生成中间CA的证书,而中间CA则负责为系统中的其他参与方生成证书,如下图所示:
上图表明了一个层次化的CA结构旨在减少根CA私钥的使用,降低其被攻击的风险。在这种结构中,根CA的私钥仅用于签署中间CA的证书。
中间CA位于根CA和最终用户之间,负责为系统中的各方(包括最终用户)发放和签署证书。中间CA拥有自己的私钥,用于签署最终用户的证书。
通过将证书签署的责任分布在多个层级的CA之间,层次化结构减少了对根CA私钥的依赖。这有助于减轻根CA私钥被攻击的风险。即使中间CA的私钥遭到攻击,也只会影响到由该中间CA签署的证书,而不会危及整个系统的安全。
在层次化的CA系统中,唯一安全分发给所有参与方的公钥是根CA的公钥。因此,当两个参与方希望进行交互时,每个参与方都必须提供自己的证书,以及颁发CA的证书。例如,给定上图中的层次结构,Alice可以通过提供她的证书以及Intermediate CA 1的证书来向Bob证明她的公钥的真实性。Bob首先使用上上图中的步骤,通过根CA的公钥验证Intermediate CA 1的证书,从而确保Intermediate CA 1的公钥的真实性。然后,Bob使用Intermediate CA 1的公钥验证Alice的证书,因为他现在信任Intermediate CA 1的公钥。
通过这个过程,Bob可以验证Alice的证书,并相信其中包含的公钥确实属于Alice。这种逐级验证的方法确保了证书链的完整性和真实性。每个参与方都需要验证对方的证书,并建立起信任关系,以确保安全通信和身份验证。
总结而言,在层次化的CA系统中,只有根CA的公钥安全地分发给所有参与方。因此,当两个参与方希望进行交互时,每个参与方都必须提供自己的证书和颁发CA的证书。通过逐级验证证书链,可以建立起信任关系,并确保通信双方的公钥的真实性和可信性。
在大多数国家,政府为其公民发放身份证,因此充当了证书颁发机构的角色。身份证是一种证书,将主体的身份(完整的法定姓名)与主体的外貌(用作公钥)绑定在一起,如下图所示:
上图表明了身份证是一种证书,将一个主体的完整法定姓名(身份)与主体的外貌特征绑定在一起,而外貌特征则充当了公钥的作用。
每个政府的身份证发放操作都受到法律的监管,因此身份证的发行日期可以用来追踪构成其认证政策的法律。此外,身份证的安全性(尚)不依赖于密码学原语。相反,身份证包括物理安全措施,旨在防止篡改和防伪。
身份证发放的过程受到法律的规范和监管。政府制定了相关法律和政策来管理身份证的发放和使用。发行日期可以反映出身份证所遵循的具体法律和政策。
此外,身份证的安全性主要依赖于物理安全措施,而非密码学原语。身份证通常包括多种物理特征和安全措施,旨在防止篡改和防伪。这些措施可能包括防伪特殊材料、水印、芯片技术、防伪标记等。物理安全措施的设计目的是使身份证更难以伪造和篡改,以保护个人身份的安全性。
二、Key Agreement Protocols
在 密码学(一)中介绍的对称密钥原语的初始设计假设,当两个参与方希望进行交互时,一方生成一个秘密密钥,并使用具有机密性和完整性保证的通信渠道与另一方共享。然而,在实际应用中,很少有预先存在的安全通信渠道可用。
密钥协商协议用于两个参与方建立共享的秘密密钥,只需要一个具有完整性保证的通信渠道。下图概述了Diffie-Hellman密钥交换(DKE)协议,该协议可以帮助读者直观地理解密钥协商协议的工作原理。
上图表明了在Diffie-Hellman密钥交换(DKE)协议中,Alice和Bob在一个共享的秘密密钥K = gAB mod p上达成一致。一个观察到gA mod p和gB mod p的对手无法计算出K。
DHE协议的基本思想是,两个通信参与者(通常是Alice和Bob)可以在公开的通信渠道上协商一个共享密钥,而无需事先共享任何秘密信息。DHE协议的安全性基于离散对数问题。
以下是DHE协议的步骤:
(1)参数生成:在协议开始之前,需要选定一组公开的参数。这些参数包括一个大素数p和一个生成元g,它们被所有通信参与者共享。
(2)密钥协商:
Alice和Bob各自选择一个私密的随机数a和b。
Alice计算公钥A = g^a mod p,并将A发送给Bob。
Bob计算公钥B = g^b mod p,并将B发送给Alice。
(3)密钥计算:
Alice收到Bob的公钥B后,计算共享密钥K = B^a mod p。
Bob收到Alice的公钥A后,计算共享密钥K = A^b mod p。
(4)密钥确认:Alice和Bob现在都拥有相同的共享密钥K,可以用于加密和解密通信。双方可以相互确认密钥的正确性,例如通过发送哈希值或其他验证信息。
DHE协议的关键优势在于即使在公开信道上进行通信,也能够协商出一个秘密的共享密钥。然而,DHE协议本身并不提供身份验证和消息完整性保护。因此,在实际应用中,通常会将DHE与数字证书和其他安全机制结合使用,以确保通信的安全性。
本文关注使用密钥协商协议构建更大系统,因此我们不会解释DKE中的数学细节,也不会证明其正确性。我们注意到Alice和Bob都派生出相同的共享秘密密钥K = gAB mod p,而不会传输K。此外,在DKE中传输的消息,即gA mod p和gB mod p,对于窃听者Eve来说是不足以确定K的,因为有效地解决gx mod p中的x是一个被认为非常困难的开放问题。
确实,密钥协商协议需要具有完整性保证的通信渠道。如果主动攻击者Eve可以篡改Alice和Bob传输的消息,她可以执行中间人攻击(MITM攻击),如下图所示:
上图表明了任何密钥协商协议都容易受到中间人攻击,如果通信渠道没有得到适当的保护。在中间人攻击中,主动攻击者可以拦截并操纵两个参与方之间的通信,冒充每个参与方以建立不同的共享密钥。
在密钥协商协议中,攻击者可以拦截Alice和Bob之间的消息,并与他们分别建立不同的共享密钥。然后,攻击者可以在Alice和Bob之间转发消息,使他们相信彼此直接进行通信。这让攻击者能够窃听通信并可能篡改消息。
此外,攻击者还可以在冒充另一个参与方的情况下向Alice或Bob发送自己的消息。这使得攻击者能够注入恶意内容、伪造消息,或者欺骗受害者执行有利于攻击者的操作。
为了降低中间人攻击的风险,必须确保通信渠道的完整性和真实性。可以通过使用数字签名或证书等技术验证通信各方的身份,并采用提供机密性和完整性保证的安全通信协议(如SSL/TLS)来实现。
在中间人攻击中,Eve拦截Alice的第一个密钥交换消息,并向Bob发送自己的消息。然后,Eve拦截Bob的回应并替换为自己的回应,发送给Alice。Eve实际上与Alice和Bob分别执行密钥交换,与他们各自建立共享密钥,而Bob和Alice都不知道Eve的存在。
在与Alice和Bob建立共享密钥之后,Eve可以选择观察Alice和Bob之间的通信,通过转发消息来实现。例如,当Alice发送消息时,Eve可以使用K1(她与Alice之间的共享密钥)对其进行解密,然后使用K2(她与Bob之间建立的密钥)对消息进行加密。虽然Bob仍然接收到Alice的消息,但Eve已经能够查看其内容。
此外,Eve可以冒充通信中的任一方。例如,Eve可以创建一条消息,并使用K2对其进行加密,然后将其发送给Bob。由于Bob认为K2是他与Alice之间建立的共享密钥,他将相信Eve的消息来自Alice。
可以通过对协议中发送最后一条消息的一方(在我们的示例中是Bob)进行身份验证,并让其对密钥协商消息进行签名来防止中间人攻击。当存在CA系统时,Bob使用他的公钥对密钥协商消息进行签名,并向Alice发送他的证书,以及任何中间CA的证书。Alice验证Bob的证书,确保证书所标识的主体是她所期望的(即Bob),并验证与她和Bob之间交换的密钥协商消息与Bob提供的签名匹配。
总之,可以使用密钥协商协议从非对称密钥签名方案中引导对称密钥原语,其中只有一方需要能够对消息进行签名。