通信安全及SSL协议

SSL协议

一、通信安全

(一) 通信安全的安全目标

  • 保密性( confidentiality)

    • 保证数据在通信过程中不被窃听
  • 消息完整性( message integrity)

    • 保证数据在通信过程中不被篡改
  • 端点认证( endpoint authentication

    • 保证通信过程中双方身份的真实性
    • 单向认证
    • 双向认证

(二)概念

1. 必要的装备

  • 加密

    • 将明文通过加密算法和密钥转换为密文
  • 消息摘要( Message Digest)

    • 将任意长度的消息作为输入,产生一个表示消息特征的定长字符串,也称为数字指纹,具有不可逆性和抗冲突性
  • MAC( message authentication codes,信息验证码)

    • 保证消息不被篡改的算法,MAC类似于摘要算法,但是在计算MAC时还需要采用一个密钥,目前基本采用HMAC,即 Hash MAC
  • 公钥基础设施PK

    • 私钥签名、公钥加密、数字证书等等技术等集合,提供身份认证、数据保密性、完整性、操作抗抵赖性

2. 把工具组合起来使用

  • 数据加密

    • 公钥方式用于加密共享密钥
    • 共享密钥用于加密通信数据
  • 数据签名

    • 先计算通信数据的消息摘要
    • 发送方私钥加密消息摘要进行数字签名

(三)密码学 - 摘要算法

  1. 原文
  2. 摘要算法
  3. 摘要值

特点:

  • 不可逆
    • 不能通过摘要推导出原文
  • 碰撞空间大
    • 不可能创造出消息M‘让它和消息M与相同的哈希值

常用对称算法:
MD5、SHA1、SHA256、SHA384、SHA512、SM3
在这里插入图片描述

(四)CA “数字证书颁发机构” 过程

在这里插入图片描述

  • 发送方和接收方彼此信任签发对方证书的CA(信任证书颁发机构证书)
  • CA可以是多级的,通过证书链来实现信任关系
  • 证书链的第一级是“自签”的,被称为“根CA″,中间级别的CA被称为中级CA

二、SSL协议的解释和加密

(Alice发送方,Bob接收方)

(一)简单的安全通道协议

1. 构建玩具安全协议TSP

  • 简单的安全消息系统只能发送单条消息
  • 交互式的系统需要建立一组可以在整个连接中使用的密钥
  • 构建一个Alice和Bob在通信过程中对双方进行认证并建立一组密钥的简单安全通道协议,称之为玩具安全协议(Toy Security Protocol,TSP)。
    • 握手(Handshake)。Alice和Bob使用他们的证书和私用密钥来对对方进行认证并交换共享密钥。
    • 导出密钥(Key derivation)。Alice和 Bob 使用达成一致的共享密钥导出一组加密密钥,以用于对传输进行保护。
    • 数据传输(Datatransfer)将要传输的数据分割成一系列的记录(record),并对每条记录单独加以保护,这样使得数据一准备好就可以进行传输,一旦接收就可以进行处理。
    • 关闭连接(Connection closure)。使用特殊的、经过保护的关闭消息,来安全地关闭连接。这样可以阻止攻击者伪造关闭操作而截断正在传输的数据。

2. 单向握手

  • 简单的握手——完成单向认证的握手
    1. 给Bob发送一条Hello消息,告诉她已经作好了通信准备
    2. Bob以他的证书作为应答
    3. Alice产生一个准备和Bob共享的单一的密钥,称之为主密钥(master
      secret,MS)
    4. 使用Bob证书中的公钥加密MS发送给Bob
    5. Bob使用自己的私钥解密出MS获得了通信共享密钥
      在这里插入图片描述

3. 双向握手

  • 简单的握手——完成双向认证的握手
    1. 给Bob发送一条 Hello消息,告诉她已经作好了通信准备
    2. Bob以他的证书和 Nonce作为应答
    3. Alice产生一个准备和Bob共享的单一的密钥,称之为主密钥( master secret,MS)
    4. Alice使用Bob证书中的公钥加密MS,再使用自己的私钥做数字签名
    5. Bob验证 Alice的证书并获取证书公钥,使用 Alice的公钥验证 Alice的签名
    6. Bob使用自己的私钥解密出MS获得了通信共享密钥
      在这里插入图片描述
      Nonce是或 Number once的缩写,在密码学中 Nonce是一个只被使用一次的任意或非重复的随机数值。

4. 导出密钥

只有一个共享密钥是不是够用

  • 使用同一个密钥来完成不止一种类型的加密操作被认为是不安全的

Ecs用于将数据从客户端发送到服务器端的加密密钥

Mcs用于从客户端发送到服务器端数据的MAC密钥

EsC—用于将数据从服务器端发送到客户端的加密密钥

Msc——用于从服务器端发送到客户端数据的MAC密钥

  • 使用一个称作密钥导出函数( key derivation function,KDF的工具来导出上述各种用途的密钥

KDF的输入是主密钥MS和Bob所发送的 Nonce,输出是上述各种用途的密钥

5. 数据传输

  • 如何防止重放攻击(MITM Attack)

  • 攻击者将截获记录重新发送给接收者

  • 将记录进行编号

  • 编号必须成为MAC输入的一部分,以防攻击者对席号进行修改

  • M=MAC(MxSequencelD)x=cs或sc

  • 序号不能阻止攻击者重放Alice的所有消息,需要Bob每次握手都生成一个新的Nonce,新的握手会使用新的一组不同的密钥

  • 如何防止截断攻击(Truncation Attack)

  • 攻击者可以很容易伪造数据包,例如TCP的关闭连接,Bob意识不到Alice的消息没有传完整

  • 根据记录中运载的数据是普通数据还是控制信息,规定其类型

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值