金融数据安全-Chap.8


Chap.8 网络支付安全问题

8.1 公钥基础设施PKI

8.1.1 PKI的基础概念

公钥基础设施(PKI, Public Key Infrastructure)是用非对称密钥技术对网上服务等电子商务服务提供安全设施的机构.

PKI使用 证书 的形式来管理用户, 将用户的公钥与其其它身份信息通过证书关联起来.
狭义上的PKI只需要能够:

  • 创建
  • 管理
  • 存储
  • 分配
  • 撤销

公钥证书即可.

但是随时代发展, PKI的功能已经不仅限于如上方面, 还包括对网络上所有的产品提供其余的安全设施.(比如密码学上的安全服务)

8.1.2 PKI提供的功能

PKI提供的功能如下:

  • 安全登录: 将一个成功登录的结果安全的分发到其他设备上.(减少多次登录的需求)
  • 终端用户的透明性: 就是提供服务的技术细节不需要对终端用户公开
  • 全面的安全性: 即我们说的与用户身份信息相关联的数字证书

其优势在于:

  • 低成本
  • 互操作性高
  • 开放性广

8.1.3 PKI的组成

PKI的组成部分包括以下几个方面:

  • 最终实体(EE)与数字证书(Cert): 数字证书不必多说, 最终实体分两类:
    • 证书主体(就是个人信息的标明用户)
    • 证书依赖方(需要这些个人信息的第三方)
  • 认证中心(CA): 负责它最终实体身份的真实性
  • 注册中心(RA): 负责最终用户的注册工作
  • 证书库(Repo): 负责向所有用户公布数字证书与证书注销列表

PKI组成结构

8.1.4 PKI的功能(2)

根据上述PKI的组成, 我们可以更加细化一些PKI的功能:

  • 安全服务功能
    • 数字签名: 签名生成与签名验证
    • 认证服务: 通常流程如下
      • 用户用私钥对自己的某些信息进行签名
      • 验证方通过证书中的公钥来对这些信息进行验签
    • 时间戳服务: 证明一组数据在某个时间是否存在
    • 安全公证服务: 即记录 / 确认某个元素在某个时间点, 或者本身是否存在(通过签名来进行)
    • 不可否认服务: 保证双方确实参与了某个具体行为
  • 系统服务功能
    • 证书的申请和审批: 用户必须先提供信息, PKI才能进行证书审批
    • 密钥的生成和分发: 可以为用户产生并分发密钥
    • 证书的颁发: 签发数字证书并存到证书库中
    • 证书的撤销: 将过期的(或其它的原因而失效的)证书放入证书撤销列表中(CRL, Certificate Revocation List)
    • 证书和目录查询: 提供为外界查询证书的接口
    • 密钥的备份和恢复: 最终用户的密钥信息丢失时, 通过在线交换协议来完成这个过程
    • 密钥的更新
    • 密钥的历史档案: 由旧证书和历史密钥等旧信息组成
    • 交叉认证: 一个CA给另一个CA认证证书, 这意味着两个CA域内部的用户可以进行安全通信

8.2 信任模型

8.2.1 信任模型的基本概念

信任模型包含以下几种概念:

  • 信任 : 一个实体假定另一个实体会像它期望的那样表现, 则称这个实体信任它.
  • 信任域 : 即一群实体都遵循同样的规则, 则它们处于同一个信任域中.
  • 信任锚 : 意思是必须有一个足够有说服力的实体为你做担保, 别人才能信任你, 这个担保人就叫信任锚.
  • 信任关系 : 经过一条条信任锚传递出去的信任链条被称为信任关系, 在验证实体身份时, 可以通过这种信任关系是否存在来进行.

当前的信任模型主要关注三个问题:

  • PKI颁发的证书是怎样被确定的?
  • 信任是怎样建立的?
  • 一定的环境下, 这种信任如何被控制?

8.2.2 信任模型的分类

当前PKI信任模型主要分以下四种:

  • 认证中心的严格层次结构模型
  • 分布式信任结构模型
  • Web模型
  • 以用户为中心的信任模型

8.2.3 认证中心的严格层次结构模型

基本上读者看到层次都能猜出来了, 没错, 就是树形模型.
其中根节点是对每个节点都有特别意义的CA.
从根节点发散出来的所有 非叶子节点 都是子CA.
而叶子节点通常就是用户节点.

这种结构的特点是每一个节点(叶子节点)都会信任它与根节点的路径上的全部节点.(根节点自然就被所有节点所信任)

PKI严格层次模型

8.2.4 分布式信任结构模型

与上一种情况相反, 将信任分散在2个甚至更多的CA上.

分布式信任结构模型

8.2.5 Web信任模型

这里, 根CA变成了浏览器这个软件本身.
哎, 啥意思呢, 就是浏览器预装了一些受信任的CA根证书, 用户默认即信任它们.

