SSL/TLS简介

189 阅读2分钟

SSL和TLS关系

TLS(传输层安全协议 Transport Layer Security)是一种安全协议,前身是SSL(安全套接层 Secure Sockets Layer),目的是为互联网通信提供安全及数据完整性保障。

SSL是Netscape公司在1994年推出的,先后版本经历过1.0(未公开)、2.0(1995)、3.0(1996);
IETF将SSL标准化实现,重命名为TLS,并先后推出1.1(2006)、1.2(2008)、1.3(2018)版本。

2014年10月,Google发布在SSL 3.0中发现设计缺陷,建议禁用此一协议。攻击者可以向TLS发送虚假错误提示,然后将安全连接强行降级到过时且不安全的SSL 3.0,然后就可以利用其中的设计漏洞窃取敏感信息。Google在自己公司相关产品中陆续禁止回溯兼容,强制使用TLS协议。

当前我们说的SSL通常是指TLS协议,一般统称为SSL/TLS,常见版本使用的是TLS v1.2。
下文统一用TLS表示。

TLS是网络安全协议

TLS协议采用客户端-服务端模型,用于两个应用程序在网络上构建安全的通信连线,防止信息的窃听和篡改

TLS运行在传输层,位于网络层和应用层之间。应用层协议能透明的运行在TLS协议之上,由TLS协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过TLS协议层时都会被加密,从而保证了通信的安全性

TLS协议过程

  1. 客户端向支持TLS协议的服务端发起握手,并提供支持的密码套件,包括加密、密钥协商、散列(通过对消息体哈希值的加密提升加密效率)、HMAC(用于数据完整性校验)算法等
  2. 服务端从列表中选择合适的密码套件,并通知客户端
  3. 服务端发回自身数字证书,包含服务器名称、证书签发CA、公钥等
  4. 客户端验证证书有效性
  5. 客户端随机生成会话密钥,并从服务端公钥加密后发给服务端,服务端用私钥解密
  6. 客户端和服务端用会话密钥继续后续的应用通信,直到连接断开

拓展知识

  • SSL/TLS和OPENSSL的区别

SSL/TLS是安全协议,OPENSSL是一个软件库,其中包含SSL/TLS协议的开源实现