fbpx
维基百科

傳輸層安全性協定

傳輸層安全性協定(英語:Transport Layer Security,縮寫:TLS)前身稱為安全套接层(英語:Secure Sockets Layer,縮寫:SSL)是一种安全协议,目的是為網際網路通信提供安全及数据完整性保障。

網景公司(Netscape)在1994年推出首版網頁瀏覽器網景領航員時,推出HTTPS協定,以SSL進行加密,這是SSL的起源。

IETF將SSL進行標準化,1999年公布TLS 1.0標準文件(RFC 2246)。隨後又公布TLS 1.1(RFC 4346,2006年)、TLS 1.2(RFC 5246,2008年)和TLS 1.3(RFC 8446,2018年)。在瀏覽器電子郵件即時通訊VoIP網路傳真等應用程式中,廣泛使用這個協定。許多網站,如GoogleFacebookWikipedia等也以這個協定來建立安全連線,傳送資料。目前已成为互联网上保密通信的工业标准。

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。傳輸層安全協議使用X.509認證,之後利用非對稱加密演算來對通訊方做身份認證,之後交換對稱密匙作為會话密匙(Session key)。這個會談密匙是用來將通訊兩方交換的資料做加密,保证两个应用间通信的保密性和可靠性,使客户與服务器应用之间的通信不被攻击者窃听。

概論

TLS協定採用主從式架構模型,用于在兩個應用程式間透過網路建立起安全的連線,防止在交換資料时受到竊聽及篡改。

TLS协议的优势是与高层的应用层协议(如HTTPFTPTelnet等)无耦合。应用层协议能透明地运行在TLS协议之上,由TLS协议进行建立加密通道需要的协商和认证。应用层协议传送的数据在通过TLS协议时都会被加密,从而保证通信的私密性。

TLS协议是可选的,必须配置客户端和服务器才能使用。主要有两种方式实现这一目标:一个是使用统一的TLS协议通訊埠(例如:用于HTTPS的端口443);另一个是客户端请求服务器连接到TLS时使用特定的协议机制(例如:電子郵件常用的STARTTLS)。一旦客户端和服务器都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据[1]。通过握手,客户端和服务器协商各种参数用于建立安全连接:

  • 当客户端连接到支持TLS协议的服务器要求建立安全连接并列出了受支持的密碼套件(包括加密算法散列算法等),握手开始。
  • 服务器从该列表中决定密碼套件,并通知客户端。
  • 服务器发回其数字证书,此证书通常包含服务器的名称、受信任的证书颁发机构(CA)和服务器的公钥。
  • 客户端确认其颁发的证书的有效性。
  • 为了生成会话密钥用于安全连接,客户端使用服务器的公钥加密随机生成的密钥,并将其发送到服务器,只有服务器才能使用自己的私钥解密。
  • 利用随机数,双方生成用于加密和解密的对称密钥。这就是TLS协议的握手,握手完毕后的连接是安全的,直到连接(被)关闭。如果上述任何一个步骤失败,TLS握手过程就会失败,并且断开所有的连接。

發展歷史

協議 發布時間 狀態
SSL 1.0 未公佈 未公佈
SSL 2.0 1995年 已於2011年棄用[2]
SSL 3.0 1996年 已於2015年棄用[3]
TLS 1.0 1999年 于2021年弃用[4]
TLS 1.1 2006年 于2021年弃用[4]
TLS 1.2 2008年
TLS 1.3 2018年

安全网络编程

早期的研究工作,为方便改造原有网络应用程序,在1993年已经有了相似的Berkeley套接字安全传输层API方法[5]

SSL 1.0、2.0和3.0

SSL(Secure Sockets Layer)是网景公司(Netscape)设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用[6]

基础算法由作为网景公司的首席科学家塔希爾·蓋莫爾(Taher Elgamal)编写,所以他被人称为“SSL之父”。[7][8]

2014年10月,Google發布在SSL 3.0中發現設計缺陷,建議禁用此一協議。攻擊者可以向TLS發送虛假錯誤提示,然後將安全連接強行降級到过时且不安全的SSL 3.0,然後就可以利用其中的設計漏洞竊取敏感信息。Google在自己公司相關產品中陸續禁止回溯相容,強制使用TLS協議。Mozilla也在11月25日發布的Firefox 34中徹底禁用了SSL 3.0。微軟同樣發出了安全通告[9]

  • 1.0版本从未公开过,因为存在严重的安全漏洞。
  • 2.0版本在1995年2月发布。2011年,RFC 6176 標準棄用了SSL 2.0。
  • 3.0版本在1996年发布,是由網景工程師保罗·科切英语Paul_Carl_Kocher、Phil Karlton和Alan Freier完全重新设计的。2015年,RFC 7568 標準棄用了SSL 3.0。

