SSLv3&TLS协议学习笔记(一)
来源:互联网 发布:阿里云节点选择 编辑:程序博客网 时间:2024/06/05 16:07
原理:
安全通信的3个条件:保密性,完整性,身份认证
保密性:
记录协议中的每一条消息都会被加密。记录协议中的消息使用对称加密算法(DES、3DES、AES、IDEA、RC5、RC6)加密
完整性:消息验证码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 密钥变更:握手商定新的密钥、发送该内容类型的消息
- SSLv3&TLS协议学习笔记(一)
- magento paypal 禁止 sslv3, 采用TLS 协议,nginx需要做的更改。(只针对https)
- SSL/TLS协议笔记
- HTTPS系列笔记记录(一):HTTPS 和SSL/TLS协议原理详解
- SSL/TLS协议运行机制的概述学习笔记
- 禁用sslv3协议
- GitCafe已正式取消对 SSLv3 协议的支持,目前选择支持更安全可靠的 TLS 协议
- 简单分析TLS & SSLv3 renegotiation vulnerability
- TLS学习笔记
- http 协议学习笔记(一)
- RFC2865 Radius协议学习笔记 (一)
- HTTP协议学习笔记(一)
- HTTP协议学习笔记(一)
- http协议学习笔记(一)
- TCP/IP协议学习笔记(一)
- TCP/IP协议学习笔记(一)
- Rime协议学习笔记:(一)Rime协议概述
- 学习TCP协议笔记一
- linux中lnmp环境的搭建
- Android 事件分发onInterceptTouchEvent和onTouchEvent整理
- hashMap ,hashTable ,concurrentHashMap区别
- SimpleAdapter创建ListView
- centos7 开放端口
- SSLv3&TLS协议学习笔记(一)
- Design Patterns - Observer Pattern
- light oj 1004 水DP
- Java 并发:sleep,yield,join
- NOI题解(1.5编程基础之循环控制)(待补全)
- 设置ctl.start 属性启动init.rc 中service以及权限问题
- 关于appserv 中 php 安装php_imagic的问题
- java中按文件中的分隔符(空格、换行符等)逐项读取文件中的数据
- MySQL profiling 查找Query瓶颈