深入理解TLS加密与OpenSSL实现
1. TLS加密基础
在TLS(传输层安全协议)中,数字签名起着至关重要的作用,主要用于服务器身份验证。若没有数字签名,TLS客户端将无法区分真实服务器和假冒服务器。虽然TLS也可以使用数字签名来验证客户端身份,但在实际应用中这种情况并不常见。大多数Web应用要么不关注客户端身份验证,要么使用如密码等更简单的方法。
从理论上讲,非对称加密可以保护整个通信通道,但实际上现代非对称加密算法效率低下,只能处理少量数据。因此,TLS仅使用非对称加密对服务器进行身份验证,而使用密钥交换算法和对称加密来保护实际通信。
由于加密算法随时可能出现漏洞,TLS连接必须能够选择双方都支持的最佳算法,这通过密码套件(cipher suites)来实现。密码套件是一组算法列表,通常包括密钥交换算法、批量加密算法和消息认证算法(MAC)。当TLS连接首次建立时,客户端会向服务器发送首选密码套件列表,服务器从中选择一个用于连接。如果服务器不支持客户端提供的任何密码套件,则无法建立安全的TLS连接。
2. TLS协议流程
在建立TCP连接后,TLS握手由客户端发起。客户端会向服务器发送一系列规范,包括所运行的SSL/TLS版本、支持的密码套件以及希望使用的压缩方法。服务器会选择双方都支持的最高版本的SSL/TLS,同时从客户端提供的选项中选择一个密码套件和压缩方法。
如果客户端和服务器没有共同支持的密码套件,则无法建立TLS连接,这种情况在使用旧浏览器连接新服务器时并不罕见。基本设置完成后,服务器会向客户端发送其证书,客户端使用该证书验证是否连接到合法服务器。
一旦客户端验证了服务器的身
超级会员免费看
订阅专栏 解锁全文
1205

被折叠的 条评论
为什么被折叠?