TLS 1.0

IETF将SSL标准化,即 RFC 2246 ,并将其称为TLS(Transport Layer Security)。

TLS 1.1

TLS 1.1在 RFC 4346 中定义,于2006年4月发表[10],它是TLS 1.0的更新。在此版本中的差异包括:

  • 添加对CBC攻击的保护:
    • 隐式IV被替换成一个显式的IV
    • 更改分组密码模式中的填充错误。
  • 支持IANA登记的参数。[11]:2

微軟、Google、蘋果、Mozilla四家瀏覽器業者將在2020年終止支援TLS 1.0及1.1版[12]。2021年3月,RFC 8996标准弃用了TLS 1.0和TLS 1.1[4]

TLS 1.2

TLS 1.2在 RFC 5246 中定义,于2008年8月发表。它基于更早的TLS 1.1规范。主要区别包括:

  • 增加SHA-2密碼雜湊函數。
  • 增加AEAD加密算法,如GCM模式。
  • 添加TLS扩展定义和AES密码组合[11]:2。所有TLS版本在2011年3月发布的RFC 6176中删除了对SSL的兼容,这样TLS会话将永远无法协商使用的SSL 2.0以避免安全问题。

TLS 1.3

TLS 1.3在 RFC 8446 中定义,于2018年8月发表。[13]它与TLS 1.2的主要区别包括:

  • 密鑰交換算法(如ECDHE)和認證算法(如RSA)从密码套件中分离出来。
  • 移除MD5SHA1密碼雜湊函數的支持。
  • 请求数字签名
  • 集成HKDF英语Key derivation function和半短暂DH提议。
  • 替换使用PSK英语TLS-PSK和票据的恢复。
  • 支持1-RTT握手并初步支持0-RTT。
  • 通过在密鑰協商期间使用临时密钥来保证完善的前向安全性
  • 放弃许多不安全或过时特性的支持,包括数据压缩、重新协商、非AEAD加密算法、静态RSA和静态DH密钥交换、自定义DHE分组、点格式协商、更改密码本规范的协议、UNIX时间的Hello消息,以及长度字段AD输入到AEAD密码本。
  • 較TLS 1.2速度更快,效能更好。
  • 移除RC4加密演算法的支援。
  • 集成会话散列的使用。
  • 弃用记录层版本号和冻结数以改进向后兼容性。
  • 将一些安全相关的算法细节从附录移动到标准,并将ClientKeyShare降级到附录。
  • 支援Ed25519英语EdDSA#Ed25519和Ed448数字签名算法。
  • 支援X25519密鑰交換。
  • 支援帶Poly1305訊息驗證碼ChaCha20加密演算法。
  • 支持加密服务器名称指示Encrypted Server Name Indication, ESNI)。[14]

网络安全服务(NSS)是由Mozilla开发并由其网络浏览器Firefox使用的加密库,自2017年2月起便默认启用TLS 1.3。[15]随后TLS 1.3被添加到2017年3月发布的Firefox 52.0中,但它由于某些用户的兼容性问题,默认情况下禁用。[16]直到Firefox 60.0才正式默认启用。[17]

Google Chrome曾在2017年短时间将TLS 1.3设为默认,然而由于类似Blue Coat Systems英语Blue Coat Systems等不兼容组件而被取消。[18]

wolfSSL在2017年5月发布的3.11.1版本中启用了TLS 1.3。[19]作为第一款支持TLS 1.3部署,wolfSSL 3.11.1 支持 TLS 1.3 Draft 18(现已支持到Draft 28),[20]同时官方也发布了一系列关于TLS 1.2和TLS 1.3性能差距的博客。[21]

算法

密钥交换和密钥协商

在客户端和服务器开始交换TLS所保护的加密信息之前,他们必须安全地交换或协定加密密钥和加密数据时要使用的密码。用于密钥交换的方法包括:使用RSA算法生成公钥和私钥(在TLS 握手协议中被称为TLS_RSA)、Diffie-Hellman(在TLS握手协议中被称为TLS_DH)、临时Diffie-Hellman(在TLS握手协议中被称为TLS_DHE)、橢圓曲線迪菲-赫爾曼(在TLS握手协议中被称为TLS_ECDH)、临时椭圆曲线Diffie-Hellman(在TLS握手协议中被称为TLS_ECDHE)、匿名Diffie-Hellman(在TLS握手协议中被称为TLS_DH_anon)[22]和预共享密钥(在TLS握手协议中被称为TLS_PSK)。[23]

TLS_DH_anon和TLS_ECDH_anon的密钥协商协议不能验证服务器或用户,因为易受中间人攻击因此很少使用。只有TLS_DHE和TLS_ECDHE提供前向保密能力。

