1
计算机系统安全
第十三章
TLS( SSL) 协议
2
TCP/IP协议栈中的安全
一,SSL协议的概述
3
SSL协议的发展
一,SSL协议的概述
1 SSL(Secure Socket Layer)是 Netscape公
司设计的主要用于 web的安全传输协议 。
2 IETF(www.ietf.org)将 SSL作了标准化,即
RFC2246,并将其称为 TLS( Transport Layer
Security),TLS1.0与 SSL3.0差别很小。
3 在 WAP的环境下,由于手机处理和存储能力
有限,wap论坛( www.wapforum.org) 在 TLS的
基础上做了简化,提出了 WTLS协议( Wireless
TLS),以适应无线的特殊环境。
4
SSL协议的位置
一,SSL协议的概述
SSL协议要求建立在可靠的传输层协议
(如,TCP)之上 。 SSL协议的优势在于它是与
应用层协议独立无关的 。
高层的应用层协议 (例如,HTTP,FTP,
TELNET)能透明的建立于 SSL协议之上 。 SSL协
议在应用层协议通信之前就已经完成加密算
法, 通信密钥的协商以及服务器认证工作 。
在此之后应用层协议所传送的数据都会被加
密, 从而保证通信的私密性 。
5
SSL协议的位置
一,SSL协议的概述
SSL协议建立在传送层和应用层之间, 由记录协
议和握手协议组成, 其中记录协议在握手协议
下端 。 SSL在 TCP之上建立了一个加密通道 。
IP
HTTP/ S- HTTP FTP SMTP
TCP
SSL or TLS
6
主要功能
一,SSL协议的概述
1,SSL服务器认证,允许用户确认服务器身
份 。 支持 SSL协议的客户机软件能使用公钥密
码标准技术检查服务器证书, 公用 ID是否有
效和是否由在客户信任的 CA列表内的认证机
构发放 。
2,SSL客户机认证,允许服务器确认用户身
份 。 使用应用于服务器认证同样的技术, 支
持 SSL协议的服务器软件能检查客户证书, 公
用 ID是否有效和是否由在服务器信任的认证
机构列表内的 CA发放 。
7
主要功能
一,SSL协议的概述
3,机密性,一个加密的 SSL连接要求所有在
客户机与服务器之间发送的信息由发送方软
件加密和由接受方软件解密, 这样提供了高
度机密性 。
4,完整性,所有通过加密 SSL连接发送的数
据都被一种检测篡改的机制所保护, 这种机
制自动地决定传输中的数据是否已经被更改 。
8
连接安全
一,SSL协议的概述
SSL协议提供的连接安全有三个基本属性:
连接是保密的 。 对称加密法用于数据加密
( 如用 DES和 RC4等 ) 。
对方的身份能够使用非对称或公钥密码进行
认证 ( 如用 RSA和 DSS等 ) 。
连接是可靠的 。 消息传输包括使用消息认证
码 ( MAC) 的消息完整性检查, 安全哈希函
数 ( 如 SHA和 MD5等 ) 用于消息认证码计算 。
9
SSL协议的组成
一,SSL协议的概述
SSL协议包括两个子协议,SSL记录协议和
SSL握手协议 。
SSL
Handshake
Protocol
SSL
Change
Cipher
Spec
Protocol
SSL Alert
Protocol
HTTP,
FTP…
SSL Record Protocol
TCP
IP
10
SSL协议的组成
一,SSL协议的概述
记录协议 定义了要传输数据的格式, 它位于
一些可靠的的传输协议 TCP之上, 用于各种
更高层协议的封装 。 记录协议主要完成分组
和组合, 压缩和解压缩, 以及消息认证和加
密等功能 。 所有传输数据包括握手消息和应
用数据都被封装在记录中 。
握手协议 允许服务器与客户机在应用程序传
输和接收数据之前互相认证, 协商加密算法
和密钥 。
11
SSL握手协议
一,SSL协议的概述
在初次建立 SSL连接时使用 SSL记录协议交换
一系列消息 。 为如下操作做准备:
,客户机对服务器的认证 。
,客户机与服务器都支持的加密算法或密码 。
,服务器对客户的认证 ( 可选 ) 。
.使用公钥加密技术生成共享密钥 。
.建立加密 SSL连接 。
12
四个目标
二、目标
加密安全性:在双方之间建立安全的连接 。
协同工作能力:独立程序员能够使用 SSL3.0
开发应用, 然后能够在不知道他人代码的情
况下成功地交换加密参数 。
可扩展性,SSL致力于提供一种框架, 在必
要时新的公钥和大批加密方法可以整合进来 。
相对效率:考虑到加密操作特别是公钥操作
的速度问题, SSL协议使用可选的会话缓冲
方案以降低连接数量, 减少网络操作行为 。
13
支持的密码
三,SSL协议支持的密码
?带 SHA-1消息认证, 支持 168位加密的 3-DES,
速度不如 RC4快 。 大约有 3.7 * 1050个密码 。
?带 MD5消息认证, 支持 128位加密的 RC4,
RC4和 RC2都有 128位的密码, 加密强度仅次于
3-DES。 RC4和 RC2大约有 3.4 * 1038 个密码可
用 。 RC4密码是 SSL支持的密码中最快的 。
?带 SHA-1消息认证, 支持 56位加密的 DES,
大约有 7.2 * 1016 个可用的密码 ( 在 SSL2.0中该
密码使用的是 MD5 消息认证 ) 。
14
支持的密码
三,SSL协议支持的密码
美国允许以下加密技术出口:
带 MD5消息认证, 支持 40位加密的 RC4,大约有
个 1.1 * 1012可用的密码 。
带 MD5消息认证, 支持 40位加密的 RC2,大约有
个 1.1 * 1012可用的密码 。
注:对 RC2和 RC4支持 40位加密, 其中密钥仍是
128位的, 但只有 40位有加密意义 。
不加密, 只带 MD5消息认证 。 ( SSL3.0支持而
SSL2.0不支持 ) 。
15
主要工作流程
四,SSL协议原理及工作流程
① 网络连接建立;
② 选择与该连接相关的加密和压缩方式;
③ 双方的身份识别;
④ 本次传输密钥的确定;
⑤ 加密的数据传输;
⑥ 网络连接的关闭 。
16
主要工作流程
四,SSL协议原理及工作流程
应用数据的传输过程为,
1 )应用程序把应用数据提交给本地的 SSL;
2 )发送端的 SSL根据需要,
a)使用指定的压缩算法, 压缩应用数据;
b)使用散列算法对压缩后的数据计算散列值;
c)把散列值和压缩数据一起用加密算法加密;
3) 密文通过网络传给对方;
17
主要工作流程
四,SSL协议原理及工作流程
4)接收方的 SSL
用相同的加密算法对密文解密, 得到明文;
用相同的散列算法对明文中的应用数据散列;
计算得到的散列值与明文中的散列值比较;
5) 如果一致,则明文有效,接收方的 SSL把明
文解压后得到应用数据上交给应用层 。 否则就
丢弃数据,并向发方发出告警信息 。 严重的错
误有可能引起再次的协商或连接中断 。
18
记录协议工作流程
四,SSL协议原理及工作流程
19
记录协议工作流程
四,SSL协议原理及工作流程
Application data
Fragment
Compress
Add MAC
Encryption
Append SSL
record header
20
四,SSL协议原理及工作流程
SSL 记录格式
内容类

