ToB企服应用市场:ToB评测及商务社交产业平台
标题:
(记得关注哦)对传输层安全 TLS(Transport Layer Security)协议最新版进
[打印本页]
作者:
张裕
时间:
2024-12-1 12:50
标题:
(记得关注哦)对传输层安全 TLS(Transport Layer Security)协议最新版进
一、协议理解:
(一)握手过程(Handshake)
:
握手是 TLS 毗连的起始阶段,用于建立安全的通信通道。握手过程包罗以下主要步骤: 1、客户端发送 ClientHello 消息:客户端向服务器发送包含支持的 TLS 版本、加密套件列表和 随机数的消息。 2、服务器回应 ServerHello 消息:服务器从客户端提供的 TLS 版本和加密套件列表中选择一 个,并复兴包含所选 TLS 版本、加密套件、服务器证书(可选)和随机数的消息。 3、服务器认证(Certificate):假如需要服务器认证,服务器会发送包含数字证书的 Certificate 消息给客户端。客户端验证证书的有用性和可信性。 4、密钥交换(Key Exchange):双方协商会话密钥的天生方式。这可以通过 RSA 密钥交 换、DH(Diffie-Hellman)密钥交换或 ECDH(Elliptic Curve Diffie-Hellman)密钥交换等方 式完成。 5、完成握手(Finish):握手过程末了阶段,双方会发送 Finished 消息以验证握手的乐成完 成。
(二)密钥交换(Key Exchange):
在 TLS 握手过程中,密钥交换是非常关键的步骤,它决定了后续通信所使用的对称密 钥。TLS 支持多种密钥交换算法,包罗: 1、RSA 密钥交换:服务器使用其私钥对随机天生的会话密钥举行加密,并将其发送给客户端。 2、DH(Diffie-Hellman)密钥交换:客户端和服务器通过一系列数学运算交换公钥,终极双方 都获得了相同的对称密钥。 3、ECDH(Elliptic Curve Diffie-Hellman)密钥交换:与 DH 密钥交换雷同,但使用的是椭圆 曲线密码学。
(三)加密算法的选择:
在握手过程中,客户端和服务器会协商选择一种加密套件,其中包罗对称加密算法、密钥交换算 法、摘要算法等。TLS 支持的加密套件通常包罗 AES、RSA、ECDSA、SHA 等。
(四)认证(Authentication):
TLS 使用数字证书来举行认证,确保通信双方的身份是可信的。服务器通常需要提供数字证书, 客户端可以验证证书的有用性和服务器的身份。可选的客户端认证也可以通过客户端证书实现。
(五)通信的保护:
完成握手后,TLS 毗连进入安全通信阶段。在此阶段,通信数据将通过选定的加密算法举行加 密,并通过消息认证码(MAC)来保证数据的完整性。这确保了通信数据在传输过程中不会被窃 听、窜改或伪造。
二、实行情况搭建:
(一)openssl 的安装
1、进入 openssl 的官网未提供 openssl 的安装包,我选择了其他的网站,直接安装 openssl 的 安装包,这样就会很方便,省去了很多在 openssl 官网安装的步骤(着实是麻烦至极)
2、找到安装的地址,将其添加到 path 情况变量中
3、天生证书和私钥:在 TLS 毗连中,服务器通常需要一个数字证书来举行身份验证。可以使用 OpenSSL 来天生自签名证书和私钥。使用以下下令天生证书和私钥文件,然后有一些国家、地区 的信息我是直接回车键直接跳过的。
(二)wireshark 的安装
1、在官网下载 wireshark
2、双击安装包,举行安装
(三)在完成安装 openssl 和 wireshark 之后,开始正式操纵
1、启动 TLS 服务器,打开下令行窗口。使用 OpenSSL 启动一个简单的 TLS 服务器:
2、建立 TSL 毗连,使用 OpenSSL 启动一个 TLS 客户端,并毗连到刚刚启动的服务器
3、使用 Wireshark 捕获 TLS 通信数据包。打开 Wireshark。在 Wireshark 主界面的网络接口 列表中选择要捕获流量的网络接口,加入过滤器,添加过滤器可以帮助更快地找到和分析与 TLS 相关的数据包。 按钮开始捕获流量。 4 分析 TLS 握手过程 ① Client Hello 握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端天生的 随机数 Random1、客户端支持的加密套件(Support Ciphers)和 SSL Version 等信息。
协议版本(Version):从数据包中可以看到,TLS 客户端支持的协议版本是 TLS 1.2。这可以 从 "Version" 字段中的数值 0x0303 推断出来。 支持的加密套件列表(Cipher Suites):在数据包中的 "Cipher Suites" 字段列出了客户端 支持的加密套件列表。这些套件用于在握手期间举行协商,以确定客户端和服务器之间的加密算 法。在这个数据包中,客户端支持的加密套件有以下 19 种: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9) TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c) TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d) TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a) TLS_AES_128_GCM_SHA256 (0x1301) TLS_AES_256_GCM_SHA384 (0x1302) TLS_CHACHA20_POLY1305_SHA256 (0x1303) 随机数(Random):在数据包中的 "Random" 字段包含了一个随机天生的值,用于在握手期间 天生密钥。这个随机数由 GMT Unix 时间戳和一串随机字节组成。 ② Server Hello 第二步是服务端向客户端发送 Server Hello 消息,这个消息会从 Client Hello 传过来的 Support Ciphers 里确定一份加密套件,这个套件决定了后续加密和天生摘要时详细使用哪些 算法,另外还会天生一份随机数 Random2。留意,至此客户端和服务端都拥有了两个随机数 (Random1+ Random2),这两个随机数会在后续天生对称秘钥时用到。
可分析出服务器选择的 TLS 版本是 TLS 1.2。加密套件是 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ③ Certificate 这一步是服务端将自己的证书下发给客户端,让客户端验证自己的身份,客户端验证通过后取 出证书中的公钥。
④ Server Key Exchange 假如是 DH 算法,这里发送服务器使用的 DH 参数。RSA 算法不需要这一步。
⑤ Certificate Request 由 OpenSSL 官方文档知,Certificate Request 是服务端要求客户端上报证书,这一步是可选 的,对于安全性要求高的场景才会用到。 ⑥ Server Hello Done Server Hello Done 关照客户端 Server Hello 过程结束。
⑦ Certificate Verify 客户端收到服务端传来的证书后,先从 CA 验证该证书的合法性,验证通过后取出证书中的服 务端公钥,再天生一个随机数 Random3,再用服务端公钥非对称加密 Random3 天生 PreMaster Key。 ⑧ Client Key Exchange 上面客户端根据服务器传来的公钥天生了 PreMaster Key,Client Key Exchange 就是将这个 key 传给服务端,服务端再用自己的私钥解出这个 PreMaster Key 得到客户端天生的 Random3。至此,客户端和服务端都拥有 Random1 + Random2 + Random3,双方再根据同样的算 法就可以天生一份秘钥,握手结束后的应用层数据都是使用这个秘钥举行对称加密
⑨ Change Cipher Spec(Client) 这一步是客户端关照服务端后面再发送的消息都会使用前面协商出来的秘钥加密了,是一条事 件消息。
⑩ Encrypted Handshake Message(Client) 这一步对应的是 Client Finish 消息,客户端将前面的握手消息天生摘要再用协商好的秘钥加 密,这是客户端发出的第一条加密消息。服务端接收后会用秘钥解密,能解出来说明前面协商出 来的秘钥是一致的。
Change Cipher Spec(Server) 这一步是服务端关照客户端后面再发送的消息都会使用加密,也是一条事件消息。
Encrypted Handshake Message(Server) 这一步对应的是 Server Finish 消息,服务端也会将握手过程的消息天生摘要再用秘钥加密, 这是服务端发出的第一条加密消息。客户端接收后会用秘钥解密,能解出来说明协商的秘钥是一 致的。
三、安全性评估:
(一)TLS 对于中心人攻击、重放攻击、密码破解攻击等)的防范本领
①中心人攻击(MITM): 防范原理: TLS 使用数字证书来验证服务器的身份。服务器在握手过程中向客户端发送证书,证书中包含服 务器的公钥和相关信息,同时由可信任的证书颁发机构(CA)签名。客户端使用事先内置的信任 根证书或可信任的 CA 列表来验证服务器证书的有用性。假如证书验证失败或证书不受信任,则 客户端会告诫用户或直接中止毗连。 防范效果: 通过数字证书验证机制,TLS 可以或许防止中心人攻击。纵然攻击者截获了通信并实验伪造服务器身 份,但由于无法提供有用的数字证书,客户端会拒绝建立毗连,从而保护通信的安全性。TLS 的 数字证书验证机制基于公钥底子设施(PKI),它建立在信任的根证书颁发机构(CA)之上。CA 负责验证服务器的身份,并签发数字证书。因此,TLS 防止了中心人攻击,前提是客户端和服务 器信任 CA,并可以或许精确验证证书。摆设严格的证书验证计谋可以进一步提高防范中心人攻击的 效果。例如,客户端可以只信任特定的 CA,或者举行额外的证书验证,如证书打消检查(CRL) 或在线证书状态协议(OCSP)验证。 ②重放攻击(Replay Attack): 防范原理: TLS 在握手过程中使用随机数和时间戳来防止重放攻击。客户端和服务器在每次握手时都会天生 随机数,并将其包含在握手消息中。攻击者无法猜测下一个有用的随机数,因此无法重放先前捕 获的通信数据。此外,TLS 还使用时间戳来确保握手消息的时效性,防止逾期的握手消息被重 放。 防范效果: 通过随机数和时间戳的使用,TLS 有用地防止了重放攻击。纵然攻击者拦截了通信并实验重放先 前的握手消息,但由于无法重复天生有用的随机数和时间戳,服务器将拒绝建立毗连。TLS 使用 随机数和时间戳来确保通信的唯一性和时效性。随机数在每次握手过程中都是唯一的,而时间戳 确保握手消息的有用期有限。 客户端和服务器都会检查握手消息中的时间戳,假如时间戳逾期,将拒绝握手哀求。这确保了攻 击者无法重放逾期的握手消息。 ③密码破解攻击(Cryptanalysis): 防范原理: TLS 使用先辈的加密算法和密钥交换协议来保护通信的秘密性和完整性。例如,TLS 支持使用 AES、RSA、ECDHE 等安全性高的加密算法,以及 Diffie-Hellman 密钥交换协议等。此外,TLS 还支 持密钥长度的机动配置,通常建议使用 128 位以上的对称密钥和 2048 位以上的 RSA 密钥来提高 安全性。 防范效果: 通过接纳安全性高的加密算法和密钥长度,TLS 可以或许有用地反抗密码破解攻击。纵然攻击者拦截 了通信并实验对加密数据举行解密,由于加密算法和密钥的安全性,破解的难度非常高,从而 保护了通信的安全性和秘密性。TLS 接纳安全性高的加密算法和密钥长度,使得密码破解攻击变 得极为困难。例如,AES-256 位加密算法提供了足够的强度来反抗暴力破解攻击。此外,TLS 还支 持美满的密钥协商机制,如基于 ECDHE 的密钥交换协议,它可以或许确保每次通信都使用独特的会 话密钥,从而增长了密码破解攻击的难度。 总结评估安全性:TLS 不仅在协议层面上提供了防范各种攻击的机制,还通过严格的证书验证、 唯一的随机数和时效性的时间戳以及安全性高的加密算法和密钥长度等措施,进一步增强了对 中心人攻击、重放攻击和密码破解攻击等安全威胁的防范效果。
(二)调研 TLS 的安全特性和安全毛病,并提出改进建议
通过调研多个网站,我发现了以下多个 TLS 的安全特性及安全毛病,并给予了自己的拙 见,望有所获。 ① SSL/TLS (BEAST)攻击 针对 SSL/TLS (BEAST)攻击的浏览器毛病于 2011 年 9 月披露。它适用于 SSL 3.0 和 TLS 1.0,因此会影响支持 TLS 1.0 或更早版本协议的浏览器。攻击者可以使用 TLS 1.0 中实 现密码块链 (CBC) 模式中的毛病来解密两方之间交换的数据。BEAST 毛病在 NIST NVD 数据 库中注册为 CVE-2011-3389 。 这是一种使用中心人技术的客户端攻击。攻击者使用 MITM 将数据包注入 TLS 流。这允许他们 推测用于注入消息的初始化向量 (IV),然后简单地将效果与他们想要解密的块的效果举行比 较。要使 BEAST 攻击乐成,攻击者必须对受害者的浏览器有肯定的控制权 [1] 。 以下是野兽攻击的详细表明:
改进建议:此前各大公司都以为缓解 BEAST 攻击的方法之一是使用 RC4 密码。然而,RC4 加密 协议后来被发现不安全。PCI DSS(支付卡行业数据安全尺度)克制使用此密码,Microsoft 还 强烈建议不要在 Windows 中使用它 。 我的改进建议是:使用 TLS 1.1 或 TLS 1.2。因为在 TLS1.0 中这种攻击仍未被解 决,若您使用的是 TLS1.1 或更新的版本就可以避免这种攻击 ② Compression Ratio Info-leak Made Easy (CRIME) 毛病攻击 Compression Ratio Info-leak Made Easy (CRIME) 毛病会影响 TLS 压缩。压缩方法包 含在客户端 Hello 消息中,而且是可选的。您可以在不压缩的情况下建立毗连。SSL/TLS 引入 了压缩以减少带宽。DEFLATE 是最常用的压缩算法。CRIME 毛病在 NIST NVD 数据库中注册 为 CVE-2012-4929 [2] 。 这是 Wireshark 捕获的 Server Hello 消息(对 Client Hello 的响应)。服务器选 择 NULL 压缩方法,这意味着不会使用压缩。
假设攻击者想要获取受害者的 cookie。他们知道目的网站 (examplebank.com) 为名 为 adm 的会话创建一个 cookie。 攻击者知道 DEFLATE 压缩方法会替换重复的字节。因此, 攻击者会注入受害者的 cookie。服务器将仅附加到压缩的响应中,因为已经在受害者的 cookie 中发送,因此会重复。 以下是这种攻击的图解:
使用此方法,攻击者可以使用他们从服务器获得的反馈来重建 cookie 值。 改进建议:将您的浏览器升级到最新版本 ③毛病攻击 通过超文本自顺应压缩 (BREACH) 毛病的浏览器侦测和外走毛病与 CRIME 非常相似,但 BREACH 针对的是 HTTP 压缩,而不是 TLS 压缩。纵然关闭了 TLS 压缩,这种攻击也是大概 的。攻击者强制受害者的浏览器毗连到启用了 TLS 的第三方网站,并使用中心人攻击来监控受 害者与服务器之间的流量。BREACH 毛病在 NIST NVD 数据库中注册为 CVE-2013-3587 。 易受攻击的 Web 应用程序满足以下条件: 从使用 HTTP 级压缩的服务器提供 在 HTTP 响应正文中反映用户输入 在 HTTP 响应正文中反映秘密(例如 CSRF 令牌)(因此 HTTP 标头中的值(例如 Cookie)可以免受此攻击)。 改进建议:禁用 HTTP 压缩,将秘密与用户输入分开,随机化每个哀求的秘密,屏蔽密钥(通 过对每个哀求的随秘密钥举行异或操纵,从而有用地随机化),保护页面免受 CSRF 的侵害, 隐藏长度(通过向响应添加随机字节数),限制哀求速率
四、加密套件分析
(一)套件组成
①对称加密算法: 对称加密算法用于在通信双方之间保护数据的秘密性。常见的对称加密算法包罗 AES(高级 加密尺度)、DES(数据加密尺度)和 3DES(Triple DES)等。在 TLS 中,AES 是最常用的对称加 密算法,由于其安全性高、性能精良,特殊是 AES-GCM 模式,因其同时提供了加密和认证功能而 备受青睐。 选择对称加密算法时,需要思量其安全性、性能和硬件支持情况。AES 是现在最受推荐的对 称加密算法之一,可以提供强大的安全性和高效的性能。 ②非对称加密算法: 非对称加密算法用于在通信双方之间安全地交换对称密钥,以便建立加密通道。常见的非对 称加密算法包罗 RSA(Rivest-Shamir-Adleman)、DSA(数字签名算法)和 ECC(椭圆曲线加 密)等。在 TLS 中,RSA 和 ECC 是最常用的非对称加密算法,它们用于建立安全通信的初始密钥 交换。 选择非对称加密算法时,需要思量其安全性、密钥长度和性能。ECC 由于其相对较短的密钥 长度和高强度的安全性而成为 TLS 中的首选算法之一,特殊是在移动装备和资源受限情况下。 ③哈希函数: 哈希函数用于计算消息的摘要,以验证消息的完整性和真实性。在 TLS 中,常用的哈希函数 包罗 SHA-256(安全哈希算法-256 位)和 SHA-384 等。这些哈希函数通常与 MAC 算法和数字签名 算法结合使用,以确保通信数据的安全性。 选择哈希函数时,需要思量其安全性和性能。SHA-256 是现在最常用的哈希函数之一,提供 了较高的安全性和精良的性能。 综上所述,TLS 协议中使用的加密套件需要综合思量安全性、性能和适用性等因素。对称加密算 法、非对称加密算法、MAC 算法和哈希函数的选择应根据详细的应用场景和安全要求来确定,以 确保通信数据的保密性、完整性和真实性。
(二)并评估其在实际应用中的适用性
①对称加密算法: 适用性:对称加密算法适用于需要快速加密和解密大量数据的场景,例如数据传输、数据存 储等。由于对称加密算法的加密和解密速度通常较快,因此在对性能要求较高的情况中广泛应 用。 上风:速度快,加密和解密效率高;适合大规模数据加密;实现相对简单,计算成本低。 劣势:密钥管理相对困难,需要安全地传输密钥;不适用于密钥交换和数字签名等场景。 ②非对称加密算法: 适用性:非对称加密算法适用于需要安全地举行密钥交换和数字签名等场景,例如 SSL/ TLS 握手过程、数字证书颁发等。由于非对称加密算法具有公钥和私钥两个密钥,因此适用于解 决密钥分发和管理的问题。 上风:安全性高,适用于密钥交换和数字签名等场景;无需安全传输密钥。 劣势:加密和解密速度较慢,性能较对称加密算法差;密钥长度较长,占用资源较多。 ③哈希函数: 适用性:哈希函数适用于验证数据的完整性、天生消息摘要、实现数字签名等场景。哈希函 数可以将任意长度的输入数据映射为固定长度的哈希值,因此适用于天生唯一的标识符,并可 用于验证数据的完整性。 上风:快速计算哈希值;哈希值唯一性高,碰撞概率低;适用于验证数据完整性和天生消 息摘要。 劣势:不可逆性,无法从哈希值还原原始数据;哈希碰撞大概性存在,固然概率很低但不 可忽视。 在实际应用中,对称加密算法、非对称加密算法和哈希函数常常结合使用,以充实使用它们 各自的上风,并补充彼此的不敷。例如,在 SSL/TLS 握手过程中,对称加密算法用于加密数据传 输的效率要求,非对称加密算法用于密钥交换和数字签名的安全要求,哈希函数用于天生消息 摘要验证数据的完整性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4