SSL协议资料
SSL/TLS
Diffie-Hellman密钥分配
计算共享密钥:
KAB = axA.xB mod p =( yAxB )mod p (which B can compute) =( yBxA )mod p (which A can compute) KAB 可以用于对称加密密钥
不能用于加密任意消息;可以建立共享密钥
客户对服务器的身份认证
– SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可 靠的认证中心(CA)的证书,来确认服务器的合法性。
服务器对客户的身份认证
– 可通过公钥技术和证书进行认证 – 也可通过用户名+password来认证。
SSL/TLS
SSL提供3个方面的安全服务-机密性
机密性-在SSL客户机和服务器之间传输的所有数据都经过 了加密处理,以防止非法用户进行窃取、篡改和冒充。
SSL/TLS
SSL密钥的计算
KDF:key derivation function 密钥导出函数
SSL/TLS
pre_master_secret的获得-密钥交换算法
在hello消息中,双方交换随机数以及各种算法 两类密钥交换算法: – RSA,客户产生一个48字节的pre_master_secret, 然后通过服务器的公钥传递给服务器 – Diffie-Hellman,双方协商得到的密钥被用作 pre_master_secret 再从pre_master_secret计算得到master_secret master_secret总是48字节长,而pre_master_secret长度不 定,取决于密钥交换算法
会话ID 客户支持的密码算法列表(CipherSuite) 客户支持的压缩方法列表
SSL/TLS SSL Client SSL S服务器发送server_hello消息,参数: 客户建议的低版本以及服务器支持的最高版本 ServerHello.random服务器产生的随机数、会话ID 服务器从客户建议的密码算法中挑出一套 服务器从客户建议的压缩方法中挑出一个
SSL Server
服务器发送certificate消息,消息包含一个X.509证书,或者一条证书链 (除了匿名DH之外的密钥交换方法都需要) 服务器发送server_key_exchange消息(可选的)
Client Certificate Request
服务器发送certificate_request消息(可选) 非匿名server可以向客户请求一个证书 包含证书类型和CAs
Message Digest:
MD5 SHA.
Data Compression:
PKZip WinZip gzip StuffIt
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
SSL/TLS
SSL Client
二 服务器鉴别和密钥交换
Server Certificate
SSL/TLS
Diffie-Hellman密钥分配
1. 2. 3. 4. 5. 6. 两个通信主体Alice和Bob ,希望在公开信道上建立 共享密钥 选择一个大素数p (~200 digits) 一个生成元a Alice 选择一个秘密钥( private key) xA < p Bob选择一个秘密钥( private key )xB < p Alice and Bob 计算他们的公开密钥: yA = axA mod p, yB = axB mod p Alice , Bob 分别向对方发送(公开) yA , yB
SSL/TLS
SSL ,Secure Socket Layer
TLS,Transport Layer Security
SSL连接像TCP的套接字那样
SSL/TLS
SSL的目标
SSL (Secure Socket Layer)是一种在TCP协 议之上为两个端实体(End Entity)之间提供安 全通道的协议。包括SSLv2、SSLv3、TLS协议
Client
SSL/TLS
Server
SSL/TLS
在SSL上运行HTTP
SSL Client
一 建立安全能力
Client Hello https://www.
SSL Server
Port 443
客户发送一个client_hello消息,包括以下参数: 版本
ClientHello.random随机数(32位时间戳+28字节随 机序列)
SSL基本概念
SSL/TLS
会话状态参数
SSL/TLS
连接状态参数
SSL/TLS
SSL Handshake 握手协议
服务器和客户能够相互鉴别对方的身份;
协商加密和MAC算法; 协商用来保护SSL记录中发送的数据的加密密钥。
握手由在客户和服务器之间交换的报文实现。
SSL/TLS
SSL握手协议报文格式
change_cipher_spec
Server Finish
SSL/TLS
By Introducing SSL and Certificates using SSLeay - Frederick J. hirsch
SSL记录协议(SSL Record Protocol)操作
SSL/TLS
2 字节
SSL/TLS
SSL工作原理
采用握手协议建立客户与服 务器之间的安全通道,该协 议包括双方的相互认证,交 换密钥参数
采用告警协议向对端指示其 安全错误
采用改变密码规格协议告知 改变密码参数
采用记录协议封装以上三种 协议或应用层数据
SSL/TLS
连接(Connection) 和会话(Session) 连接:连接是能提供合适服务类型的传输(在OSI分层模型中 的定义);对SSL,这样的连接是对等关系;连接是暂时的, 每个连接都和一个会话相关 会话:SSL会话是指在客户机和服务器之间的关联; 会话由握手协议创建;会话定义了一组可以被多个连接共用的 密码安全参数 会话是虚拟的结构 对于每个连接,可以利用会话来避免对新的安全参数进行代价 昂贵的协商。
相关密钥生成
final_client_write_key = MD5(client_write_key || ClientHello.random || ServerHello.random) [0. …, 15] final_server_write_key = MD5(server_write_key || ServerHello.random ||ClientHello.random) [0, …, 15] client_write_IV = MD5(ClientHello.random || ServerHello.random) [0, …, 7] server_write_IV = MD5(ServerHello.random || ClientHello.random) [0, …, 7]
14
By Introducing SSL and Certificates using SSLeay - Frederick J. hirsch
1. 分片
SSL/TLS
Server Done Message
服务器发送server_hello_done, 然后等待应答
SSL Client
SSL/TLS
SSL Server
三 客户机验证和密钥交换
Client Certificate
客户收到server_done消息后,它根据需要检查服务器提供的证书,并判 断server_hello的参数是否可以接受,如果都没有问题的话,发送一 个或多个消息给服务器。
Client write secret
Client write IV
Server write secret
Server write IV
SSL/TLS
密码参数的生成
确保每个摘要的输出都是不同的
SSL/TLS
Key_block导出其他密钥
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
SSL/TLS
密钥交换结果
SSL Client SSL Server
C>S Encryption MAC IV
S>C
C>S
S>C
Encryption
MAC IV
SSL Client
SSL/TLS
SSL Server change_cipher_spec
Client Finish 第四阶段建立起一个安全的连接
使用的加密算法有:Triple DES, IDEA, RC2, RC4, …
SSL/TLS
SSL提供3个方面的安全服务-完整性
SSL利用加密算法和Hash函数来保证客户机和服务器之 间传输的数据的完整性。
使用的算法有:MAC with MD5 or SHA-1 建立服务器与客户之间安全的数据通道 – 客户与服务器之间的所有发送的数据都被发送端 加密、接收端解密,同时还检查数据的完整性
– Transport Layer Security (TLS) committee – TLSv1 was based upon SSLv3
Netscape 、Microsoft 都支持 TLSv1 TLS1与SSL3的差别非常微小。
SSL/TLS
SSL提供3个方面的安全服务-认证
认证-利用数字证书技术和可信任的第三方认证机构,为客 户机和服务器之间的通信提供身份认证功能,以便于彼此之 间进行身份识别 -使用 X.509v3 数字证书
如果服务器请求证书的话,则客户首先发送一个certificate消息, 若客户没有证书,则发送一个no_certificate警告。