计算机网络安全技术 笔记3


三、认证技术

消息认证

基本概念

  • 网络环境中的攻击:
    • 对付泄密、传输分析——消息保密性.
    • 对付伪装、内容修改、顺序修改、计时修改——消息认证.
    • 对付发送方否认——数字签名.
    • 对付接收方否认——数字签名和相关协议.
  • 消息认证:
    • 认证 = 比较.
    • 验证收到的消息确实来自真正的发送方且未被修改.
    • 可以验证消息的顺序和及时性.
      • 数字签名是一种认证技术, 用来抗击发送方否认.
      • 各种认证协议属于认证技术.
    • 消息认证在功能上看作两层:
      • 下面有产生认证符的函数, 认证符是用来认证消息的值.
      • 上面协议将函数作为原语, 使接收方可以验证消息真实性.

三种认证函数

消息加密

  • 对称加密:

    • 要求明文具有易于识别的结构, 不通过加密函数不能重复这种结构.

    • 加密前, 每个消息附加一个错误检测码 (帧校验序列 FCS).

    • 先计算 FCS, 再加密: 可提供认证.

    • 先加密, 再计算FCS: 攻击者可构造具有正确 FCS 的消息造成混淆.

    • 例: TCP 协议.

    • 特点:

      • 提供保密性: 只有 A 和 B 共享密钥.
      • 提供认证: 只能发自 A, 传输中未被改变.
      • 不能提供数字签名: 接收方可以伪造, 发送方可以否认.
  • 公钥加密:

    • 只提供保密性, 不能提供认证.
    • 既要提供保密性, 又要提供认证, 发送方先用私钥数字签名, 再用公钥加密.
    • 缺点:
      • 执行了四次附加公钥算法运算.
    • 特点:
      • 提供保密性: 只有 B 拥有解密 $K_{U_b}$, 但任何人可加密消息假称是 A.
      • 提供认证和签名: 只有 A 拥有加密 $K_{R_a}$, 传输中未被改变.

消息认证码 MAC

  • 与加密的区别: MAC 算法不要求可逆性, 加密算法必须可逆.

  • 双方共享密钥, MAC 不能提供数字签名.

  • 与明文有关的认证: 先计算 MAC, 再加密.

  • 与密文有关的认证: 先加密, 再计算 MAC.

  • 认证和保密分开, 使得层次结构更灵活.

    • 可以在应用层提供认证, 而在传输层提供保密性.

Hash 函数

  • Hash 码是消息认证码的一种变形, 不使用密钥, 具有错误检测能力.

  • Hash 码用于消息认证:

    • Hash 码+对称密码: Hash 码提供认证所需的结构或冗余.

    • Hash 码+对称密码: 不要求保密性, 减少处理代价, 相当于 MAC.

    • Hash 码+公钥密码: 提供认证与数字签名.

    • Hash 码+对称密码+公钥密码: 提供认证、数字签名和保密性.

    • Hash 码+秘密值: 提供了认证.

    • Hash 码+秘密值+对称密码: 提供了认证和保密性.

  • 不要求保密性, 可不使用加密函数, 减少计算代价:

    • 加密软件速度慢.
    • 加密硬件成本不容忽视.
    • 加密硬件优化针对大数据块.

安全 Hash 函数 (迭代 Hash 函数) 一般结构

  • MD5, SHA-1 和 RIPEMD-160 都采用这种结构.

  • Hash 函数将输入分组, 最后分组不足时填充.

  • 输入包含长度, 增加了攻击的难度.

  • 压缩函数 f:

    • 输入: 前一步 n 位即连接变量和 b 位分组.
    • 输出: 一个 n 位分组.
    • 通常 b>n, 称压缩函数.
    • 连接变量初始值在算法开始时指定, 终值为 Hash 值.
    • 设计安全 Hash 函数归纳为设计有抗碰撞能力 (计算不可行) 的压缩函数.

