网络安全服务基础Windows--第15节-CA与HTTPS理论
公钥基础设施(Public Key Infrastructure,简称 PKI)是指⼀套由硬件、软件、⼈员、策略和程序组成的系统,⽤于创建、管理、分发、使⽤、存储和撤销数字证书。PKI 的核⼼⽬的是通过使⽤公钥加密技术来确保电⼦通信的安全性。PKI 为数据加密、数字签名、认证和其他基于公钥加密的安全服务提供了基础。以下是 PKI 的详细介绍:
PKI 的基本组成部分
●
证书颁发机构 (Certificate Authority, CA):
○ CA 是 PKI 的核⼼组件,负责签发和管理数字证书。CA 验证实体的身份,并为其颁发绑定特定公钥的数字证书。CA 还负责证书的撤销和更新。
签发证书、更新证书、管理证书、撤销、查询、审计、统计
验证数字证书
○
⿊名单认证(CRL)
○ 在线认证 (OCSP)
●
注册机构 (Registration Authority, RA):
○
RA 是⼀个负责验证实体身份的辅助组件。RA 接受证书申请,验证申请者的身份,并将验证结
果发送给 CA,CA 基于此颁发证书。
RA系统的功能包括:
填写⽤户注册信息:RA系统允许⽤户填写注册所需的信息,如⽤户名、联系⽅式、公钥等。
提交⽤户注册信息:⽤户在填写完注册信息后,将信息提交⾄RA系统进⾏审核。
审核:RA系统对⽤户提交的信息进⾏审核,以确保信息的真实性和完整性。
发送⽣成证书申请:当RA系统审核通过后,将向CA发送证书⽣成申请。
发送证书:CA签发证书后,RA系统将证书发送给⽤户。
登记⿊名单:当⽤户的证书被撤销后,RA系统将其加⼊⿊名单,防⽌其再次获得证书。
证书撤销列表管理:RA系统可以管理CA发出的证书撤销列表。
⽇志审计:RA系统可以记录所有的注册、审核、证书⽣成、发送等操作,以备后续审计。
⾃身安全保证:RA系统必须保证其⾃身的安全性,防⽌信息泄露和恶意攻击。
●
证书存储库 (Certificate Repository):
○ 存储由 CA 签发的数字证书及证书撤销列表 (CRL)。通常是⼀个可以公开访问的⽬录或数据
库。
●
证书撤销列表 (Certificate Revocation List, CRL):
○ CRL 是⼀个由 CA 维护的列表,列出已被撤销的数字证书。这些证书不再被信任,并且不能⽤于加密或身份验证。
CRL (Certificate Revocation List,证书吊销列表) 是⼀种⽤于通知吊销证书的机制,由CA发
布。它包含了⼀系列已经被吊销的证书信息,以及吊销的原因等,客户端可以通过下载CRL来
检查证书是否被吊销。
LDAP (Lightweight Directory Access Protocol,轻量⽬录访问协议) 是⼀种⽤于访问⽬录服务
的协议,常被⽤于PKI中的证书和密钥的管理和分发。LDAP可以提供快速⾼效的证书和密钥查
找和下载服务,以及实现了⽬录服务的⾼可⽤性和灵活性。
OSCP (Online Certificate Status Protocol,在线证书状态协议) 是⼀种⽤于在线检查证书状
态的机制,由CA发布。OCSP可以让客户端在线查询证书的状态,以判断证书是否被吊销或过
期。相⽐于CRL,OCSP可以提供更及时、实时的证书状态查询,但同时也需要更多的⽹络资
源。
证书发布库 功能与特点
⽤于集中存放CA颁发证书和证书撤销列表CRL
在数字证书⽣态系统中,数字证书是由CA签发的,并⽤于验证身份、数字签名、加密等操作。然⽽,数字证书的有效性可能会受到各种因素的影响,如证书的过期、吊销、篡改等,这将使
数字证书不再具备可信性和安全性。
因此,CA需要定期更新CRL以记录吊销的数字证书。验证⼈员可以通过访问CRL来检查数字证书是否已被吊销。CRL的更新频率和验证⼈员的检查频率通常取决于数字证书的应⽤场景和安
全级别。
● 公钥和私钥 (Public and Private Keys):
○
每个实体拥有⼀对密钥,公钥⽤于加密数据或验证数字签名,⽽私钥则⽤于解密数据或⽣成数
字签名。公钥是公开的,⽽私钥必须保密。
PKI 的基本功能
●
认证 (Authentication):
○
PKI 通过数字证书验证实体(如⽤户、设备、服务等)的身份,从⽽确保与之通信的对⽅是可
信的。
●
数据完整性 (Data Integrity):
○
PKI 通过数字签名确保数据在传输过程中未被篡改。任何篡改都会导致签名验证失败。
●
机密性 (Confidentiality):
○
PKI 通过加密机制确保只有预期的接收者能够访问和解密信息,从⽽保护数据的机密性。
●
不可否认性 (Non-repudiation):
○
PKI 的数字签名功能确保发送⽅⽆法否认其发送的数据或信息。
数字证书
●
定义:
○
数字证书是由 CA 签发的⼀个电⼦⽂档,它包含实体的公钥以及其他身份信息,如持有者的姓
名、证书的有效期、证书序列号等。
●
证书格式:
○
数字证书通常遵循 X.509 标准,该标准定义了证书的格式和内容。X.509 证书包括持有者的公
钥、CA 的数字签名、持有者的身份信息等。
●
证书链:
○
证书链是指从终端实体证书到根证书之间的⼀系列证书。通过验证证书链中的每个证书,最终
可以信任终端实体证书。
1. 版本号 (Version)
●
描述:定义了证书的版本。⽬前,最常⽤的是 v3(版本号为 2),这个版本增加了扩展字段的⽀
持。
●
可能的值:0 (v1), 1 (v2), 2 (v3)
2. 序列号 (Serial Number)
●
描述:证书颁发机构(CA)分配给每个证书的唯⼀编号,⽤于唯⼀标识该证书。
●
⽤途:在证书撤销列表(CRL)中引⽤证书时使⽤。
3. 签名算法标识符 (Signature Algorithm Identifier)
●
描述:标识⽤于签署证书的算法,如 SHA-256 with RSA 加密。
●
内容:包含算法的 OID(对象标识符)和其他相关参数。
4. 颁发者 (Issuer)
●
描述:证书颁发机构的身份信息,通常使⽤ X.500 标准格式表示,包括国家 (C),组织 (O),组织单位 (OU) 等字段。
●
示例:
C=US, O=Example Organization, CN=Example CA
5. 有效期 (Validity)
●
描述:定义证书的有效时间段,包含两个⽇期字段:
○
Not Before:证书开始⽣效的⽇期。
○
Not After:证书到期的⽇期。
●
⽤途:在验证证书时,确保当前⽇期在此范围内。
6. 主体 (Subject)
●
描述:证书持有者的身份信息,同样使⽤ X.500 标准格式表示。
●
示例:
C=US, O=Example Organization, CN=www.example.com
7. 主体公钥信息 (Subject Public Key Info)
●
描述:包含主体的公钥及其所使⽤的算法信息。
●
内容:
○
公钥算法 (Public Key Algorithm):如 RSA, ECDSA。
○
公钥 (Public Key):实际的公钥值。
8. 颁发者唯⼀标识符 (Issuer Unique Identifier) 和主体唯⼀标识符 (Subject Unique Identifier)
●
描述:这些字段在 v2 和 v3 证书中是可选的,⽤于唯⼀标识颁发者和主体,即使它们的名称相同。
●
⽤途:帮助解决证书更新或重发时可能的冲突。
9. 扩展 (Extensions)
●
描述:v3 证书中增加的⼀组可选字段,⽤于存储额外的信息,如:
○
密钥⽤途 (Key Usage):指定证书的⽤途,例如数字签名、密钥加密等。
○
扩展密钥⽤途 (Extended Key Usage):进⼀步细化的⽤途,例如 TLS 服务器身份验证。
○
主体备⽤名称 (Subject Alternative Name):指定主体的其他标识符,如电⼦邮件、IP 地址、
DNS 名称等。
○
基本约束 (Basic Constraints):指明是否为 CA 证书以及证书链的最⼤⻓度。
○
CRL 分发点 (CRL Distribution Points):指向证书撤销列表的位置。
10. 签名算法 (Signature Algorithm)
●
描述:重申⽤于签署证书内容的算法,与前⾯签名算法标识符的内容⼀致。
11. 签名 (Signature)
●
描述:证书的数字签名,由 CA 使⽤其私钥对证书的前述部分进⾏签名⽣成。
●
⽤途:验证证书的完整性和来源。验证者可以使⽤ CA 的公钥来验证此签名。
X.509 证书的存储格式
●
DER (Distinguished Encoding Rules):⼆进制编码格式,适合于计算机处理。
●
PEM (Privacy-Enhanced Mail):⽂本编码格式,使⽤ Base64 编码 DER 数据,并包含
-----B
EGIN CERTIFICATE-----
和
-----END CERTIFICATE-----
标签。
PKI 的⼯作流程
1.
密钥对⽣成:
○
实体⽣成⼀对密钥,公钥和私钥。公钥可以公开发布,⽽私钥必须保密。
2.
证书申请:
○
实体将其公钥连同身份信息发送给 RA,申请数字证书。
3.
身份验证:
○
RA 验证申请者的身份,确认⽆误后,将公钥和身份信息传递给 CA。
4.
证书签发:
○
CA 使⽤其私钥对申请者的公钥和身份信息进⾏签名,⽣成数字证书,并将证书返回给申请者。
5.
证书分发:
○
申请者可以将其数字证书公开给通信⽅。通信⽅可以通过访问证书存储库来获取证书。
6.
证书使⽤:
○
证书持有者使⽤其私钥进⾏加密或签名操作,通信⽅使⽤持有者的公钥解密或验证签名。
7.
证书撤销:
○
如果证书不再可信(例如私钥泄露),CA 可以将该证书加⼊ CRL,标记为已撤销。
PKI 的应⽤场景
●
电⼦邮件安全 (S/MIME):
○
使⽤数字证书对电⼦邮件进⾏加密和签名,以确保邮件的机密性和完整性。
●
安全套接字层/传输层安全 (SSL/TLS):
○
在⽹络通信中使⽤数字证书来建⽴安全的加密通道,保护数据传输的机密性和完整性。
●
虚拟专⽤⽹络 (VPN):
○
使⽤ PKI 来验证远程⽤户的身份,并建⽴加密的⽹络连接。
●
代码签名:
○
开发者使⽤数字证书对软件代码进⾏签名,确保软件未被篡改,并验证发布者的身份。
●
⽂档签名:
○
使⽤ PKI 对⽂档进⾏数字签名,以确保⽂档的来源和完整性。
PKI 的挑战和安全性
●
私钥保护:
○
私钥的泄露是 PKI ⾯临的最⼤⻛险之⼀。私钥必须被安全存储,通常使⽤硬件安全模块 (HSM) 来保护。
●
证书撤销的及时性:
○
证书撤销信息的传播可能存在延迟,可能导致短时间内已撤销的证书仍然被信任。
●
跨域信任:
○
不同 PKI 域之间的信任建⽴是⼀个复杂的问题,通常需要跨域信任协议和政策来实现。
SSL 与TLS
⼀、SSL(Secure Sockets Layer)
1.1 背景与历史
SSL 是由 Netscape 公司于 1990 年代早期开发的,⽬的是为互联⽹通信提供加密和身份验证,特别是在电⼦商务和在线⽀付等需要保护敏感信息的场景中。SSL 协议经历了⼏个版本的发展:
●
SSL 1.0:这⼀版本从未公开发布,主要因为存在较多的安全漏洞和不⾜。
●
SSL 2.0(1995年发布):这是第⼀个公开发布的版本,但很快被发现存在多种安全漏洞,例如,SSL 2.0 不⽀持⾜够强⼤的加密算法,也缺乏对消息完整性的保护。
●
SSL 3.0(1996年发布):这是⼀个⼤幅改进的版本,修复了 SSL 2.0 中的许多漏洞,并引⼊了更强⼤的加密和消息认证机制。然⽽,SSL 3.0 依然存在某些安全缺陷,并最终被 TLS 取代。
1.2 SSL 的⼯作原理
SSL 的⼯作过程可以分为三个主要阶段:握⼿、数据传输和连接关闭。
1.2.1 握⼿阶段:
●
客户端Hello:客户端向服务器发送⼀个请求,包含客户端⽀持的SSL版本、加密套件、压缩⽅法以及⼀个随机数。
●
服务器Hello:服务器选择⼀个客户端⽀持的SSL版本和加密套件,返回给客户端,并发送其数字证书(包含公钥)以及⼀个随机数。
●
证书验证:客户端验证服务器的数字证书是否合法,确保与之通信的服务器是真实可信的。如果证书验证通过,客户端⽣成⼀个称为“预主密钥”(pre-master secret)的随机数,⽤服务器的公钥加密后发送给服务器。
●
密钥⽣成:服务器使⽤私钥解密“预主密钥”,然后客户端和服务器使⽤该“预主密钥”以及双⽅之前发送的随机数,⽣成会话密钥,⽤于后续的数据加密。
1.2.2 数据传输阶段:
●
客户端和服务器通过⽣成的会话密钥进⾏数据加密和解密,确保传输的数据保密且未被篡改。
1.2.3 连接关闭阶段:
●
通信结束后,客户端和服务器互相发送关闭通知,并销毁会话密钥,断开连接。
⼆、TLS(Transport Layer Security)
2.1 背景与历史
TLS 是 SSL 的继任者,由 IETF(互联⽹⼯程任务组)开发,⽬的是改进 SSL 协议中的安全性漏洞。
TLS 的发展版本如下:
●
TLS 1.0(1999年发布):是 SSL 3.0 的演变版本,修复了SSL 3.0中的⼀些安全问题,并提供了更强的加密和消息完整性保护。
●
TLS 1.1(2006年发布):引⼊了抗阻断性攻击的措施,改善了加密过程中的随机性,防⽌了某些已知攻击。
●
TLS 1.2(2008年发布):这是⽬前最⼴泛使⽤的版本,引⼊了SHA-256作为消息验证算法,并⽀持更多的加密算法,如 AES。
●
TLS 1.3(2018年发布):最新版本,对协议进⾏了简化和优化,移除了过时和不安全的加密算法,减少了握⼿的延迟,提升了性能和安全性。
2.2 TLS 的⼯作原理
TLS 的⼯作原理与 SSL 类似,但在安全性和效率上进⾏了改进。其过程也分为握⼿、数据传输和连接关闭三个阶段。
2.2.1 握⼿阶段:
●
与 SSL 类似,客户端发起连接请求,服务器回应并提供其数字证书。双⽅通过协商选择加密算法和
会话密钥。
●
TLS 1.3 引⼊了更快的握⼿过程,减少了所需的往返次数(RTT),从⽽降低了握⼿延迟。
2.2.2 数据传输阶段:
●
TLS 使⽤会话密钥对数据进⾏加密,确保通信的保密性和完整性。
●
TLS 1.2 和 1.3 ⽀持更强⼤的加密算法,如 AES-GCM,这些算法在保证安全的同时也提⾼了性
能。
2.2.3 连接关闭阶段:
●
在通信结束时,客户端和服务器会相互发送关闭通知,终⽌连接并销毁会话密钥。
三、SSL 和 TLS 的主要区别
●
安全性:TLS 在安全性上有显著提升,修复了 SSL 的许多已知漏洞。SSL 3.0 被认为是不安全的,⽽现代⽹络应⽤⼏乎都使⽤ TLS 1.2 或 1.3。
●
加密算法:TLS 引⼊了更强⼤的加密算法和更灵活的加密套件配置,如⽀持 AES 和 SHA-256 等,⽽ SSL ⽀持的算法较为过时。
●
握⼿过程:TLS,特别是 TLS 1.3,在握⼿过程中的优化使其⽐ SSL 更加⾼效,减少了延迟。
●
协议扩展性:TLS 设计时考虑到了未来的扩展性,可以更容易地引⼊新特性或加密算法,⽽不影响现有的安全性。
四、SSL 和 TLS 在现代⽹络中的应⽤
如今,⼏乎所有的 HTTPS ⽹站都依赖于 TLS 协议。虽然我们⽇常⽣活中经常听到“SSL证书”这个术语,但实际上,这些证书⼏乎总是⽤于TLS连接中。随着互联⽹的普及和安全意识的提⾼,TLS 1.2 和TLS 1.3 成为保护⽹络通信的标准。
●
浏览器和⽹站:⼤多数现代浏览器强制要求使⽤ TLS 来加密与⽹站的通信,未采⽤ TLS 的⽹站可能会被标记为不安全。
●
电⼦邮件:TLS 也⼴泛⽤于电⼦邮件传输协议中,如SMTP、IMAP和POP3,以保护邮件的机密
性。
●
VPN:许多VPN服务依赖于TLS来确保虚拟专⽤⽹络中的数据安全传输。
●
物联⽹(IoT):随着物联⽹设备的普及,TLS 被越来越多地⽤于保护设备与服务器之间的通信,防⽌数据泄露和恶意攻击。
TLS 协议的详细介绍。
⼀、TLS 协议的总体结构
TLS 协议主要由两个⼦协议组成:
1.
TLS 记录协议(TLS Record Protocol):负责对数据进⾏分⽚、压缩、加密、解密和完整性检
查。
2.
TLS 握⼿协议(TLS Handshake Protocol):负责客户端和服务器之间的身份验证、加密算法协商以及密钥交换。
除此之外,TLS 还包含两个辅助协议:
TLS 警报协议(TLS Alert Protocol):⽤于在通信过程中发送错误消息或通知中⽌连接。
TLS 变更密码规范协议(TLS Change Cipher Spec Protocol):⽤于通知对加密算法和密钥的使
⽤进⾏切换。
⼆、TLS 握⼿协议详解
TLS 握⼿协议是建⽴安全连接的核⼼,主要负责双⽅身份验证、加密套件协商以及密钥交换。握⼿过程可以分为以下⼏个阶段:
2.1 客户端Hello(ClientHello)
客户端发起 TLS 连接时,会发送⼀个
ClientHello
消息,包含以下内容:
⽀持的 TLS 版本:客户端⽀持的 TLS 版本(如 TLS 1.2、1.3)。
随机数(Random):⼀个由客户端⽣成的随机数,⽤于后续密钥的⽣成。
会话ID(Session ID):如果客户端希望恢复之前的会话,则包含会话ID。
⽀持的加密套件(Cipher Suites):客户端⽀持的加密算法和哈希函数列表。
压缩⽅法(Compression Methods):客户端⽀持的压缩算法。
扩展字段(Extensions):包含额外的扩展信息,如服务器名称指示(SNI)、⽀持的签名算法、应⽤层协议协商(ALPN)等。
2.2 服务器Hello(ServerHello)
服务器接收到
ClientHello
后,回复
ServerHello
消息,内容包括:
TLS 版本:服务器选择的 TLS 版本。
随机数(Random):由服务器⽣成的随机数。
会话ID:如果服务器同意恢复会话,则返回相同的会话ID。
加密套件:服务器选择的加密算法和哈希函数。
压缩⽅法:服务器选择的压缩算法。
扩展字段:服务器⽀持的扩展信息。
2.3 服务器证书(Server Certificate)
服务器通过
Certificate
消息发送其数字证书,该证书包含服务器的公钥和身份信息,由受信任的
证书颁发机构(CA)签署。客户端使⽤此证书验证服务器的身份。
2.4 服务器密钥交换(Server Key Exchange)(可选)
在某些加密套件(如 DHE 或 ECDHE)中,服务器需要通过
ServerKeyExchange
消息发送临时的
公钥交换参数,以便进⾏ Diffie-Hellman 密钥交换。
2.5 证书请求(Certificate Request)(可选)
如果服务器要求客户端身份验证,会发送
CertificateRequest
消息,要求客户端提供其数字证
书。
2.6 服务器Hello完成(ServerHelloDone)
服务器发送
ServerHelloDone 消息,表示握⼿的初始阶段结束。
2.7 客户端证书(Client Certificate)(可选)
如果服务器要求客户端提供证书,客户端会发送
Certificate
消息,包含其数字证书。
2.8 客户端密钥交换(Client Key Exchange)
客户端⽣成⼀个称为“预主密钥”(Pre-Master Secret)的随机数,并使⽤服务器的公钥加密后,通过ClientKeyExchange 消息发送给服务器。服务器使⽤其私钥解密“预主密钥”,然后双⽅使⽤此预主密钥和之前交换的随机数⽣成会话密钥。
2.9 证书验证(Certificate Verify)(可选)
如果客户端发送了证书,它还会发送
CertificateVerify
消息,使⽤其私钥对握⼿摘要进⾏签
名,服务器通过验证签名来确认客户端的身份。
2.10 变更密码规范(Change Cipher Spec)
客户端和服务器各⾃发送
ChangeCipherSpec
消息,通知对⽅接下来将使⽤协商好的加密套件和会话密钥进⾏通信。
2.11 握⼿完成(Finished)(加密)
握⼿的最后⼀步,客户端和服务器各⾃发送
Finished
消息,包含整个握⼿过程的摘要,⽤协商好的密钥加密,以验证握⼿是否成功完成。
三、TLS 记录协议详解
TLS 记录协议
是 TLS 协议的底层协议,负责将上层协议的数据分⽚、压缩、加密和完整性检查。记录协议的结构如下:
内容类型(Content Type):标识记录的类型,如应⽤数据(Application Data)、握⼿消息
(Handshake)、警报(Alert)等。
协议版本(Protocol Version):TLS 版本号。
⻓度(Length):记录内容的⻓度。
记录数据(Record Data):实际的数据负载,可能是加密后的数据。
四、TLS 加密套件(扩展)
TLS ⽀持多种加密套件,每个加密套件定义了⼀组加密算法和哈希算法,⽤于加密数据、⽣成密钥和验证数据完整性。⼀个典型的加密套件格式如下:
密钥交换算法:如 RSA、DHE(Diffie-Hellman Ephemeral)、ECDHE(Elliptic Curve Diffie
Hellman Ephemeral)。
对称加密算法:如 AES、ChaCha20,⽤于加密实际的数据传输。
消息认证码(MAC)算法:如 HMAC-SHA256,⽤于验证消息的完整性。
在 TLS 1.3 中,许多不安全或过时的加密套件被移除,只保留了强加密算法,如 ECDHE 和 AES
GCM。此外,TLS 1.3 将密钥交换和加密算法解耦,使得协议更加灵活和安全。
⼀、ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)
1.1 什么是 ECDHE?
ECDHE 代表 Elliptic Curve Diffie-Hellman Ephemeral,它是⼀种基于椭圆曲线的密钥交换算法。
ECDHE ⽤于在通信双⽅(如客户端和服务器)之间安全地⽣成共享的秘密密钥,⽽⽆需直接传输该密钥,从⽽提供前向保密性(Perfect Forward Secrecy, PFS)。
1.2 ECDHE 的⼯作原理
ECDHE 的⼯作原理基于 Diffie-Hellman 密钥交换算法,但使⽤了椭圆曲线密码学(ECC)来增强安全性和效率。以下是 ECDHE 密钥交换的简化过程:
1.
密钥对⽣成:客户端和服务器各⾃⽣成⼀个椭圆曲线密钥对,包括⼀个私钥和⼀个公开的椭圆曲线点(公钥)。
2.
公钥交换:客户端将其公钥发送给服务器,服务器也将其公钥发送给客户端。
3.
共享密钥计算:客户端和服务器使⽤对⽅的公钥与⾃⼰的私钥进⾏计算,⽣成⼀个共享的秘密密
钥。由于 ECC 的性质,这个共享密钥对于任何第三⽅是⽆法推算出来的,即使他们截获了公钥。
4.
会话密钥⽣成:最终的共享秘密密钥⽤于派⽣会话密钥,这个会话密钥将⽤于后续的数据加密。
1.3 ECDHE 的特点
●
前向保密性:由于每次连接都⽣成新的临时密钥(“ephemeral”),即使⻓期私钥泄露,过去的通信也⽆法被解密。
●
⾼效性:相⽐传统的基于整数的 Diffie-Hellman 算法,ECDHE 使⽤椭圆曲线提供相同的安全性,但计算量和资源消耗更低。
⼆、AES-GCM(Advanced Encryption Standard - Galois/Counter Mode)
2.1 什么是 AES-GCM?
AES-GCM 代表 Advanced Encryption Standard - Galois/Counter Mode,它是⼀种块加密算法
(AES)的加密模式。GCM(Galois/Counter Mode)是⼀种认证加密模式,结合了数据加密和消息认证两项功能,确保数据的机密性和完整性。
2.2 AES-GCM 的⼯作原理
AES-GCM 结合了
AES 算法和 GCM 模式,⼯作原理如下:
1.
AES 加密:AES 是⼀种对称加密算法,使⽤固定⻓度的密钥(通常为 128、192 或 256 位)对数据块进⾏加密。AES 是⼀种⾮常强⼤的加密标准,⼴泛应⽤于各种加密任务中。
2.
GCM 模式:
计数器模式(Counter Mode, CTR):GCM 使⽤计数器模式将 AES 转换为流加密。计数器模
式通过对每个数据块使⽤⼀个唯⼀的计数器和密钥的加密值,将其与明⽂数据进⾏异或,⽣成
密⽂。这种⽅式允许加密和解密操作并⾏化,提⾼了性能。
Galois 字段认证:GCM 还包括⼀个 Galois 字段多项式运算,⽤于⽣成消息认证码(MAC),
确保加密数据的完整性和真实性。
2.3 AES-GCM 的特点
⾼性能:由于 GCM 的并⾏化特性,AES-GCM 提供了⾮常⾼的加密/解密速度,适合⾼吞吐量的应
⽤。
认证加密:AES-GCM 既加密数据⼜提供数据完整性验证,防⽌数据被篡改或伪造。
低延迟:AES-GCM 尤其适⽤于需要低延迟的⽹络应⽤,如视频流和实时通信。
三、ECDHE 和 AES-GCM 的组合
在许多现代安全协议中,如 TLS,ECDHE 和 AES-GCM 经常组合使⽤。这种组合提供了两⽅⾯的优势:
1.
ECDHE 负责安全的密钥交换,确保双⽅能够安全地⽣成共享的秘密密钥,并提供前向保密性。
2.
AES-GCM 负责在传输过程中加密数据,同时提供数据的完整性验证,确保数据不会被未经授权的⽅读取或篡改。
这种组合的加密套件通常在 TLS 连接中标识为 ECDHE_RSA_WITH_AES_128_GCM_SHA256 或
ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,其中:
ECDHE
代表使⽤椭圆曲线 Diffie-Hellman 进⾏密钥交换。
RSA
或
ECDSA
代表⽤于身份验证的公钥算法(例如 RSA 或椭圆曲线数字签名算法)。
AES_128_GCM
代表使⽤ AES-GCM 模式的 128 位密钥进⾏数据加密。
SHA256
代表使⽤ SHA-256 进⾏哈希计算。
五、TLS 警报协议
TLS 警报协议⽤于在通信过程中通知错误或异常情况。警报消息分为两类:
●
警告(Warning):表示可以处理的错误,不需要⽴即关闭连接。
●
致命错误(Fatal Error):表示严重错误,连接将⽴即关闭。
常⻅的警报类型包括:
●
关闭通知(Close Notify):表示⼀⽅打算终⽌连接。
●
意外消息(Unexpected Message):收到不期望的消息。
●
解密失败(Decryption Failed):解密过程中发⽣错误。
●
证书过期(Certificate Expired):收到的证书已过期。
六、TLS 1.3 的改进
TLS 1.3 是 TLS 协议的最新版本,相⽐ TLS 1.2 做出了许多重要的改进:
●
握⼿简化:TLS 1.3 移除了许多冗余的握⼿消息,握⼿过程更加简洁⾼效,降低了延迟。
●
加密算法改进:TLS 1.3 移除了不安全的加密算法(如 RC4、CBC模式),只保留了强加密算法,如 AES-GCM 和 ChaCha20-Poly1305。
●
前向保密性(Perfect Forward Secrecy, PFS):TLS 1.3 默认使⽤基于 Diffie-Hellman 的密钥交
换算法,确保即使⻓时间后密钥泄露,也⽆法解密过去的通信数据。
●
0-RTT 握⼿:TLS 1.3 引⼊了 0-RTT(零往返时间)恢复握⼿机制,使得在特定条件下可以在不进⾏完整握⼿的情况下快速恢复会话,显著提⾼性能。
七、TLS 在实际应⽤中的重要性
TLS 是现代互联⽹中⾄关重要的协议,⼴泛应⽤于以下场景:
●
HTTPS(HTTP Secure):通过 TLS 为 Web 流量提供加密和安全保护。
●
电⼦邮件传输:TLS ⽤于加密 SMTP、IMAP 和 POP3 等协议中的邮件传输。
●
虚拟专⽤⽹络(VPN):许多 VPN 协议使⽤ TLS 来确保数据传输的安全性。
●
即时通信:如 WhatsApp、Signal 等应⽤使⽤ TLS 来保护消息传输。