TLS/SSL详解课堂笔记

TLS\SSL详解

TLS协议是IETF将SSL协议的进一步标准化 , 采纳为国际标准基本上,SSL 3.0等于TLS 1.0

SSL、TLS基于PKI技术的、提供机密性、鉴别、完整性的具体解决方案

安全通道是透明的,独立于应用层;传输层采用TCP,提供可靠业务

作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证,如HTTP+SSL---->HTTPS

SSL的功能

客户对服务器的身份鉴别

SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的鉴别中心(CA)的证书,来确认服务器的合法性。

服务器对客户的身份鉴别

可通过公钥技术和证书进行鉴别,也可通过用户名,password来鉴别。

建立服务器与客户之间安全的数据通道

SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性

SSL提供的安全服务

用户和服务器的合法性鉴别

using X.509v3 digital certificates,RSA非对称加密算法,对应国产密码算法SM2

传输数据的机密性

using one of DES, Triple DES, IDEA, RC2, RC4,AES对称加密算法 对应国产密码算法SM4

传输数据的完整性

using MAC with MD5 or SHA-1,不可逆加密算法用于验证数据一致性和完整性,对应的国产密码算法SM3

SSL架构

协议可以分为:

  • Record
  • Change Cipher Spec
  • Alert
  • Handshake
  • Application Data

Record为其它类型数据提供服务(目前4种,可扩展)

在这里插入图片描述

TCP提供有序的可靠传输:序号、重传/确认机制等

TCP的功能正是TLS所需要的,序号、重传/确认机制,并没有在Record层实现。所以,TLS/Record必须建立在TCP之上

或者是其它的可靠连接,不能用在UDP之上。

SSL大致运行流程

在这里插入图片描述

SSL Handshake

发生在TCP连接建立之前

类似于三次握手,上边HTTPS的握手过程

服务器和客户端完成以下任务

协商一套密码算法:对称密码算法,HMAC算法……

服务器鉴别(强制),客户端通过服务器发送的证书

客户端鉴别(可选),服务器通过客户端发送的证书。可选的原因是很多用户可能并没有或不关心证书

鉴别完成后,使用公钥密码进行密钥(随机数)交换,产生会话密钥(用于对称加密)

SSL Change Cipher Spec

通知对方,切换算法

Handshake协商之后,双方分别发送Change Cipher Spec

启用已经协商好的算法

A向B发送,表示“A写的数据”都用切换后的算法

B向A发送,表示“B写的数据”都用切换后的算法

SSL Alert

发送警告消息,各种错误:

  • 通知关闭
  • MAC错误
  • 解密错误
  • 解压错误
  • 算法不支持
  • 协议版本不支持
  • 证书被撤销/过期
  • 等等等

SSL Record

Record

为上面3类协议传输的数据

维护了密码功能参数、执行密码功能

在传输时,根据密码功能参数、进行相应的加解密、HMAC、压缩/解压等等

注意:有可能当前算法是NULL(如在Handshake过程中、双方未协商完),相当于是直接明文传输

当上层数据经过,Record层就根据自己所维护的密码功能参数、进行密码计算,得到变换后的数据

然后交给TCP发送

上层数据是Handshake/Alert/Application Data等

协商过程

Record层的各种密码运算参数,都是由Handshake层协商得到的

协商过程,大致如下:

  1. Client/Server相互发送随机数(明文)—上边HTTPS的握手过程没有提到
  2. 选定算法
  3. Server发送自己的公钥证书
  4. Client产生premaster secret,用Server公钥加密,发送
  5. Server解密,双方共享相同的premaster secret和随机数
  6. 由此计算产生,从而R/W Key/IV/MAC_Secret

Handshake层的具体过程

Handshake消息的结构

Handshake消息,作为TLSPlaintext传输

Handshake消息,又可分为多类,分别用在Handshake过程中的各步骤

最基本/简单过程中,只使用了其中的部分类型的Handshake消息,有些类型的消息,只在特定场合出现,如certificate_verify,只用在鉴别Client的需要

在这里插入图片描述在这里插入图片描述

简单过程-1

C: ClientHello
  • 32 bytes随机数:4字节时间+28字节随机数
  • 支持的最高协议版本
  • 支持的算法列表
  • Session ID,为了Session重用、可选

在这里插入图片描述
在这里插入图片描述

简单过程-2

S: ServerHello

32 bytes随机数:4字节时间+28字节随机数

选定协议版本和算法

Session ID,为了Session重用、可选

在这里插入图片描述

简单过程-3

S: Certificate

Server证书链,从Server证书开始的完整链
含有RSA公钥

在这里插入图片描述

S: ServerHelloDone

在这里插入图片描述

简单过程-4-RSA

C: ClientKeyExchange
  • 根据SeverHello选定的密钥协商算法-RSA
  • 生成48字节随机数
  • 在验证Server证书有效后,用Server证书公钥加密

在这里插入图片描述
在这里插入图片描述

共享premaster secret

Client和Server共享了如下信息:

  • 32字节ClientHello.random
  • 32字节ServerHello.random
  • 48字节Premaster secret(秘密)
  • 假定Server拥有私钥进行解密,在使用RSA算法时,Premaster secret是48字节,DH算法时,不是48字节

产生Master Secret:先基于premaster secret(32字节ClientHello.random、32字节ServerHello.random、48字节Premaster secret)产生48字节的master secret

双方掌握相同的master secret,如下

具体的PRF()算法,参考RFC 2246,双方独立地进行计算
在这里插入图片描述

再基于48字节master secret、32字节Client.random和32字节Server.random产生随机数

在这里插入图片描述

简单过程-5

C: ChangeCipherSpec
  • 通知Server启用协商好的算法
  • Client切换Write State
  • Server切换Read State
C: Finished

如下,注意此时已经有启用各种算法保护,handshake_messages是handshake过程所有信息

在这里插入图片描述

简单过程-6

S: ChangeCipherSpec
  • 通知Client启用协商好的算法
  • Server切换Write State
  • Client切换Read State
S: Finished

类似,除了使用的是“server finished”

在这里插入图片描述

完成协商

开始Application Data

双方接到对方的Finished消息、校验没有问题后开始传输Application Data

完整的简单过程

在这里插入图片描述

OpenSSL

目前,使用最为广泛SSL/TLS开发库是OpenSSL

  • 公开源代码,C语言实现
  • 用于多种操作系统平台
  • 可以从www.openssl.org获得

OpenSSL封装了SSL/TLS协议的细节

  • 可以通过调用OpenSSL的几个简单的函数来,与对方建立安全会话
  • 发送数据(由OpenSSL进行加密、MAC)
  • 接受数据(由OpenSSL进行解密、验证MAC)

中间人攻击

在这里插入图片描述

  • 能够通过ARP 欺骗、DNS 欺骗或者浏览器数据重定向等欺骗技术,使得SSL客户端C和服务器端S的数据都流向SSL MITM攻击机M
  • SSL客户端用户在接收到SSL MITM攻击机伪造的数字证书后,被骗取对该证书的信任,并继续SSL连接
  • SSL服务器未要求进行SSL客户端身份鉴别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值