PKI 是一种非对称密钥系统,它由公钥(发送给客户端)和私钥(保留在服务器本地)组成。PKI 与对称密钥系统不同,后者客户端和服务器都使用相同的密钥进行加密/解密。
SSL 的目标是满足各种要求,使其适用于传输最敏感的交易,例如信用卡信息、医疗记录、法律文件和电子商务应用程序。每个应用程序都可以根据其处理的交易的敏感性和价值,选择利用以下部分或全部标准。
假设要将消息从 A 编码传输到 B。A 使用 B 的公钥加密消息。这样,B 将是唯一可以使用其私钥解码和读取此消息的人。但是,我们不能确定 A 就是他声称的人。
为了确保 A 就是他声称的人,我们希望获得有保证的真实性。这需要稍微复杂的编码过程。在这种情况下,A 发送给 B 的消息首先使用 A 的私钥加密,然后使用 B 的公钥加密。现在 B 必须首先使用他的私钥解密,然后使用 A 的公钥解密。现在 B 可以确定 A 就是他声称的人,因为没有人可以创建使用他的私钥加密的消息。SSL 通过使用证书(PKI)来实现这一点。证书由中立的第三方(例如证书颁发机构 (CA))颁发,除了经过认证方的公钥外,还包括数字签名和/或时间戳。任何人都可以使用正确的 SSL 工具创建自签名数字证书,但自签名证书缺乏受双方尊重的中立第三方执行的验证权重。
在 SSL 中,完整性通过使用带有必要哈希表函数的 MAC(消息认证码)来保证。在生成消息时,通过应用哈希函数获得 MAC,然后将结果添加到消息中。收到消息后,通过将消息的嵌入式 MAC 与从接收到的消息计算出的新 MAC 进行比较来检查有效性。这将立即揭示已被第三方篡改的消息。
不可否认性在在线交易期间保护交易双方免受彼此的侵害。它可以防止一方或另一方声称他们没有发送特定的信息。不可否认性不允许任何一方在交易完成后更改交易。数字不可否认性等同于传统意义上签署合同。
SSL 协议包括两个子协议:SSL 记录协议和 SSL 握手协议。SSL 记录协议定义了用于传输数据的格式。SSL 握手协议涉及使用 SSL 记录协议在启用 SSL 的服务器和启用 SSL 的客户端之间交换一系列消息,当它们首次建立 SSL 连接时。此消息交换旨在促进以下操作
握手协议用于协调客户端和服务器的状态。在握手期间,会发生以下事件
注意:在服务器-浏览器身份验证之后使用对称密钥,可以大大提高后续吞吐量性能。
注意:每个 SSL 连接都需要一个 IP 地址。基于名称的虚拟主机在应用层期间解析。请记住,安全套接字层位于应用层之下。
客户端和服务器各自具有公钥和私钥(客户端的浏览器为 SSL 会话随机创建密钥对,除非客户端持有客户端证书并由服务器请求)。
发送方使用其私钥加密消息。此操作验证消息的来源。生成的密码再次使用接收方的公钥加密。此操作提供保密性,因为只有接收方能够使用其私钥对消息进行初始解密。接收方使用发送方的公钥进一步解密加密的消息。由于只有发送方可以访问其私钥,因此接收方可以确信加密的消息来自发送方。
消息摘要用于验证任何一方或第三方是否篡改或更改了消息。消息摘要是通过将哈希函数(私钥的一部分,称为指纹)应用于消息而获得的。摘要(现在称为签名)附加或追加到消息。签名的长度是恒定的(无论文件有多大),并且取决于私钥包含的消息摘要类型(md5 - 128 位,sha1 - 160 位等)。即使更改消息中的一位也会更改签名的长度,从而证明消息已被篡改。
数字证书使在互联网上信任实体成为可能。数字证书包含用户的凭据,这些凭据已由中立的第三方证书颁发机构验证。
数学算法和值(密钥)用于将数据加密为不可读的形式。第二个密钥用于解密数据,使用互补算法和相关值。这两个密钥必须包含相关值,称为密钥对。
注意:ITU-T 建议 X.509 [CCI88c] 规定了 X.500 目录的身份验证服务,以及 X.509 证书语法。证书由颁发者签名,以验证主体(用户)名称和用户公钥之间的绑定。SSLv3 于 1994 年被采用。版本 2 和版本 3 之间的主要区别是添加了扩展字段。此字段提供了更大的灵活性,因为它可以传达超出密钥和名称绑定的其他信息。标准扩展包括主体和颁发者属性、证书策略信息和密钥使用限制。
X.509 证书由以下字段组成
私钥未嵌入数字证书中。私钥不包含任何服务器信息。它包含加密信息和指纹。它在您的系统上本地生成,应保留在安全环境中。如果私钥泄露,攻击者实际上就拥有了您安全系统的代码。客户端和服务器之间的传输可能会被拦截和解密。这种类型的漏洞是建议创建使用三重 DES 技术加密的私钥的原因。然后对文件进行加密并使用密码保护,使其几乎不可能在没有正确的密码短语的情况下使用。
交易的安全性取决于其私钥。如果此密钥落入坏人之手,那么任何人都可以轻松复制它并使用它来损害安全性。泄露的密钥可能导致发往服务器的消息被不择手段的黑客拦截和操纵。完全安全的系统必须能够检测冒名顶替者并防止密钥的复制。
公钥嵌入在数字证书中,当请求安全连接时,服务器会将数字证书发送给客户端。此过程使用证书识别服务器。公钥验证完整性、真实性,也用于加密数据以创建私有数据传输。
CSR 包含证书颁发机构创建证书所需的信息。CSR 包含私钥的互补算法、公共值和标识服务器的信息的加密版本。此信息包括但不限于国家/地区、州、组织、通用名称(域名)和联系信息。