常用 Hash 算法

  • MD 族:
    • MD2:
      • 数据 16 位补位, 附加 16 位检验和, 计算 128 位散列值.
      • 如果忽略检验和, 产生 MD2 碰撞.
    • MD4:
      • 利用一部个人电脑几分钟内找到 MD4 完整版本碰撞.
    • MD5:
      • 王小云攻破 MD5 碰撞.
    • RIPEMD-128/160/320.
  • SHA 族: 根据 MD4 和 MD5 开发的算法.
  • HAVAL: 产生不同长度的哈希值, 允许用户指定轮数.

MD5

  • 算法结构:

    • 输入长度无限制.
    • 分组长度 512 bits.
    • 输出长度 128 bits.
    • 四轮运算, 每轮 16 步迭代.
  • 设计目标:

    • 安全性: 找到摘要相同的消息计算上不可行.
    • 速度: 算法有利于快速软件实现.
    • 简洁性: 算法易于描述且易于编程.
    • 倾向使用低端结构.
  • 算法步骤:

    • 增加填充位.
    • 填充长度.
    • 初始化 MD 缓存:
      • 中间结果和最终结果保存于 128 位缓冲区, 4 个 32 位寄存器.
    • 以 512 位分组处理消息:
      • 四轮运算组成的压缩函数是算法核心, 标记为 HMD5.
      • 四轮运算结构相同, 各轮基本逻辑函数不同.
      • 每轮对缓冲区 ABCD 进行 16 步迭代.
    • 输出.
  • 安全性:

    • 输出每一位都是输入每一位的函数.
    • 基本逻辑函数复杂迭代使输出对输入依赖性小.
    • 找到 Hash 码相同消息的代价是 $2^{64}$.
    • 找到具有给定摘要消息的代价是 $2^{128}$.

SHA

  • 建立在 MD4 之上:
    • MD4 使用三轮运算, 每轮16步迭代.
    • MD4 第一轮运算没有使用加法常量, 第二轮、第三轮运算使用加法常量.
    • MD4 使用三个基本逻辑函数, 每轮运算使用一个.
    • MD4 没有每步迭代结果与前一步相加.
  • 算法结构:

    • 输入长度 $<2^{64}$ bits.
    • 分组长度 512 bits.
    • 输出长度 160 bits.
    • 四轮运算, 每轮 20 步迭代.

RIPEMD-160

  • 欧洲 RIPE 计划研究组设计.
  • 算法结构:

    • 输入长度无限制.
    • 分组长度 512 bits.
    • 输出长度 160 bits.
    • 五轮运算, 每轮 16 步迭代, 运行两次.

比较

  • MD5 短, 易于受到强碰撞性攻击.

  • SHA-1 和 RIPEMD-160 对强碰撞性攻击安全.

数字签名算法 DSS

  • 消息认证的局限性:

    • 可以保证通信双方不受第三方的攻击.
    • 不能处理通信双方自身发生的攻击.
  • 数字签名:

    • 解决收发双方不能完全信任的情况.
    • 特征:
      • 验证签名者、签名日期和时间.
      • 认证被签的消息内容.
      • 能由第三方仲裁解决争执.
  • 直接数字签名:

    • 只涉及通信双方.
    • 发送方用私钥对整个消息或 Hash 码加密来产生数字签名, 用接收方公钥和共享密钥对整个消息和签名加密, 获得保密性.
    • 弱点: 方法有效性依赖于发送方私钥安全性.
  • 仲裁数字签名:

    • 发送方到接收方的已签名消息先发给仲裁者 A, 进行检查以验证消息源及内容, 然后加上日期, 指明该消息通过仲裁检验.
    • 解决了直接数字签名的问题.
  • 数字签名标准 DSS:

    • SHA-1 算法: 给出新的数字签名方法, 即数字签名算法 DSA.
    • 公钥方法: 不能用于加密或密钥分配, 只提供数字签名 (与 RSA 不同).
    • 算法步骤:

      • 发送方产生 Hash 码和随机数 k, 作为签名函数 Sig 输入.
      • 签名函数依赖于发送方私钥和全局公钥.
      • 签名函数保证拥有私钥的发送方才能产生有效签名.
      • 签名由 s 和 r 两部分构成.
      • 接收方产生 Hash码, 和签名作为验证函数 Ver 输入.
      • 验证函数依赖于全局公钥和发送方公钥.
      • 验证函数输出等于签名 r, 则签名有效.

