SSLv3&TLS协议学习笔记(一)

来源:互联网 发布:阿里云节点选择 编辑:程序博客网 时间:2024/06/05 16:07

原理:

安全通信的3个条件:保密性,完整性,身份认证

保密性:

记录协议中的每一条消息都会被加密。记录协议中的消息使用对称加密算法DES3DESAESIDEARC5RC6)加密

完整性:消息验证码MAC(md5, sha-1算法):消息+消息的MAC,使用得到消息的散列值

身份认证:509.x CA证书协议(认证原理:客户端通过服务端发送过来的公钥(随证书一起送过来)加密消息发送给服务端,服务端通过私钥进行解密,通过判断对方拥有私钥来进行身份认证,因为通过公钥加密的消息只能用私钥来解密,509.x CA 证书可以保证证书里的公钥确实是这个证书的所有者(Subject)的

SSL/TLS握手协议:

密钥:一串数字

对称加密算法中,加密使用的密钥和解密使用的密钥是相同的

非对称加密算法中,加密算法使用公钥进行加密,使用私钥进行解密,公钥一般发布出去,私钥一般自己保留


SSL 握手过程
1. 客户端 ----------------------------[对称加密解密算法列表 + 生成“会话密钥(对称加密)”需要的随机数]------------------------------> 服务端
2. 客户端 <-------------------------[选定算法 + 证书(服务端公共密钥  + 生成”会话密钥“需要的随机数)]---- 服务端
3. 客户端:校验证书(通过CA证书)、抽取公共密钥、用公共密钥加密其生成pre_master_secret密码串
4. 客户端 ---[用公钥加密的”会话密钥pre_master_secret” ClientKeyExchange消息]---------------------------------> 服务端

5.                                                                                                          服务端:服务端非对称私钥解密出pre_master_secret,

                                                                                                                            该密钥用于RSA算法对消息的加密解密

6客户端 <------------------------------ClientKeyExchange-------------------------------------------------------------------------服务端

7. 客户端 ------------------------[客户端所有消息的MAC finish]-----------------------> 服务端
8. 客户端 <-----------------------[服务端所有消息的MAC finish]------------------------ 服务端
【注】,7、8两步主要是为了防止握手过程消息被纂改


SSL 记录协议
数据包
---------------------------------------------------------
| 记录头 | 加密(原始消息 + 原始消息mac) |
---------------------------------------------------------
记录头
-------------------------------------
| 内容类型 | 长度 | SSL版本 |
-------------------------------------
SSL 数据传输: application_data  
SSL 通信管理: alert(错误报告)  主要用于指示连接将要关闭
handshake(握手)  SSL握手过程消息
change_cipher_spec  密钥变更:握手商定新的密钥、发送该内容类型的消息









0 0
原创粉丝点击