在交换过程中使用的公钥/私钥加密密钥的长度和在交换协议过程中使用的公钥证书也各不相同,因而提供的強健性的安全。2013年7月Google宣布向其用户提供的TLS加密将不再使用1024位公钥并切换到至少2048位,以提高安全性。[24]

身份验证和密钥交换协议列表
算法 SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 状态
RSA RFC中TLS 1.2的定義
DH-RSA
DHE-RSA(具有前向安全性
ECDH-RSA
ECDHE-RSA(具有前向安全性
DH-DSS
DHE-DSS(具有前向安全性 [25]
ECDH-ECDSA
ECDHE-ECDSA(具有前向安全性
PSK
PSK英语Pre-shared key-RSA
DHE-PSK英语Pre-shared key(具有前向安全性
ECDHE-PSK英语Pre-shared key(具有前向安全性
SRP
SRP-DSS
SRP-RSA
Kerberos
DH-ANON(不安全)
ECDH-ANON(不安全)
GOST R 34.10-94 / 34.10-2001英语GOST[26] 在RFC草案中提出

加密密码

针对公开可行的攻击的密碼安全性
密碼 协议版本 状态
类型 算法 长度(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[27][n 5] 256, 128 不適用 不適用 不適用 不適用 安全 安全 RFC中TLS 1.2的定義
AES CCM英语CCM_mode[28][n 5] 不適用 不適用 不適用 不適用 安全 安全
AES CBC[n 6] 不適用 不安全 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用
Camellia GCM[29][n 5] 256, 128 不適用 不適用 不適用 不適用 安全 不適用
Camellia CBC[30][n 6] 不適用 不安全 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用
ARIA加密算法英语ARIA_(cipher) GCM[31][n 5] 256, 128 不適用 不適用 不適用 不適用 安全 不適用
ARIA加密算法英语ARIA_(cipher) CBC[31][n 6] 不適用 不適用 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用
SEED加密算法英语SEED (cipher) CBC[32][n 6] 128 不適用 不安全 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用
3DES EDE CBC[n 6][n 7] 112[n 8] 不安全 不安全 不安全 不安全 不安全 不適用
GOST 28147-89英语GOST_(block_cipher) CNT[26][n 7] 256 不適用 不適用 不安全 不安全 不安全 不適用 定义于RFC 4357
IDEA CBC[n 6][n 7][n 9] 128 不安全 不安全 不安全 不安全 不適用 不適用 从TLS 1.2标准中移除
DES CBC[n 6][n 7][n 9] 056 不安全 不安全 不安全 不安全 不適用 不適用
040[n 10] 不安全 不安全 不安全 不適用 不適用 不適用 在TLS 1.1及之后版本禁止
RC2英语RC2 CBC[n 6][n 7] 040[n 10] 不安全 不安全 不安全 不適用 不適用 不適用
流加密 ChaCha20-Poly1305[37][n 5] 256 不適用 不適用 不適用 不適用 安全 安全 RFC中TLS 1.2的定義
RC4[n 11] 128 不安全 不安全 不安全 不安全 不安全 不適用 RFC 7465定义所有版本TLS禁止
040[n 10] 不安全 不安全 不安全 不適用 不適用 不適用
None Null[n 12] 不安全 不安全 不安全 不安全 不安全 不適用 RFC中TLS 1.2的定義
标注
  1. ^ 1.0 1.1 1.2 1.3 RFC 5746 must be implemented to fix a renegotiation flaw that would otherwise break this protocol.
  2. ^ 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. ^ 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.
  4. ^ 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. ^ 5.0 5.1 5.2 5.3 5.4 AEAD ciphers (such as GCM and CCM英语CCM_mode) can be used in only TLS 1.2.
  6. ^ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 CBC ciphers can be attacked with the Lucky Thirteen attack if the library is not written carefully to eliminate timing side channels.
  7. ^ 7.0 7.1 7.2 7.3 7.4 The Sweet32 attack breaks block ciphers with a block size of 64 bits.[33]
  8. ^ Although the key length of 3DES is 168 bits, effective security strength of 3DES is only 112 bits,[34] which is below the recommended minimum of 128 bits.[35]
  9. ^ 9.0 9.1 IDEA and DES have been removed from TLS 1.2.[36]
  10. ^ 10.0 10.1 10.2 40 bits strength of cipher suites were designed to operate at reduced key lengths to comply with US regulations about the export of cryptographic software containing certain strong encryption algorithms (see 美國的加密技術出口管制). These weak suites are forbidden in TLS 1.1 and later.
  11. ^ Use of RC4 in all versions of TLS is prohibited by RFC 7465 (because RC4 attacks weaken or break RC4 used in SSL/TLS).
  12. ^ Authentication only, no encryption.

数据完整性

訊息鑑別碼(MAC)用于对数据完整性进行认证。HMAC用于CBC模式的块密码AEAD例如GCM模式和CCM模式使用AEAD內建的訊息鑒別碼,不使用HMAC[38]。另外,在TLS握手過程中需要使用基於HMAC的偽隨機函數(PRF),或HKDF英语HKDF

數據的完整性
算法 SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 狀態
HMAC-MD5 RFC中TLS 1.2的定義
HMAC-SHA1
HMAC-SHA256/384
AEAD
GOST 28147-89 IMIT英语GOST (hash function) 在RFC草案中提出
GOST R 34.11-94英语GOST (hash function)

过程

TLS在互联网上為HTTP等應用程式提供身份驗證加密完整性,其基础是公钥基础设施。这是因为公鑰基礎設施普遍商业运营。TLS协议的设计在某种程度上能够使主从架构应用程序通讯预防窃听、干扰和消息伪造。

TLS包含幾個基本阶段:

  1. 对等协商支援的TLS版本,和支援的密碼套件
  2. 基于非对称密钥的身份认证,通常是基于PKI证书的身份认证伺服器將其X.509證書發送給客戶端,由客戶端驗證伺服器的身份。如果伺服器要驗證客戶端的證書,則客戶端可能會將客戶端證書發送給伺服器。通常僅驗證伺服器,不驗證客戶端。
  3. 基于对称密钥的數據加密。客戶端生成隨機數作為對談金鑰,並使用伺服器公鑰(伺服器公鑰在伺服器證書中)加密對談金鑰,最後將已加密的對談金鑰發送給伺服器。由伺服器的私鑰解密出對談金鑰。最後使用此對談金鑰加密數據。TLS也可以使用預共用金鑰(PSK)作為對稱密鑰。

在第一阶段,客户端与服务器协商所用密码算法。当前广泛实现的算法选择如下:

参考文献

  1. ^ "SSL/TLS in Detail (页面存档备份,存于互联网档案馆)". Microsoft TechNet. Updated July 31, 2003.
  2. ^ RFC 6176. [2020-05-22]. (原始内容于2016-12-06). 
  3. ^ RFC 7568. [2020-05-22]. (原始内容于2018-03-28). 
  4. ^ 4.0 4.1 4.2 RFC 8996. [2021-03-25]. (原始内容于2021-03-24). 
  5. ^ 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
  6. ^ THE SSL PROTOCOL. Netscape Corporation. 2007 [2014-12-02]. (原始内容于1997-06-14). 
  7. ^ Messmer, Ellen. . Network World. [30 May 2014]. (原始内容存档于2014年5月31日). 
  8. ^ Greene, Tim. . Network World. [30 May 2014]. (原始内容存档于2014年5月31日). 
  9. ^ POODLE: SSLv3 vulnerability (CVE-2014-3566). [21 October 2014]. (原始内容于2016-03-17). 
  10. ^ 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. ^ 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). 
  12. ^ 微軟、蘋果、Google及Mozilla四大瀏覽器業者將在2020年終止支援TLS 1.0、1.1. [2020-01-12]. (原始内容于2020-01-12). 
  13. ^ Joseph A. Salowey; Sean Turner; Christopher A. Wood. TLS 1.3. IETF. 2018-08-10 [2018-08-11]. (原始内容于2018-08-11) (英语). 
  14. ^ pigsrollaroundinthem. TLS 1.3 下的 SNI 将让审查变得更困难. Solidot. 2018-08-16 [2018-08-27]. (原始内容于2018-08-27). 
  15. ^ NSS 3.29 release notes. Mozilla Developer Network. February 2017 [2018-08-11]. (原始内容于2017-02-22). 
  16. ^ Enable TLS 1.3 by default. Bugzilla@Mozilla. 16 October 2016 [10 October 2017]. (原始内容于2018-08-12). 
  17. ^ Firefox — Notes (60.0). Mozilla. [2018-05-10]. (原始内容于2018-05-09) (美国英语). 
  18. ^ . BlueTouch Online. 16 May 2017 [11 September 2017]. (原始内容存档于2017-09-12). 
  19. ^ wolfSSL TLS 1.3 BETA Release Now Available. info@wolfssl.com. 11 May 2017 [11 May 2017]. (原始内容于2018-07-25). 
  20. ^ TLS 1.3 PROTOCOL SUPPORT. info@wolfssl.com. (原始内容于2018-07-26). 
  21. ^ TLS 1.3 Draft 28 Support in wolfSSL. info@wolfssl.com. 14 June 2018 [14 June 2018]. (原始内容于2018-07-25). 
  22. ^ RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2. Internet Engineering Task Force. [9 September 2013]. (原始内容于2017-12-24). 
  23. ^ P. Eronen, Ed. RFC 4279: Pre-Shared Key Ciphersuites for Transport Layer Security (TLS). Internet Engineering Task Force. [9 September 2013]. (原始内容于2013-09-05). 
  24. ^ Gothard, Peter. Google updates SSL certificates to 2048-bit encryption. Computing. Incisive Media. [9 September 2013]. (原始内容于2013-09-22). 
  25. ^ Sean Turner. Consensus: remove DSA from TLS 1.3. September 17, 2015 [2018-01-28]. (原始内容于2015-10-03). 
  26. ^ RFC 5288
  27. ^ RFC 6655
  28. ^ RFC 6367
  29. ^ RFC 5932
  30. ^ 31.0 31.1 RFC 6209
  31. ^ RFC 4162
  32. ^ 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). 
  33. ^ (PDF). 2007-03-08 [2014-07-03]. (原始内容 (PDF)存档于2014-06-06). 
  34. ^ Qualys SSL Labs. SSL/TLS Deployment Best Practices. [2 June 2015]. (原始内容于2015-07-04). 
  35. ^ RFC 5469
  36. ^ RFC 7905
  37. ^ AEAD Ciphers. [2014-12-02]. (原始内容于2017-12-24). 

外部链接

参见

傳輸層安全性協定, 此條目可参照英語維基百科相應條目来扩充, 2020年8月11日, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 英語, transport, layer, securit. 此條目可参照英語維基百科相應條目来扩充 2020年8月11日 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 傳輸層安全性協定 英語 Transport Layer Security 縮寫 TLS 前身稱為安全套接层 英語 Secure Sockets Layer 縮寫 SSL 是一种安全协议 目的是為網際網路通信提供安全及数据完整性保障 網景公司 Netscape 在1994年推出首版網頁瀏覽器 網景領航員時 推出HTTPS協定 以SSL進行加密 這是SSL的起源 IETF將SSL進行標準化 1999年公布TLS 1 0標準文件 RFC 2246 隨後又公布TLS 1 1 RFC 4346 2006年 TLS 1 2 RFC 5246 2008年 和TLS 1 3 RFC 8446 2018年 在瀏覽器 電子郵件 即時通訊 VoIP 網路傳真等應用程式中 廣泛使用這個協定 許多網站 如Google Facebook Wikipedia等也以這個協定來建立安全連線 傳送資料 目前已成为互联网上保密通信的工业标准 SSL包含记录层 Record Layer 和传输层 记录层协议确定传输层数据的封装格式 傳輸層安全協議使用X 509認證 之後利用非對稱加密演算來對通訊方做身份認證 之後交換對稱密匙作為會话密匙 Session key 這個會談密匙是用來將通訊兩方交換的資料做加密 保证两个应用间通信的保密性和可靠性 使客户與服务器应用之间的通信不被攻击者窃听 目录 1 概論 2 發展歷史 2 1 安全网络编程 2 2 SSL 1 0 2 0和3 0 2 3 TLS 1 0 2 4 TLS 1 1 2 5 TLS 1 2 2 6 TLS 1 3 3 算法 3 1 密钥交换和密钥协商 3 2 加密密码 3 3 数据完整性 4 过程 5 参考文献 6 外部链接 7 参见概論 编辑TLS協定採用主從式架構模型 用于在兩個應用程式間透過網路建立起安全的連線 防止在交換資料时受到竊聽及篡改 TLS协议的优势是与高层的应用层协议 如HTTP FTP Telnet等 无耦合 应用层协议能透明地运行在TLS协议之上 由TLS协议进行建立加密通道需要的协商和认证 应用层协议传送的数据在通过TLS协议时都会被加密 从而保证通信的私密性 TLS协议是可选的 必须配置客户端和服务器才能使用 主要有两种方式实现这一目标 一个是使用统一的TLS协议通訊埠 例如 用于HTTPS的端口443 另一个是客户端请求服务器连接到TLS时使用特定的协议机制 例如 電子郵件常用的STARTTLS 一旦客户端和服务器都同意使用TLS协议 他们通过使用一个握手过程协商出一个有状态的连接以传输数据 1 通过握手 客户端和服务器协商各种参数用于建立安全连接 当客户端连接到支持TLS协议的服务器要求建立安全连接并列出了受支持的密碼套件 包括加密算法 散列算法等 握手开始 服务器从该列表中决定密碼套件 并通知客户端 服务器发回其数字证书 此证书通常包含服务器的名称 受信任的证书颁发机构 CA 和服务器的公钥 客户端确认其颁发的证书的有效性 为了生成会话密钥用于安全连接 客户端使用服务器的公钥加密随机生成的密钥 并将其发送到服务器 只有服务器才能使用自己的私钥解密 利用随机数 双方生成用于加密和解密的对称密钥 这就是TLS协议的握手 握手完毕后的连接是安全的 直到连接 被 关闭 如果上述任何一个步骤失败 TLS握手过程就会失败 并且断开所有的连接 發展歷史 编辑協議 發布時間 狀態SSL 1 0 未公佈 未公佈SSL 2 0 1995年 已於2011年棄用 2 SSL 3 0 1996年 已於2015年棄用 3 TLS 1 0 1999年 于2021年弃用 4 TLS 1 1 2006年 于2021年弃用 4 TLS 1 2 2008年TLS 1 3 2018年安全网络编程 编辑 早期的研究工作 为方便改造原有网络应用程序 在1993年已经有了相似的Berkeley套接字安全传输层API方法 5 SSL 1 0 2 0和3 0 编辑 SSL Secure Sockets Layer 是网景公司 Netscape 设计的主要用于Web的安全传输协议 这种协议在Web上获得了广泛的应用 6 基础算法由作为网景公司的首席科学家塔希爾 蓋莫爾 Taher Elgamal 编写 所以他被人称为 SSL之父 7 8 2014年10月 Google發布在SSL 3 0中發現設計缺陷 建議禁用此一協議 攻擊者可以向TLS發送虛假錯誤提示 然後將安全連接強行降級到过时且不安全的SSL 3 0 然後就可以利用其中的設計漏洞竊取敏感信息 Google在自己公司相關產品中陸續禁止回溯相容 強制使用TLS協議 Mozilla也在11月25日發布的Firefox 34中徹底禁用了SSL 3 0 微軟同樣發出了安全通告 9 1 0版本从未公开过 因为存在严重的安全漏洞 2 0版本在1995年2月发布 2011年 RFC 6176 標準棄用了SSL 2 0 3 0版本在1996年发布 是由網景工程師保罗 科切 英语 Paul Carl Kocher Phil Karlton和Alan Freier完全重新设计的 2015年 RFC 7568 標準棄用了SSL 3 0 TLS 1 0 编辑 IETF将SSL标准化 即 RFC 2246 并将其称为TLS Transport Layer Security TLS 1 1 编辑 TLS 1 1在 RFC 4346 中定义 于2006年4月发表 10 它是TLS 1 0的更新 在此版本中的差异包括 添加对CBC攻击的保护 隐式IV被替换成一个显式的IV 更改分组密码模式中的填充错误 支持IANA登记的参数 11 2微軟 Google 蘋果 Mozilla四家瀏覽器業者將在2020年終止支援TLS 1 0及1 1版 12 2021年3月 RFC 8996标准弃用了TLS 1 0和TLS 1 1 4 TLS 1 2 编辑 TLS 1 2在 RFC 5246 中定义 于2008年8月发表 它基于更早的TLS 1 1规范 主要区别包括 增加SHA 2密碼雜湊函數 增加AEAD加密算法 如GCM模式 添加TLS扩展定义和AES密码组合 11 2 所有TLS版本在2011年3月发布的RFC 6176中删除了对SSL的兼容 这样TLS会话将永远无法协商使用的SSL 2 0以避免安全问题 TLS 1 3 编辑 参见 來回通訊延遲 TLS 1 3在 RFC 8446 中定义 于2018年8月发表 13 它与TLS 1 2的主要区别包括 将密鑰交換算法 如ECDHE 和認證算法 如RSA 从密码套件中分离出来 移除MD5 SHA1密碼雜湊函數的支持 请求数字签名 集成HKDF 英语 Key derivation function 和半短暂DH提议 替换使用PSK 英语 TLS PSK 和票据的恢复 支持1 RTT握手并初步支持0 RTT 通过在密鑰協商期间使用临时密钥来保证完善的前向安全性 放弃许多不安全或过时特性的支持 包括数据压缩 重新协商 非AEAD加密算法 静态RSA和静态DH密钥交换 自定义DHE分组 点格式协商 更改密码本规范的协议 UNIX时间的Hello消息 以及长度字段AD输入到AEAD密码本 較TLS 1 2速度更快 效能更好 移除RC4加密演算法的支援 集成会话散列的使用 弃用记录层版本号和冻结数以改进向后兼容性 将一些安全相关的算法细节从附录移动到标准 并将ClientKeyShare降级到附录 支援Ed25519 英语 EdDSA Ed25519 和Ed448数字签名算法 支援X25519密鑰交換 支援帶Poly1305訊息驗證碼的ChaCha20加密演算法 支持加密服务器名称指示 Encrypted Server Name Indication ESNI 14 网络安全服务 NSS 是由Mozilla开发并由其网络浏览器Firefox使用的加密库 自2017年2月起便默认启用TLS 1 3 15 随后TLS 1 3被添加到2017年3月发布的Firefox 52 0中 但它由于某些用户的兼容性问题 默认情况下禁用 16 直到Firefox 60 0才正式默认启用 17 Google Chrome曾在2017年短时间将TLS 1 3设为默认 然而由于类似Blue Coat Systems 英语 Blue Coat Systems 等不兼容组件而被取消 18 wolfSSL在2017年5月发布的3 11 1版本中启用了TLS 1 3 19 作为第一款支持TLS 1 3部署 wolfSSL 3 11 1 支持 TLS 1 3 Draft 18 现已支持到Draft 28 20 同时官方也发布了一系列关于TLS 1 2和TLS 1 3性能差距的博客 21 算法 编辑主条目 密码套件 密钥交换和密钥协商 编辑 在客户端和服务器开始交换TLS所保护的加密信息之前 他们必须安全地交换或协定加密密钥和加密数据时要使用的密码 用于密钥交换的方法包括 使用RSA算法生成公钥和私钥 在TLS 握手协议中被称为TLS RSA Diffie Hellman 在TLS握手协议中被称为TLS DH 临时Diffie Hellman 在TLS握手协议中被称为TLS DHE 橢圓曲線迪菲 赫爾曼 在TLS握手协议中被称为TLS ECDH 临时椭圆曲线Diffie Hellman 在TLS握手协议中被称为TLS ECDHE 匿名Diffie Hellman 在TLS握手协议中被称为TLS DH anon 22 和预共享密钥 在TLS握手协议中被称为TLS PSK 23 TLS DH anon和TLS ECDH anon的密钥协商协议不能验证服务器或用户 因为易受中间人攻击因此很少使用 只有TLS DHE和TLS ECDHE提供前向保密能力 在交换过程中使用的公钥 私钥加密密钥的长度和在交换协议过程中使用的公钥证书也各不相同 因而提供的強健性的安全 2013年7月 Google宣布向其用户提供的TLS加密将不再使用1024位公钥并切换到至少2048位 以提高安全性 24 身份验证和密钥交换协议列表 算法 SSL 2 0 SSL 3 0 TLS 1 0 TLS 1 1 TLS 1 2 TLS 1 3 状态RSA 是 是 是 是 是 否 RFC中TLS 1 2的定義DH RSA 否 是 是 是 是 否DHE RSA 具有前向安全性 否 是 是 是 是 是ECDH RSA 否 否 是 是 是 否ECDHE RSA 具有前向安全性 否 否 是 是 是 是DH DSS 否 是 是 是 是 否DHE DSS 具有前向安全性 否 是 是 是 是 否 25 ECDH ECDSA 否 否 是 是 是 否ECDHE ECDSA 具有前向安全性 否 否 是 是 是 是PSK 否 否 是 是 是PSK 英语 Pre shared key RSA 否 否 是 是 是DHE PSK 英语 Pre shared key 具有前向安全性 否 否 是 是 是 是ECDHE PSK 英语 Pre shared key 具有前向安全性 否 否 是 是 是 是SRP 否 否 是 是 是SRP DSS 否 否 是 是 是SRP RSA 否 否 是 是 是Kerberos 否 否 是 是 是DH ANON 不安全 否 是 是 是 是ECDH ANON 不安全 否 否 是 是 是GOST R 34 10 94 34 10 2001 英语 GOST 26 否 否 是 是 是 在RFC草案中提出加密密码 编辑 参见 分组密码工作模式 针对公开可行的攻击的密碼安全性 密碼 协议版本 状态类型 算法 长度 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 27 n 5 256 128 不適用 不適用 不適用 不適用 安全 安全 RFC中TLS 1 2的定義AES CCM 英语 CCM mode 28 n 5 不適用 不適用 不適用 不適用 安全 安全AES CBC n 6 不適用 不安全 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用Camellia GCM 29 n 5 256 128 不適用 不適用 不適用 不適用 安全 不適用Camellia CBC 30 n 6 不適用 不安全 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用ARIA加密算法 英语 ARIA cipher GCM 31 n 5 256 128 不適用 不適用 不適用 不適用 安全 不適用ARIA加密算法 英语 ARIA cipher CBC 31 n 6 不適用 不適用 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用SEED加密算法 英语 SEED cipher CBC 32 n 6 128 不適用 不安全 依赖于后期加入的措施 依赖于后期加入的措施 依赖于后期加入的措施 不適用3DES EDE CBC n 6 n 7 112 n 8 不安全 不安全 不安全 不安全 不安全 不適用GOST 28147 89 英语 GOST block cipher CNT 26 n 7 256 不適用 不適用 不安全 不安全 不安全 不適用 定义于RFC 4357IDEA CBC n 6 n 7 n 9 128 不安全 不安全 不安全 不安全 不適用 不適用 从TLS 1 2标准中移除DES CBC n 6 n 7 n 9 0 56 不安全 不安全 不安全 不安全 不適用 不適用0 40 n 10 不安全 不安全 不安全 不適用 不適用 不適用 在TLS 1 1及之后版本禁止RC2 英语 RC2 CBC n 6 n 7 0 40 n 10 不安全 不安全 不安全 不適用 不適用 不適用流加密 ChaCha20 Poly1305 37 n 5 256 不適用 不適用 不適用 不適用 安全 安全 RFC中TLS 1 2的定義RC4 n 11 128 不安全 不安全 不安全 不安全 不安全 不適用 由RFC 7465定义所有版本TLS禁止0 40 n 10 不安全 不安全 不安全 不適用 不適用 不適用None Null n 12 不安全 不安全 不安全 不安全 不安全 不適用 RFC中TLS 1 2的定義标注 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 AEAD ciphers such as GCM and CCM 英语 CCM mode can be used in only TLS 1 2 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 CBC ciphers can be attacked with the Lucky Thirteen attack if the library is not written carefully to eliminate timing side channels 7 0 7 1 7 2 7 3 7 4 The Sweet32 attack breaks block ciphers with a block size of 64 bits 33 Although the key length of 3DES is 168 bits effective security strength of 3DES is only 112 bits 34 which is below the recommended minimum of 128 bits 35 9 0 9 1 IDEA and DES have been removed from TLS 1 2 36 10 0 10 1 10 2 40 bits strength of cipher suites were designed to operate at reduced key lengths to comply with US regulations about the export of cryptographic software containing certain strong encryption algorithms see 美國的加密技術出口管制 These weak suites are forbidden in TLS 1 1 and later 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 数据完整性 编辑 訊息鑑別碼 MAC 用于对数据完整性进行认证 HMAC用于CBC模式的块密码 AEAD例如GCM模式和CCM模式使用AEAD內建的訊息鑒別碼 不使用HMAC 38 另外 在TLS握手過程中需要使用基於HMAC的偽隨機函數 PRF 或HKDF 英语 HKDF 數據的完整性 算法 SSL 2 0 SSL 3 0 TLS 1 0 TLS 1 1 TLS 1 2 TLS 1 3 狀態HMAC MD5 是 是 是 是 是 否 RFC中TLS 1 2的定義HMAC SHA1 否 是 是 是 是 否HMAC SHA256 384 否 否 否 否 是 否AEAD 否 否 否 否 是 是GOST 28147 89 IMIT 英语 GOST hash function 否 否 是 是 是 在RFC草案中提出GOST R 34 11 94 英语 GOST hash function 否 否 是 是 是过程 编辑TLS在互联网上為HTTP等應用程式提供身份驗證 加密 完整性 其基础是公钥基础设施 这是因为公鑰基礎設施普遍商业运营 TLS协议的设计在某种程度上能够使主从架构应用程序通讯预防窃听 干扰和消息伪造 TLS包含幾個基本阶段 对等协商支援的TLS版本 和支援的密碼套件 基于非对称密钥的身份认证 通常是基于PKI证书的身份认证 伺服器將其X 509證書發送給客戶端 由客戶端驗證伺服器的身份 如果伺服器要驗證客戶端的證書 則客戶端可能會將客戶端證書發送給伺服器 通常僅驗證伺服器 不驗證客戶端 基于对称密钥的數據加密 客戶端生成隨機數作為對談金鑰 並使用伺服器公鑰 伺服器公鑰在伺服器證書中 加密對談金鑰 最後將已加密的對談金鑰發送給伺服器 由伺服器的私鑰解密出對談金鑰 最後使用此對談金鑰加密數據 TLS也可以使用預共用金鑰 PSK 作為對稱密鑰 在第一阶段 客户端与服务器协商所用密码算法 当前广泛实现的算法选择如下 身份驗證 RSA DSA ECDSA 密鑰交換 PSK 英语 Pre shared key 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 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 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 26 0 26 1 draft chudov cryptopro cptls 04 GOST 28147 89 Cipher Suites for Transport Layer Security TLS RFC 5288 RFC 6655 RFC 6367 RFC 5932 31 0 31 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 外部链接 编辑维基共享资源中相关的多媒体资源 傳輸層安全性協定SSL TLS WTLS原理 页面存档备份 存于互联网档案馆 SSL配置指南 页面存档备份 存于互联网档案馆 SSL状态检查 格式转换 漏洞扫描工具 页面存档备份 存于互联网档案馆 参见 编辑 密码学主题 互联网主题 应用层协议协商 SSL加速 扩展验证证书 取自 https zh wikipedia org w index php title 傳輸層安全性協定 amp oldid 75615456, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。