身份认证

  • 身份认证: 在主客体交互行为过程中确认行为参与者身份.

电子身份认证概述

  • 常见手段:

网站身份认证技术

HTTP 的 Basic 认证

  • 用户身份凭证为账号+静态口令.
  • HTTP 协议是面向一次连接的无状态网络协议.
  • 每次明文发送 HTTP 请求到服务器端, 与存储的用户凭证进行比较.
  • 优点: 交互简单.
  • 缺点:
    • 明文传递账号和口令, 易被监听盗取.
      • 方法 1: 使用加密技术:
        • 口令作为密钥, 无法躲避重放攻击.
      • 方法 2: 使用消息认证技术:
        • 挑战/响应机制, 进行两次 HTTP 请求.
        • 第一次: 服务器向客户端返回随机挑战码 M, 避免重放攻击.
        • 第二次: 客户端发送 MAC 码, 服务器端进行验证.
    • 本地长期保存账号和口令, 存在安全隐患.
    • 服务器每次请求都要进行身份验证, 效率低.
      • 方法 3: 使用表单验证的 session 机制.

基于表单的身份认证

  • Session 包括特定客户端、服务器端及操作时间段.
  • Session 工作原理:
    • 某个 Session 首次启用时, 服务器产生唯一标识符发到客户端.
    • 标识符通常是随机字符串, 存于内存或本地文件.
    • 客户端浏览器通常用 Cookie 技术存储标识符.
    • Session 存活期间, 客户端每次发送 HTTP 请求都会包含标识符.
    • Session 存活期间, 服务器通过标识符关联前后多次请求.
    • Session 结束, 服务器和客户端销毁上述标识符.
  • 基于表单的 Web 身份认证过程:
    • 客户端向服务器发送请求, 服务器返回包含表单的页面.
    • 用户填写表单, 客户端把表单发送到服务器; 服务器进行验证, 通过则启动 Session 返回给客户端.
    • 客户端后续请求包含 Session 标识符, 服务端验证标识符的合法性.
      • 通常基于哈希表数据结构.
  • 缺点: 明文传输, 安全性低, 存在监听盗取可能.
    • 引入挑战/响应机制, 避免明文传输与重放攻击.
    • 传输账号口令时, 使用传输层 SSL 协议传输 HTTP 请求.
  • 不安全做法: 把账号口令 (加密后) 以 Cookie 机制存放在浏览器端.
    • 口令泄露, 重放攻击.
    • 存放内容加上时间戳, 服务器每次验证时间戳.

增强认证

  • 仅靠静态口令认证用户, 安全强度不足, 需要更高强度认证方式.
  • 在静态口令基础上加上其他因素认证方式, 形成双因素或多因素认证.
    • 手机短信口令.
    • 动态口令:
      • VPN, 网上银行, 电子商务.
      • 动态口令牌: 客户手持, 生成动态密码的终端.
      • 基于时间同步方式, 每 n 秒变换一次有效动态口令.
      • 基于计数器同步方式, 每次触发计数器累进时产生动态口令.
    • USB KEY:
      • USB 接口硬件设备, 内置单片机或智能芯片, 存储密钥或数字证书.
      • 用于身份认证、数据加密和数字签名.
      • USB KEY 中私钥不可导出, 仅用于内置的加密或签名运算.
      • 身份认证原理:
        • 服务器产生随机消息 M 送到 USB KEY.
        • USB KEY 用内部私钥对 M 签名.
        • 服务器使用用户公钥验证签名.
    • 数字证书:
      • 权威机构/证书授权中心 CA 数字签名发行的文件.
      • 包含拥有者公钥、名称和 CA 数字签名.

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