傳 輸層安全 性 協定
|
---|
|
|
|
IETF
SSL
概論
[编辑]TLS
TLS协议
TLS协议
当 客 户端连接到 支持 TLS协议的 服 务器要求 建立 安全 连接并列出 了 受支持 的 密 碼套件 (包括 加 密 算法 、散 列 算法 等 ),握手 开始。服 务器从该列 表 中 决定密 碼套件 ,并通知 客 户端。服 务器发回其数字 证书,此证书通常 包含 服 务器的 名称 、受信 任 的 证书颁发机 构(CA)和服 务器的 公 钥。客 户端确认其颁发的证书的 有效 性 。- 为了
生成 会 话密钥用于安全 连接,客 户端使用 服 务器的 公 钥加密 随 机 生成 的 密 钥,并将其发送 到 服 务器,只 有 服 务器才能 使用 自己 的 私 钥解密 。 利用 随 机 数 ,双方 生成 用 于加密 和解 密 的 对称密 钥。这就是 TLS协议的 握手 ,握手 完 毕后的 连接是 安全 的 ,直 到 连接(被 )关闭。如果上述 任 何 一个步骤失败,TLS握手 过程就会失 败,并且断 开所有 的 连接。
互联网安 |
---|
|
应用层 |
|
网络层 |
發展 歷史
[编辑]SSL 1.0 | ||
SSL 2.0 | 1995 |
|
SSL 3.0 | 1996 |
|
TLS 1.0 | 1999 |
于2021 |
TLS 1.1 | 2006 |
于2021 |
TLS 1.2 | 2008 |
|
TLS 1.3 | 2018 |
安全 网络编程
[编辑]SSL 1.0、2.0和 3.0
[编辑]SSL(Secure Sockets Layer)
2014
- 1.0
版本 从未公 开过,因 为存在 严重的 安全 漏 洞 。 - 2.0
版本 在 1995年 2月 发布。2011年 ,RFC 6176標準 棄用了 SSL 2.0。 - 3.0
版本 在 1996年 发布,是 由 網 景 工程 師 保 罗·科 切 、Phil Karlton和 Alan Freier完全 重 新 设计的 。2015年 ,RFC 7568標準 棄用了 SSL 3.0。
TLS 1.0
[编辑]IETF
TLS 1.1
[编辑]TLS 1.1
TLS 1.2
[编辑]TLS 1.2
增加 SHA-2密 碼雜湊 函數 。增加 AEAD加 密 算法 ,如GCM模 式 。添加 TLS扩展定 义和AES密 码组合 [11]:2。所有 TLS版本 在 2011年 3月 发布的 RFC 6176中 删除了 对SSL的 兼 容 ,这样TLS会 话将永 远无法 协商使用 的 SSL 2.0以避免 安全 问题。
TLS 1.3
[编辑]TLS 1.3
将 密 鑰交換 算法 (如ECDHE)和 認證 算法 (如RSA)从密 码套件 中分 离出来 。移 除 MD5、SHA1密 碼雜湊 函數 的 支持 。- 请求
数字 签名。 集成 HKDF和 半 短 暂DH提 议。替 换使用 PSK和 票 据 的 恢复。支持 1-RTT握手 并初步 支持 0-RTT。通 过在密 鑰協商 期 间使用 临时密 钥来保 证完善 的 前 向 安全 性 。放 弃许多 不 安全 或 过时特性 的 支持 ,包括 数 据 压缩、重 新 协商、非 AEAD加 密 算法 、静 态RSA和 静 态DH密 钥交换、自 定 义DHE分 组、点 格式 协商、更改 密 码本规范的 协议、UNIX时间的 Hello消息 ,以及长度字 段 AD输入到 AEAD密 码本。- 較TLS 1.2
速度 更 快 ,效能 更 好 。 移 除 RC4加 密 演算 法的 支援 。集成 会 话散列 的 使用 。- 弃用记录层版
本号 和 冻结数 以改进向后 兼 容 性 。 将 一些安全相关的算法细节从附录移动到标准,并将ClientKeyShare降 级到附 录。支援 Ed25519和 Ed448数字 签名算法 。支援 X25519密 鑰交換 。支援 帶 Poly1305訊息驗 證 碼的 ChaCha20加 密 演算 法 。支持 加 密 服 务器名称 指示 (Encrypted Server Name Indication, ESNI)。[14]
网络
Google Chrome曾在2017
wolfSSL
算法
[编辑]密 钥交换和密 钥协商
[编辑]TLS_DH_anon
SSL 2.0 | SSL 3.0 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | ||
---|---|---|---|---|---|---|---|
RSA | RFC | ||||||
DH-RSA | |||||||
DHE-RSA( |
|||||||
ECDH-RSA | |||||||
ECDHE-RSA( |
|||||||
DH-DSS | |||||||
DHE-DSS( |
|||||||
DHE-ECDSA ( |
|||||||
ECDH-ECDSA | |||||||
ECDHE-ECDSA( |
|||||||
DHE-EdDSA ( |
|||||||
ECDH-EdDSA | |||||||
ECDHE-EdDSA ( |
|||||||
PSK | |||||||
RSA-PSK | |||||||
DHE-PSK( |
|||||||
ECDHE-PSK( |
|||||||
SRP | |||||||
SRP-DSS | |||||||
SRP-RSA | |||||||
Kerberos | ? | ||||||
DH-ANON( |
|||||||
ECDH-ANON( |
|||||||
GOST R 34.10-94 / 34.10-2001[28] | |||||||
GOST R 34.10-2012[29] | RFC 9189 9367 |
加 密密 码
[编辑]协议 |
|||||||||
---|---|---|---|---|---|---|---|---|---|
类型 | 长度(bits) | SSL 2.0 | SSL 3.0 [n 1][n 2][n 3][n 4] |
TLS 1.0 [n 1][n 3] |
TLS 1.1 [n 1] |
TLS 1.2 [n 1] |
TLS 1.3 | ||
AES GCM[30][n 5] | 256, 128 | RFC | |||||||
AES CCM[31][n 5] | |||||||||
AES CBC[n 6] | |||||||||
Camellia GCM[32][n 5] | 256, 128 | ||||||||
Camellia CBC[33][n 6] | |||||||||
ARIA |
256, 128 | ||||||||
ARIA |
|||||||||
SEED |
128 | ||||||||
3DES EDE CBC[n 6][n 7] | 112[n 8] | ||||||||
GOST 28147-89 CNT[28][n 7] | 256 | ||||||||
GOST R 34.12-2015 Magma CTR[29][n 7] | 256 | ||||||||
GOST R 34.12-2015 Kuznyechik CTR[29] | 256 | ||||||||
GOST R 34.12-2015 Magma MGM[29][n 5][n 7] | 256 | ||||||||
GOST R 34.12-2015 Kuznyechik MGM[29][n 5] | 256 | ||||||||
IDEA CBC[n 6][n 7][n 9] | 128 | 从TLS 1.2标准 | |||||||
DES CBC[n 6][n 7][n 9] | 56 | ||||||||
[n 10] | 40|||||||||
RC2 CBC[n 6][n 7] | [n 10] | 40||||||||
ChaCha20-Poly1305[40][n 5] | 256 | RFC | |||||||
RC4[n 11] | 128 | ||||||||
[n 10] | 40|||||||||
None | Null[n 12] | – | RFC |
- 标注
- ^ 1.0 1.1 1.2 1.3 RFC 5746 must be implemented to fix a renegotiation flaw that would otherwise break this protocol.
- ^ If libraries implement fixes listed in RFC 5746, this violates the SSL 3.0 specification, which the IETF cannot change unlike TLS. Fortunately, most current libraries implement the fix and disregard the violation that this causes.
- ^ 3.0 3.1 The BEAST attack breaks all block ciphers (CBC ciphers) used in SSL 3.0 and TLS 1.0 unless mitigated by the client and/or the server. See § Web browsers.
- ^ The POODLE attack breaks all block ciphers (CBC ciphers) used in SSL 3.0 unless mitigated by the client and/or the server. See § Web browsers.
- ^ 5.0 5.1 5.2 5.3 5.4 5.5 5.6
認證 加 密 (倒 如GCM和 CCM)只 適用 於TLS 1.2或 以上 版本 。 - ^ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 如該
加 密 系統 並 未 移 除 所有 計時 旁 路 ,幸 运十 三 攻 击能 破 解 CBC加 密 。 - ^ 7.0 7.1 7.2 7.3 7.4 7.5 7.6 Sweet32
攻擊 能 破 解 分 組長 度 為 64位 元 的 區 塊 加 密 法 。[36] - ^ 儘各3DES
的 金 鑰長度 為 168位 元 , 它的有效 安全 性 僅為112位 元 ,[37]遠 低 於建議 的 最少 128位 元 。[38] - ^ 9.0 9.1 TLS 1.2
已 移 除 IDEA和 DES。[39] - ^ 10.0 10.1 10.2 此等
密 鑰長度 只 有 40位 元 的 密 碼套件 為 降 級 版本 ,以符合 (於2000年 被 大幅 放 寬 )美國 對 某 些高強度 加 密 技術 的 出口 管制 。自 TLS 1.1起 ,它們均 被 禁 用 。 - ^ Use of RC4 in all versions of TLS is prohibited by RFC 7465 (because RC4 attacks weaken or break RC4 used in SSL/TLS).
- ^ Authentication only, no encryption.
数 据 完 整 性
[编辑]訊息
SSL 2.0 | SSL 3.0 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | ||
---|---|---|---|---|---|---|---|
HMAC-MD5 | RFC | ||||||
HMAC-SHA1 | |||||||
HMAC-SHA256/384 | |||||||
AEAD | |||||||
GOST 28147-89 IMIT | RFC 9189 | ||||||
GOST R 34.11-94 | RFC Draft | ||||||
GOST R 34.12-2015 AEAD | RFC 9367 |
过程
[编辑]TLS
TLS
- 对等协商
支援 的 TLS版本 ,和 支援 的 密 碼套件 。 基 于非 对称密 钥的 身 份认证,通常 是 基 于PKI证书的 身 份认证。伺服器 將 其X.509證書 發送 給 客 戶 端 ,由 客 戶 端 驗 證 伺服器 的 身 份。如果伺服器 要 驗 證 客 戶 端 的 證書 ,則 客 戶 端 可能 會 將 客 戶 端 證書 發送 給 伺服器 。通常 僅驗證 伺服器 ,不 驗 證 客 戶 端 。基 于对称密 钥的 數 據 加 密 。客 戶 端 生成 隨 機 數 作為 對談 金 鑰,並 使用 伺服器 公 鑰(伺服器 公 鑰在伺服器 證書 中 )加 密 對談 金 鑰,最後 將 已 加 密 的 對談 金 鑰發送 給 伺服器 。由 伺服器 的 私 鑰解 密 出 對談 金 鑰。最後 使用 此對談 金 鑰加密 數 據 。TLS也可以使用 預 共用 金 鑰(PSK)作為 對稱 密 鑰。
身 份驗證 :RSA、DSA、ECDSA;密 鑰交換 :PSK、Diffie-Hellman、ECDH;- 对称
密 钥加密 :RC4、DES、3DES、AES、ChaCha20以及Camellia; 散 列 函数 :MD5、SHA家族 。
参考 文献
[编辑]- ^ "SSL/TLS in Detail (页面
存 档备份,存 于互联网档案 馆)". Microsoft TechNet. Updated July 31, 2003. - ^ RFC 6176. [2020-05-22]. (
原始 内容 存 档于2016-12-06). - ^ RFC 7568. [2020-05-22]. (
原始 内容 存 档于2018-03-28). - ^ 4.0 4.1 4.2 RFC 8996. [2021-03-25]. (
原始 内容 存 档于2021-03-24). - ^ Thomas Y. C. Woo, Raghuram Bindignavle, Shaowen Su and Simon S. Lam, SNP: An interface for secure network programming (页面
存 档备份,存 于互联网档案 馆) Proceedings USENIX Summer Technical Conference, June 1994 - ^ THE SSL PROTOCOL. Netscape Corporation. 2007 [2014-12-02]. (
原始 内容 存 档于1997-06-14). - ^ Messmer, Ellen. Father of SSL, Dr. Taher Elgamal, Finds Fast-Moving IT Projects in the Middle East. Network World. [30 May 2014]. (
原始 内容 存 档于2014年 5月 31日 ). - ^ Greene, Tim. Father of SSL says despite attacks, the security linchpin has lots of life left. Network World. [30 May 2014]. (
原始 内容 存 档于2014年 5月 31日 ). - ^ POODLE: SSLv3 vulnerability (CVE-2014-3566). [21 October 2014]. (
原始 内容 存 档于2016-03-17). - ^ Dierks, T. and E. Rescorla. The Transport Layer Security (TLS) Protocol Version 1.1, RFC 4346. April 2006 [2014-12-02]. (
原始 内容 存 档于2017-12-24). - ^ 11.0 11.1 Polk, Tim; McKay, Terry; Chokhani, Santosh. Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations (PDF). National Institute of Standards and Technology: 67. April 2014 [2014-05-07]. (
原始 内容 存 档 (PDF)于2014-05-08). - ^
林 妍溱.微 軟、蘋果、Google及Mozilla四大瀏覽器業者在2020年 終止 支援 TLS 1.0、1.1. iThome. 2018-10-16 [2020-01-12]. (原始 内容 存 档于2020-01-12). - ^ Joseph A. Salowey; Sean Turner; Christopher A. Wood. TLS 1.3. IETF. 2018-08-10 [2018-08-11]. (
原始 内容 存 档于2018-08-11) (英 语). - ^ pigsrollaroundinthem. TLS 1.3
下 的 SNI将 让审查变得 更 困 难. Solidot. 2018-08-16 [2018-08-27]. (原始 内容 存 档于2018-08-27). - ^ NSS 3.29 release notes. Mozilla Developer Network. February 2017 [2018-08-11]. (
原始 内容 存 档于2017-02-22). - ^ Enable TLS 1.3 by default. Bugzilla@Mozilla. 16 October 2016 [10 October 2017]. (
原始 内容 存 档于2018-08-12). - ^ Firefox — Notes (60.0). Mozilla. [2018-05-10]. (
原始 内容 存 档于2018-05-09) (美国 英 语). - ^ ProxySG, ASG and WSS will interrupt SSL connections when clients using TLS 1.3 access sites also using TLS 1.3. BlueTouch Online. 16 May 2017 [11 September 2017]. (
原始 内容 存 档于2017-09-12). - ^ wolfSSL TLS 1.3 BETA Release Now Available. info@wolfssl.com. 11 May 2017 [11 May 2017]. (
原始 内容 存 档于2018-07-25). - ^ TLS 1.3 PROTOCOL SUPPORT. info@wolfssl.com. (
原始 内容 存 档于2018-07-26). - ^ TLS 1.3 Draft 28 Support in wolfSSL. info@wolfssl.com. 14 June 2018 [14 June 2018]. (
原始 内容 存 档于2018-07-25). - ^ RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2. Internet Engineering Task Force. [9 September 2013]. (
原始 内容 存 档于2017-12-24). - ^ P. Eronen, Ed. RFC 4279: Pre-Shared Key Ciphersuites for Transport Layer Security (TLS). Internet Engineering Task Force. [9 September 2013]. (
原始 内容 存 档于2013-09-05). - ^ D. Taylor, Ed. Using the Secure Remote Password (SRP) Protocol for TLS Authentication. Internet Engineering Task Force. November 2007 [December 21, 2014]. RFC 5054 . doi:10.17487/RFC5054 . (
原始 内容 存 档于December 7, 2014). - ^ Gothard, Peter. Google updates SSL certificates to 2048-bit encryption. Computing. Incisive Media. [9 September 2013]. (
原始 内容 存 档于2013-09-22). - ^ Sean Turner. Consensus: remove DSA from TLS 1.3. September 17, 2015 [2018-01-28]. (
原始 内容 存 档于2015-10-03). - ^ RFC 8422
- ^ 28.0 28.1 draft-chudov-cryptopro-cptls-04 – GOST 28147-89 Cipher Suites for Transport Layer Security (TLS)
- ^ 29.0 29.1 29.2 29.3 29.4 RFC 5830 6986 7091 7801 8891
- ^ RFC 5288 5289
- ^ RFC 6655 7251
- ^ RFC 6367
- ^ RFC 5932 6367
- ^ 34.0 34.1 RFC 6209
- ^ RFC 4162
- ^ On the Practical (In-)Security of 64-bit Block Ciphers — Collision Attacks on HTTP over TLS and OpenVPN (PDF). 2016-10-28 [2017-06-08]. (
原始 内容 存 档 (PDF)于2017-04-24). - ^ NIST Special Publication 800-57 Recommendation for Key Management — Part 1: General (Revised) (PDF). 2007-03-08 [2014-07-03]. (
原始 内容 (PDF)存 档于2014-06-06). - ^ Qualys SSL Labs. SSL/TLS Deployment Best Practices. [2 June 2015]. (
原始 内容 存 档于2015-07-04). - ^ RFC 5469
- ^ RFC 7905
- ^ AEAD Ciphers. [2014-12-02]. (
原始 内容 存 档于2017-12-24).
外部 链接
[编辑]参 见
[编辑]
|
|
|