主版本

次版本

压缩长度
被压缩(可选)的明文
MAC (0,16 or 20 字节 )
加密数据
21
?内容类型:长 8位,表示封装数据的上一层
协议,如:握手协议、报警协议、更改密码说
明协议或应用数据
?主版本号,8位,3.0版为 3
?次版本号,8位,3.0版为 0
?压缩长度,16位,表示压缩后的数据字节数
SSL 记录格式
22
四,SSL协议原理及工作流程
SSL 记录协议的负载
23
SSL记录数据的格式
四,SSL协议原理及工作流程
SSL的记录包含三个部分,MAC数据, 实际数
据和粘贴数据 。 MAC数据用于数据完整性检查 。
MAC数据= HASH[密钥, 实际数据, 粘贴数据, 序号 ]。
当会话的客户端发送数据时, 密钥是客户的写
密钥 (服务器用读密钥来验证 MAC数据 );而当
会话的客户端接收数据时, 密钥是客户的读密
钥 (服务器用写密钥来产生 MAC数据 )。
序号是一个可以被发送和接收双方递增的计数
器 。 计数器有 32位, 计数值循环使用, 每发送
一个记录计数值递增一次, 序号的初始值为 0。
24
SSL握手协议
四,SSL协议原理及工作流程
SSL握手协议包含两个阶段,
第一个阶段:建立私密性通信信道 ;
第二个阶段:客户认证 。
25
SSL握手协议工作流程
四,SSL协议原理及工作流程
第一阶段:通信初始化 。 当双方都收到对方
HELLO消息时, 就有足够信息确定是否需要新
密钥 。 若不需要新密钥, 则进入握手第二阶段 。
否则, 客户方根据服务器方的 SERVER-
HELLO消息 ( 包含服务器持有证书, 加密规约
和连接标识 ) 产生新密钥, 并发出 CLIENT -
MASTER - KEY消息 。 最终服务器方向客户方
发出 SERVER- VERIFY消息 。 只有拥有合适的
公钥的服务器才能解开密钥 。
26
SSL握手协议工作流程
四,SSL协议原理及工作流程
每一通信方向上都需要一对密钥, 所以一
个连接需要四个密钥, 分别为客户方的读密钥,
写密钥, 服务器方的读密钥, 写密钥 。
第二阶段:对客户进行认证, 此时服务器已经
被认证了 。 服务器向客户发出认证请求消息:
REQUEST- CERTIFICATE。 当客户收到服务器
方的认证请求消息, 发出自己的证书, 并且监
听对方回送的认证结果 。 而当服务器收到客户
的认证, 认证成功返回 SERVER- FINISH消息,
否则返回错误消息 。 握手过程到此全部结束 。
27
SSL握手协议工作流程
四,SSL协议原理及工作流程
?Client Hello
?Server Hello,Certificate + Cert chain
?Client Key exchange
?Server Change Cipher
?Client Change Cipher
?Client <-> Server Data
28
SSL握手协议工作流程
四,SSL协议原理及工作流程
CLIENT SERVER
ClientHello ServerHelloCertificate*
CertificateRequest*
ServerKeyExchange*
Certificate*
ClientKeyExchange
CertificateVerify*
change cipher spec
Finished change cipher specFinished
Application Data Application Data
29
SSL握手协议工作流程
四,SSL协议原理及工作流程
CLIENT SERVER
ClientHello
ServerHello
change cipher spec
Finished
change cipher spec
Finished
Application Data Application Data
30
四,SSL协议原理及工作流程
消息类型 参数
hello_request null
client_hello/ version,random,session id,
server_hello cipher suite,compression method
certificate chain of X.509v3 certificates
server_key_exchange parameters,signature
certificate_request type,authorities
server_done null
certificate_verify signature
client_key_exchange parameters,signature
finished hash value
31
认证服务器的身份
四,SSL协议原理及工作流程
1,从服务器端传送的证书中获得相关信息
2,当天的时间是否在证书的合法期限内;
3,签发证书的机关是否客户端信任的;
4,签发证书的公钥是否符合签发者的数字签名
5,证书中的服务器域名是否符合服务器自己真
正的域名
6,服务器被验证成功, 客户继续进行握手过程 。
32
认证客户端的身份
四,SSL协议原理及工作流程
1,客户端传送的证书中获得相关信息;
2,用户的公钥是否符合用户的数字签名;
3,当天的时间是否在证书的合法期限内;
4,签发证书的机关是否服务器信任的;
5,签发证书的机关是否服务器端信任的;
6,用户的证书是否在服务器的 LDAP用户信息中
7,该用户是否有权限访问请求的服务器资源
33
工作流程
4阶段
四,SSL协议原理及工作流程
34
工作流程
四,SSL协议原理及工作流程
1,C?S,发送客户的 SSL版本号, 密码设置,
随机数以及服务器使用 SSL协议通信所需的其
它信息 。
2,S?C,发送服务器的 SSL版本号, 密码设置,
随机数以及客户机使用 SSL协议通信所需的其
它信息 。 服务器还要发送自己的证书, 若需要
对客户认证, 则要求客户发送证书 。
3,C对 S认证 。 若 S不能被认证, 用户收到警告,
通知加密和认证连接不能建立 。 若服务器能被
成功地认证, 客户机继续下一步 。
35
工作流程
四,SSL协议原理及工作流程
4,使用所有在握手中生成的数据, 客户机为会
话创建 pre_master_secret,用服务器公钥 ( 从服
务器证书中得到 ) 加密它, 向服务器发送加密
的 pre_master_secret。
5,若服务器已经要求客户认证, 客户机会向服
务器随加密的 pre_master_secret一起发送签名的
数据和客户自己的证书 。
6,S试图去认证客户 。 若认证成功, S使用私钥
加密 pre_master_secret,然后执行一系列步骤生
成 master secret。 否则会话终止 。
36
工作流程
四,SSL协议原理及工作流程
7.客户机与服务器使用 master secret生成会话
密钥 。 该密钥是对称密钥, 用于加密和解密
在 SSL会话期间交换的信息, 检验信息完整
性 —— 即检测通过 SSL连接发送和接收期间
数据中的任何改变 。
8,C?S,发送消息通知以后从客户机来的消
息将用会话密钥加密 。 客户机然后发送一条
独立的 ( 加密的 ) 消息表明握手的客户机部
分已经完成 。
37
工作流程
四,SSL协议原理及工作流程
9,S?C,发送消息通知以后从服务器来的消
息将用会话密钥加密 。 服务器然后发送一条
独立的 ( 加密的 ) 消息表明握手的服务器部
分已经完成 。
10,SSL握手完成, SSL会话开始 。 客户机与
服务器使用会话加密和解密他们彼此发送的
数据和验证数据完整性 。
38
工作流程
四,SSL协议原理及工作流程
在继续会话之前, Netscape服务器能被配置成检查客
户证书是否出现在 LDAP目录里的用户条目中 。 这个
配置选项提供了一条途径确认客户证书尚未被撤消 。
重要的是要注意到客户机与服务器证书与用公钥 /密
钥对中的一个加密一些数据而用其它密钥解密数据有
关 。
在服务器认证的情况下, 客户机用服务器公用密钥加
密 pre_master_secret。 只有相应的密钥能够正确地解
密 pre_master_secret,客户才确信:与公钥相关联的
标识符事实上是服务器与客户机连接使用的 。 否则,
服务器不能解密 pre_master_secret,不能生成会话要
求的对称密钥, 会话将被终止 。
39
工作流程
四,SSL协议原理及工作流程
在客户认证的情况下, 客户机用客户的密钥
加密一些随机数据, 创建一个数字签名 。 只
有在相应的密钥被使用时, 客户证书中的公
钥能够正确验证数字签名 。 否则, 服务器不
能验证数字签名, 会话被终止 。
40
密钥协商的形象化比喻
四,SSL协议原理及工作流程
假设 SSL客户端 C与 SSL服务器端 S通信, 加密
后的消息放在方括号 []里, 以区别于明文消息 。
双方的处理动作的说明用圆括号 ( ) 括起 。
C,我想和你安全的通话, 我这里的对称加密
算法有 DES,RC5,密钥交换算法有 RSA和 DH,
摘要算法有 MD5和 SHA。
S,我们用 DES- RSA- SHA这对组合好了 。
这是我的证书, 里面有我的名字和公钥, 你拿
去验证一下我的身份 ( 把证书发给 C) 。
41
密钥协商的形象化比喻
四,SSL协议原理及工作流程
C,( 查看证书上 S的名字, 并通过手头已有的
CA的证书验证 S的证书的真实性, 如果有误,
发出警告并断开连接, 这一步保证了 B的公钥
的真实性 )
( 产生一份秘密消息 —— 称为 per_master_secret,
以后用于对初始化向量和 hmac进行加密, 然后
用 S的公钥加密成为 ClientKeyExchange)
42
密钥协商的形象化比喻
我生成了一份秘密消息, 并用你的公钥加密
传给你了
( 把 ClientKeyExchange发给 S)
注意:下面我要用加密办法给你发消息了 !
( 将秘密消息进行处理, 生成加密密钥, 加
密初始化向量和 hmac的密钥 )
[我说完了 ]
43
密钥协商的形象化比喻
四,SSL协议原理及工作流程
S,用自己的私钥对 ClientKeyExchange解密,
然后将秘密消息进行处理, 生成加密密钥,
加密初始化向量和 hmac的密钥, 这时双方已
经安全的协商出一套加密办法了 )
注意:我也要开始用加密办法给你发消息了!
[我说完了 ]
C,[我的秘密是,..]
S,[其它人不会听到的,..]