2-2传输层安全协议SSL
what is ssl?
安全套接层协议SSL(Security Socket Layer)是Netscape公司设计开发的(最初是为了保护他们的浏览器),专门用于保护基于WEB的通信
why ssl?
网络层安全协议IPSec可以提供端到端的网络层安全传输, 但是无法处理位于同一端系统之中的不同应用的安全需求,因此需要在传输层和更高层提供网络安全传输服务,来满足这些要求
安全服务
SSL提供了三个基本的安全服务:
-
加密:保证数据传输的机密性,确保只有授权的接收方可以阅读信息。
-
认证:确保通信双方都是他们声称的那个人,通常通过证书和密钥来实现。
-
数据完整性:确保数据在传输过程中没有被更改。
-
反重放:
ssl会话参数里实际上也有序列号,所以应该也能提供反重放服务.
SSL协议为每次安全连接产生一个128位长的随机数“连接序号”,攻击者无法提前预测此连接序号,因此不能对服务器请求做出正确应答
对比ipsec:
IPsec 是一个协议套件,旨在保护IP通信,通过对每个IP数据包进行加密和认证来实现。它提供的安全服务主要包括:
-
数据加密:确保数据的机密性,使得即使数据包被拦截,也无法被未授权者阅读。
-
数据完整性:确保数据在传输过程中没有被更改。
-
认证:验证数据包来源的真实性,确保数据包是由实际发送者发送的。
-
反重放:防止旧的或重复的数据包被用于攻击。
ssl特点
SSL工作在TCP协议上不支持UDP,对应用层透明,为应用层的流量提前搭建安全信道(提前完成了客户端和服务器的身份认证、加密算法和密钥的协商 )
SSL先握手建立会话(session),一个会话可能由多个连接共享
SSL体系结构详解
-
SSL记录协议(SSL Record Protocol):
- 功能:它位于SSL协议栈的最底层,负责接收应用层的数据,进行必要的分割、压缩、加密处理,然后发送给对方。同时,它也会处理接收的数据,进行解密、验证、重组等,然后交给应用层。
- 重要性:记录协议是保障数据机密性和完整性的基础,它确保传输的数据对外是安全的,没有被篡改。
-
SSL握手协议(SSL Handshake Protocol):
- 功能:在通信双方开始传输加密数据之前,握手协议负责建立安全连接的详细参数,包括协商加密算法、交换密钥信息和相互验证身份。
- 重要性:握手协议是建立安全通信信道的关键,它确保双方都使用相同的密钥和算法,并且都是可信的。
-
SSL警告协议(SSL Alert Protocol):
- 功能:用于在出现错误时,传递警告和错误信息给对方。比如,如果一个证书无效或者密钥交换失败,警告协议会被用来通知对方。
- 重要性:警告协议使得通信双方可以在安全通信出现问题时,及时得到通知并采取相应措施。
-
SSL变更密码规格协议(SSL Change Cipher Spec Protocol):
- 功能:用于在握手过程中,告诉对方将要更改加密算法或密钥。
- 重要性:它是握手协议的一个辅助部分,确保双方能同步转换到新的加密参数,维护通信的安全性。
SSL记录协议工作流程
SSL握手协议工作流程
SSL握手协议 主要负责在SSL通信开始之前,建立安全通信的基本参数。整个握手过程包括几个重要步骤,喵~:
-
客户端和服务器的问候:交换协议版本号,选择加密和压缩方法。
- Cipher suite:加密方法的参数包括
- 密钥交换方法:那些公钥算法比如DH,RSA,
- 加密算法:RC4,RC2,DES,3DES……
- MAC算法:MD5,SHA-1
- Cipher suite:加密方法的参数包括
-
服务器身份认证和密钥交换:服务器发送证书给客户端,客户端验证服务器证书的有效性。
-
客户端身份认证和密钥交换:客户端可能也会发送证书给服务器,并且双方会协商一个共享的密钥。
先协商出一个pre_master_key,在finish阶段客户端用来计算出master_key
-
握手完成:握手协议的最后阶段,客户端将master secrete派生为所有的密钥,和服务器确认握手过程结束,开始加密的数据传输。
- MAC
- 加密
- IV
-
client server hello,这一过程主要是client向server发出建立ssl的请求,并协商一些加密方法
-
server certificate and key exchange:server向用户提供证书,并要求用户返回证书和确认
-
client certificate and key exchange:用户确认证书,并根据证书中server的公钥加密传输pre_master_secret用于下一步生成主密钥,并返回自己的证书
-
finish:用户用主密钥生成所有密钥并和服务器确认
HTTPS=HTTP+SSL
特性 | HTTP | HTTPS |
---|---|---|
传输方式 | 明文传输 | SSL协议加密传输 |
端口号 | 80 | 443 |
协议复杂性 | 简单 | 由SSL+HTTP构建 |
连接状态 | 无状态 | 无状态(会话之间无状态) |
安全性 | 无 | 加密传输、身份认证 |
-
HTTP明文传输,不能提供加密
-
HTTP无状态,不能认证双方(中间人攻击,DNS欺诈,ARP欺诈等)
HTTPS就是为了解决上述痛点