这个过程整体而言对于用户是透明的, 比较方便.
但坏处也很明显, 如果某个CA被攻破了, 代表着会引起一系列的安全问题.

Web信任模型

8.2.6 以用户为中心的信任模型

与Web的模式相反, 这种情况是完全由用户自己决定信任哪个证书, 不信任哪个证书.
进而多个用户能够构建起一个很庞大的信任网络.

以用户为中心的信任模型

8.3 证书

PKI签发的就是这个玩意, 它是一种在互联网上用于验证身份的证明文件.

8.3.1 证书格式

以X. 509数字证书为例, 列举出证书的格式内容:

  • 版本号: 编码证书的版本
  • 序列号: 唯一
  • 签名算法标识: 即CA在证书上用了什么方法签名
  • 颁发者: 在证书上签名的实体
  • 有效期限
  • 主题: 标识申请证书者
  • 主题公开密钥信息: 即主题选择公开的公钥信息 / 使用的非对称算法等
  • 颁发者唯一标识符
  • 主题唯一标识符
  • 签名

其实实质上就是公钥管理机构在 你的公钥 上用 它的私钥 签了个名, 证明你的身份.

当前X. 509 的主流版本是 v3 .

8.3.2 证书的存储载体

证书的存储主要有两种种形式:

  • 磁盘方式: 成本低, 但是容易被毁坏 / 盗用
  • USB Key: 可移动的USB计算设备

8.3.3 证书的申请 / 发放 / 维护以及撤销

证书的申请需要个人向PKI进行申请, 而其实核心就在于PKI的认证中心(CA)组件.
认证中心是一个权威的, 可信的, 公正的第三方机构, 专门负责发放管理数字证书.

其中有一个关键环节是证书关于申请者信息的认证, 涉及到CA中的一个子组件叫 注册中心RA . 它负责对证书申请者进行资格审查并决定是否同意发放证书.

维护与撤销同样归CA进行管理, 它会在证书失效时在 证书撤销列表(CRL) 中添加对应的表项, 而这个证书撤销列表能够通过在线证书状态协议OCSP进行查询.

8.4 TLS / SSL

SSL即安全套接字(Secure Socket Layer)的简写, 是Web浏览器与Web服务器之间安全交换信息的协议.
TLS是它的升级版本.

其工作原理通过三个子协议来进行:

  • 握手协议(Handshake)
  • 记录协议(Record)
  • 警报协议(Alert)

8.4.1 Handshake

过程如下:

  • $ client \to server $ : 客户端初始消息
    • 支持的TLS版本
    • 支持的加密算法
    • 随机数
    • 支持的压缩方法
  • $ server \to client $ : 服务器初始消息
    • 确定使用的TLS版本
    • 选择的加密算法
    • 服务器证书(含有公钥)
    • 随机数
  • $ server \to client $ : 服务器鉴别和密钥交换
    • 服务器的证书及证书链: 用于向客户端证明服务器的身份
    • 服务器公钥
    • 证书请求(即向客户端请求证书): 包含可以接收的证书列表.
    • 握手完成
  • $ client \to server $ : 客户端鉴别和密钥交换
    • 客户端的证书和证书链(可选项, 目的同上一步)\
    • 客户端公钥
    • 证书验证(证明自己用有证书的私钥)
  • $ client \to server $ : 更改密码规格
  • $ server \to client $ : 更改密码规格

8.4.2 关于密钥交换以及不同密钥的说明

上面一整个过程中涉及到一次密钥交换以及两种密钥:

一次密钥交换是指第三步和第四步, 客户端和服务器端向对方发送了自己的公钥, 这实际上是通过Diffie-Hellman计算出了一个两方共享的密钥, 这个密钥我们称之为 预主密钥(Pre-Master Secret) .

注意
Diffie-Hellman是非常常用的密钥交换协议, 不了解的读者可以去自行查阅看一下, 不是很难, 这里不费笔墨了.
如果不想查看, 也可以直接了解它的作用, 就是让双方得知了一个相同的密钥.

现在双方都有一个相同的密钥了, 但是一直用这个密钥显然不符合安全标准, 因此还要通过这个 预主密钥 到腾出一个 主密钥(Master Secret) .
这时候, 在第一步和第二步发的随机数就起到作用了, 这个主密钥一般是:

$$ master \ secret = PRF(pre \ master \ secret, “master \ secret”, client \ random + server \ random) $$

PRF是个伪随机函数, 通过如下三部分得到一个主密钥, 随后再通过这个主密钥来生成一些对称密钥即可.

8.4.3 TLS记录协议

这个协议为高层协议提供一些基本功能支持, 比如:

  • 数据封装
  • 加密
  • 压缩

文章作者: MUG-chen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 MUG-chen !
  目录
加载中...