文章目录
SSL 协议
体系结构
SSL不是单个协议,而是由两层协议组成。
SSL 使用 TCP 提供端对端的安全服务。
SSL 连接:
连接是一种提供恰当类型服务的传输。SSL的连接是点对点的关系。SSL 连接是短暂的,每一个连接和一个会话关联。
SSL 会话:
会话是在客户与服务器之间的一种关联。会话由握手协议创建。会话定义了一组可供多个连接共享的密码安全参数。会话通常用来避免为每一个连接提供新的安全参数所需昂贵的协商代价。
人话:是一种握手协议创建的、S-C 之间的关联。定义了一组共享参数。
SSL 记录协议
SSL记录协议为SSL连接提供两种服务:保密性和消息完整性。
如上图所示的是 SSL 记录协议的运行流程。
添加 MAC 和加密分别保证了完整性和机密性。
SSL记录协议的有效载荷:
(1)修改密码规格协议 Change Cipher Spec Protocol
(2)告警协议 Alert Protocol
(3)握手协议和其他上层协议
下面对 SSL 握手协议进行详解。
SSL 握手协议
客户端和服务器端的相互认证,并协商加密算法和 MAC 算法,以及相关加密密钥和 MAC 密钥。
第一阶段:建立安全功能
Step-1:客户发送 client_hello,包括以下参数:
(1)客户端的最高版本
(2)随机数(32 位时间戳+28 字节随机数)
(3)会话 ID
(4)客户支持的密码算法套件(CipherSuite)
(5)客户支持的压缩方法列表
Step-2:服务器接收后发送 server_hello,参数:
(1)客户建议的低版本以及服务器支持的最高版本
(2)服务器产生的随机数
(3)会话 ID
(4)服务器所选取密码算法套件和压缩方法
交换参数,建立连接
密码算法套件中的密钥交换方法包括:RSA、固定 DH、暂态 DH、匿名 DH…
第二阶段:服务器认证和密钥交换
Step-1:服务器发送 certificate,消息包含一个 X.509 证书,或者一条证书链。除了匿名 DH 之外,其它密钥交换方法都需要证书。
Step-2:服务器发送 server_key_exchange。这个是可选的,有些情况下可以不需要。
Step-3:服务器发送 certificate_request。
(1)前提:服务器使用的不是匿名 DH
(2)两个参数: certificate_type 和 certificate_authorities
(3)certificate_type 指明了公钥算法及用法
(4)certificate_authorities 指明了可接受的证书颁发机构 (CA) 列表
Step-4:服务器发送 server_done。表明第二阶段已结束,没有参数。
服务器认证,发送证书和证书请求。
第三阶段:客户端认证和密钥交换
Step-1:客户收到 server_done后,检查服务器提供的证书,并判断 server_hello 的参数是否可接受。如果服务器请求证书,则发送 certificate 消息;若没有合适的证书,则发送 no_certificate 警告。
Step-2:客户端发送 client_key_exchange(必须发送),内容取决于密钥交换的类型。
Step-3:客户端发送 certificate_verify。可选,仅当客户端证书具有签名功能才发送。
客户端认证,发送证书和密钥参数。
第四阶段:完成
Step-1 and 2:客户发送 change_cipher_spec。客户端用新协商的算法、密钥参数发送 finished 消息,检查认证和密钥交换过程是否已经成功。
Step-3 and 4:服务器同样发送 change_cipher_spec 消息和 finished 消息。
change_cipher_spec 这个消息是一个信号,指示从这一刻开始,客户端将使用之前协商确定的加密套件(CipherSuite)中的加密算法、密钥等来加密后续发送的所有数据。
握手过程完成,客户和服务器可以交换应用层数据。
SSL 的安全性:
(1)保护master_secret
(2)保护服务器的私钥
(3)使用良好的随机数
(4)证书链检查
(4)算法选择(强度)
TSL 协议
TLS 的第一个版本可以看作是 SSL v3.1。
TLS 的目标是形成 SSL 的互联网标准版本。
版本号:当前 TLS 版本,主版本号 3,副版本号 1;
消息认证码:使用 HMAC,包括了 version 域。
TLS 的伪随机函数 P_hash
使用实例记作:P_hash(Secret, Seed)。
HTTPS 协议
什么是 HTTPS
HTTP 和 SSL/TLS 的结合。
所有浏览器支持 HTTPS,但不是所有的网络服务都支持 HTTPS。
HTTPS 端口 443 ;HTTP 端口 80。
HTTPS 流程
- 连接初始化
(1)对于 HTTPS,HTTP 用户也是 TLS 用户
(2)当 TLS 交换完毕后,用户将发起第一次 HTTP 请求
(3)所有 HTTP 数据都要以 TLS 应用数据形式发送
(4)从高到低三个层次:HTTP(s), SSL/TLS, TCP - 连接关闭
关闭一个 HTTPS 连接要求关闭 TLS 与其对应的远程终端之间的连接和对应的 TCP 连接。
SSH 协议
什么是 SSH
运行在TCP之上的,更加安全的远程登陆机制。(代替 telnet)
SSH 由三层通信协议构成。
SSH 协议栈
- SSH 用户认证协议
验证服务器的用户。 - SSH连接协议
在一个 SSH 连接上复用多个逻辑信道。 - SSH传输层协议
提供服务器身份验证(单向)、数据保密性、带前向安全的数据完整性。
带前向安全的数据完整性,简单来说就是,如果一个密钥在会话中泄密,不会影响之前会话的安全。
SSH 分组交换流程
如图所示,整个交换流程可以分为四个部分,分别是:身份标识串交换、算法协商、密钥交换、服务请求。
SSH 分组格式
pktl:分组长度
pdl:填充长度
填充:随机填充
MAC:消息认证码
seq:序列号,32 bit,只计算 MAC 用,不发送。