SSL and TLS 知识点

本文详细介绍了SSL/TLS协议的握手流程、连接过程、记录协议、会话恢复、密钥交换算法等内容,包括ClientHello、ServerHello、证书、密钥交换、变更密码规格、完成消息等关键步骤,以及SSL/TLS协议提供的安全目标:身份认证、机密传输、数据完整性、重放保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TLS四个核心主协议:

  • handshake protocol 握手协议
  • change cipher spec protocol 密钥规格变更协议
  • application data protocol 应用数据协议
  • alert protocol 警报协议
  • record协议:包括对消息的分段、压缩、消息认证和完整性保护、加密

SSL核心功能:握手、密钥交换、相互认证、保密数据传输

SSL握手的三个目的:

  • 客户端与服务器就一组保护数据的算法达成一致
  • 确立一组由算法使用的密钥
  • 还可以选择对客户端身份进行认证

由于SSL/TLS协议自身特性(数字证书),不能被用于保护多跳端到端通信,只能保护点到点通信。

SSL/TLS协议能够提供的安全目标:

  • 身份认证(数字证书)
  • 机密传输(信息加密)
  • 数据完整性(MAC)
  • 重放保护(通过使用隐式序列号防止重放攻击)

1. SSL总体流程

SSL握手概述

  1. 客户端将其支持的算法列表和一个用作密钥生成算法输入的随机数发送给服务器
  2. 服务器选择一个加密算法,并将其和包含服务器公钥的证书发送给客户端,还包括一个用作密钥生成算法输入的随机数
  3. 客户端验证服务器证书,并抽取服务器公钥。同时生成一个pre_master_secret随即密码串,然后使用服务器公钥对其进行加密,将加密的信息发送给服务器
  4. 客户端和服务器根据pre_master_secret和随机数值独立计算加密密钥和MAC密钥
  5. 客户端将所有握手消息MAC值加密后发送给服务器
  6. 服务器将所有握手消息MAC值加密后发送给客户端

2. SSL连接

SSL 连结

  1. 握手消息ClientHello,用于告知服务器客服端所支持的密码套件种类、最高SSL/TLS协议版本以及压缩算法。还包括一个客户端生成的用于密钥产生的随机数,在密钥生成过程中被使用(其它有Session值,第一次握手为0;版本号)
  2. 服务器返回的一系列握手消息。首先是ServerHello,包含了服务器选择的加密参数。还包括一个服务器生成的用于密钥产生的随机数,如果是第一次握手,服务器将提供给客户端一个Session值用于恢复使用已经协商好的密钥信息
  3. 服务器发送Certificate,该消息是X.509证书序列,证书依序提供,从服务器证书开始,到Certificate authority或者最新的自签名证书结束。同时证书会附带携带与协商的密钥交换算法对应的密钥。客户端除了校验签名信息,还要保证证书链中的所有证书均未被吊销。
  4. ServerHelloDone,表示服务器已发送在此阶段要发送的全部信息。此项告诉客户端本次Certificate后面没有可选信息,不用再等了
  5. ClientKeyExchange客户端验证了服务端证书并并抽取公钥后,使用服务器公钥对生成的被称为pre_master_secret的随机密钥串加密,再通过此消息发送
  6. ChangeCipherSpec告诉服务器,客户端之后的消息都是用商定的加密算法,此消息不属于握手消息,
  7. Finished 发送前一阶段的所有握手消息MAC值,对握手消息校验,这样服务器可以判断使用的加密算法是否是安全商定的,而没有遭到中间人篡改或诱导
  8. ChangeCipherSpec告诉客户端,服务器之后的消息都使用商定的加密算法
  9. Finished

2.1 ClientHello

结构体:

struct {
 ProtocolVersion client_version;
 Random random;
 SessionlD session_id; 
  CipherSuite cipher_suites<2..2^16-1>;
 CompressionMethod compression_methods<l..2^8-1>;
} ClientHello;

struct {
 uint8 major;
 uint8 minor;
} ProtocolVersion;

struct {
 uint32 gmt_unix_time;
 opaque random_bytes[28]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值