《数据通信与网络》笔记--SSL/TLS
2024-08-24 03:32:47
上次简单地介绍了IP层的安全,今天来介绍下在传输层提供安全性最主要的2个协议:安全套接字层(SSL)协议和传输
层安全(TLS)协议。TLS实际上就是SSL的IETF版本。
1.SSL服务
设计安全套接字层(secure socket layer,SSL)是为了对来自应用层的数据提供安全的压缩服务,SSL可接受来自应用层
任何协议的数据,一般典型的是HTTP协议,来自应用层的数据被压缩(可选),被签记和被加密,然后将它们传给可靠的传输
层协议如TCP。Netscape在1994年开发了SSL,1995年发布了第2版和第3版,本章讨论SSLv3.
分段
SSL首先将数据划分为等于或者小于2^14个字节的块。
压缩
在客户和服务器之间协商某一无损压缩方法对每个段进行压缩,这个服务是可选的。
报文完整性
要保持数据完整性,SSL使用密钥散列函数创建MAC(
Message Authentication Code)。
Message Authentication Code)。
保密性
为了提供保密性,原始数据和MAC使用对称密钥加密方法进行加密。
成帧
给被加密的有效载荷增加一个头部,然后将它传给一个可靠的传输层协议。
2.安全参数
在上次讨论IPSec时,提高交换数据双方的任一方对每一个关联(SA)都需要一组参数,SSL具有相似的目的,但是方法是
不同的,没有安全关联,但有密码组和加密的密码一起组成安全关联。
密码组
对每次SSL会话,密钥交换,散列和加密算法一起定义密码组(cipher suite)。每个密码组以SSL开头后跟密钥交换算法并
用WITH将密钥算法与加密算法和散列算法分开。例如:
SSL-DHE-RSA-WITH-DES-CBC-SHA
定义DHE-RSA(临时的DIffie-Hellman RSA数字签名)以DES-CBC作为加密算法进行密钥交换而SHA所谓散列算法。注
意:DH是对应的Diffie-Hellman,DHE是临时的Diffie-Hellman。
加密的密码
安全参数的第二部分是称为加密的密码。为了报文的完整性和保密性。SSL需要6个密码加密的密码,4个密钥和2个初始化向量。
生成密码和加密过程如下图所示:
1.客户和服务器交换2个随机数,一个是客户生成的,另一个是服务器生成的。
2.客户和服务器时前面讨论过的某一种密钥交换算法交换预主密码(premaster secret)
3.对预主密码应用两个散列函数(SHA-1和MD5)生成48为的主密码(master secret)
4.对主密码应用预先规定的常数和同一组散列函数生成可变长的密码。
3.会话与连接
IP和TCP协议的特性是不同的,IP是无连接协议,而TCP是面向连接的协议,IPSec中的关联将无连接IP转换成面向连接的安全协议,
而TCP已是面向连接的。然而SSL设计者采用二级连接性的方法:会话(session)和连接(connection)。两个系统之间的会话是一次
关联,它能持续有很长的一段时间。在一次会话期间,连接可建立和终端若干次。
在会话建立期间生成一些安全参数,一直有效直到会话终止(例如,加密组和主密钥),有些安全参数对每个连接必须重新生成
(或偶尔是可恢复的)(例如,6个密码)
4.四个协议
下面介绍SSL如何实施,SSL在两层上定义了四个协议:
记录协议(Record protocol)是承载者,它携带来自其他三个协议的报文,也携带来自应用层的数据。对传输层,通常是
TCP来说,来自记录协议的报文是它的有效载荷。
握手协议(Handshake protocol)向记录协议提供安全参数,它建立一个密码组并提供密钥和安全参数。它也实施用户对
服务器的鉴别,以及如需要的话服务器对用户的鉴别。
改变密码规则协议(change cipher spec protocol)用于发出加密密码准备就绪的通知。
警告协议(alert protocol)用户报告不正常的情况。
最新文章
- [No00003D]操作系统Operating Systems信号量的代码实现Coding Semaphore &;死锁处理Deadlock
- 安装findbugs
- redmine安装部署
- 遇到问题-----JS中设置window.location.href跳转无效(在a标签里或这form表单里)
- UITbaleView上按钮的单选
- Hibernate 1、Hello Hibernate
- 怎样在android实现uc和墨迹天气那样的左右拖动效果
- 3-Dom
- android之使用GridView+仿微信图片上传功能
- RBAC权限管理系统
- Hive| DDL| DML
- Mac安装Linux的KVM管理工具virt-manager
- 自己动手实现java数据结构(一) 向量
- Redis之集群环境搭建
- Linux wget断点续传,限速下载
- Bytom交易说明(UTXO用户自己管理模式)
- url中特殊符号转换
- Java编程中必须了解 十几个代码段
- csp公共钥匙盒
- MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
热门文章
- spring framework 4 源码阅读(1) --- 前期准备
- (2.1)servlet线程安全问题
- jsDelivr - Free open source CDN for javascript libraries, jQuery plugins, CSS frameworks, Fonts and more
- 用Nginx实现Session共享的均衡负载
- CSS的基本认识
- Ajax--xml格式及注意事项
- 前端开发利器—FIDDLER 转
- oracle 格式化数字 to_char
- UESTC 1811 Hero Saving Princess
- [Redux] Passing the Store Down Implicitly via Context