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


二、密码学基础

初识密码

与人类共生

  • 密码: 用来混淆的技术, 不同于隐藏、访问控制.

密码基本概念

  • 传统加密:
    • 对称加密、单钥加密.
    • 代换密码、置换密码及二者组合.
    • 安全性在于保持算法本身的保密性
    • 不适合大规模生产, 用户无法了解算法的安全性.
  • 现代加密:
    • 非对称加密、公钥加密, 1976 年第一次公开发表.
    • 密码算法公开,密钥保密.
    • 安全性在于保持密钥的保密性.
    • 适于大规模生产.
  • 密码学:
    • 密码编码学: 研究加密方案的学科.
    • 密码分析学: 研究破译密码获得消息.
    • 统称为密码学.
  • 密码编码学系统的三个独立的特征:
    • 转换明文为密文的运算类型:
      • 置换和代换, 不允许丢失信息.
    • 所用的密钥数:
      • 密钥相同/不同——对称密码/非对称密码.
    • 处理明文的方法:
      • 分组密码/块密码: 处理分组.
      • 流密码/序列密码: 连续处理元素.
  • 无条件安全: 无论有多少密文, 都不足以唯一确定对应的明文.
  • 计算安全:
    • 破译代价超过密文的价值.
    • 破译时间超过密文的生命期.

密码发展历程

  • 第 1 阶段: 古典密码 (1949 年前)
    • 安全基于算法的保密, 密码学不是科学而是艺术.
    • 算法基本手段是代换和置换, 针对字符.
    • 简单的密码分析手段.
  • 第 2 阶段: 近代密码
    • 计算机——复杂密码计算.
    • 有线电报——现代密码编码学.
    • 无线电报——现代密码分析学.
    • 现代密码学的原理 (Kerchoffs):
      • 加密体系安全性依赖于使用的密匙.
      • 古典密码和现代密码的分界线.
    • 香农发表《保密通信的信息理论》论文, 密码学成为一门科学.
  • 第 3 阶段: 现代密码
    • 公钥密码:
      • 无密钥传输的保密通信成为可能
      • 1976年, Diffie & Hellman 提出公钥密码体制.
      • 1977年, Rivest & Shamir & Adleman 提出 RSA 公钥算法.
    • 对称密码:
      • 1977年, 美国实施公开的 DES 对称加密算法.

古典密码

代换技术

  • 单表代换密码:

    • Casear 密码, 密钥词密码.
    • 明文语法模式和结构被保留, 密穷举攻击破译.
  • 多表代换密码:

    • Playfair 密码:

      • 一次加密两个字母.
      • 基于由密钥词构成的 5×5 字母矩阵.
      • 保留了明文语言的结构.
    • Hill 密码:

      • 加密过程: $C=KP\pmod{26}$.
      • 解密过程: $P=K^{-1}C\pmod{26}$.

      • 隐蔽单字母的频率特性.

    • Vigenere 密码:

      • 一系列 Casear 密码.

      • 隐藏了字母频率信息.

      • 并非所有的明文结构都被隐藏.

    • Verman 密码和一次一密:

      • 随机密钥与消息一样长且无重复.

      • 运算基于二进制数据.

      • 无条件安全.

      • 局限性:

        • 产生大规模随机密钥很困难.
        • 密钥的分配和保护很困难.

置换技术

  • 置换形成新的排列.
    • 栅栏技术.
    • 转轮机.

破译举例

  • 穷举法/频率分析法.

对称密码算法

  • 加密解密的密钥相同.
  • 使用秘密信道分配密钥.

S-DES 算法

  • 示例:

Feistel 密码结构

  • 流密码:

    • 每次加密数据流一位或一字节.
    • Vigenere 密码和 Verman 密码.
  • 分组密码:

    • 明文组整体加密, 得到等长密文组.
    • 大多数对称密码使用分组密码.
    • 现行的对称分组密码基于 Feistel 分组密码结构.
  • Feistel 分组密码结构:

    • 使用乘积密码的概念逼近简单代换密码, 依次使用两个或以上的基本密码.

    • 交替使用代换和置换.

    • 是香农提出的交替使用混淆和扩散乘积密码的实际应用.

    • 几乎所有传统分组密码结构都和 Feistel Cipher 类似.

      • 输入: 第 i 轮迭代输入来自上轮迭代输出.
      • 子密钥: 由密钥 K 推导出来.
      • 轮函数: 每轮迭代相同, 输入的子密钥不同.
      • 代换: 数据左半部分, 轮函数 F 作用在右半部分, 与左半部分异或.
      • 置换: 代换后交换数据左右两半.
    • 影响参数: 迭代轮数, 分组和密钥长度, 子密钥产生算法, 轮函数.

  • 混淆和扩散:

    • 刻画密码系统的两个基本构件, 现代分组密码设计的里程碑.
    • 挫败基于统计方法的密码分析.
    • 扩散: 使明文的统计特征消散在密文中, 每个明文数字影响多个密文数字.
    • 混淆: 使密文和密钥的统计关系更复杂, 挫败推导密钥的企图

DES 算法

  • 算法结构:

    • 密钥长度 56 bits, 加上奇偶校验写成 64 bits.
    • 分组长度 64 bits.
    • 迭代轮数 16 轮.
    • 初始置换 $IP$.
    • 末尾置换 $IP^{-1}$.
  • 除初始置换和末尾置换, DES 结构与 Feistel 结构完全相同.

  • 子密钥生成:

  • 一轮迭代:

  • 解密过程: 与加密过程完全相似, 将 16 次迭代的子密钥顺序倒过来.

常用对称密码

  • 3-DES:

    • 两个密钥 $K_1K_2$, 长度为 112 比特, 明文攻击代价为 $2^{112}$ 数量级.

  • Blowfish:

    • 算法结构:

      • 密钥长度 32-448 bits.
      • 分组长度 64 bits.
      • 迭代轮数 16 轮.
      • 基本运算: 模 $2^{23}$ 加法与按位异或.
    • F 映射包含四个 S 盒运算, 子密钥和 S 盒由算法本身生成, 数据不可辨认, 密钥分析困难.

    • 与古典 Feistel 结构不同, 每轮运算对左右部分同时进行, 强度增强.

    • 密钥长度可抵抗穷举攻击, 安全性未受挑战.

  • RC5:

    • 算法结构:

      • 密钥长度 0-2040 bits.
      • 分组长度 32/64/128 bits.
      • 迭代轮数不定.
      • 基本运算: 模 $2^{w}$ 加法, 按位异或与循环左移.

  • AES:

    • 3DES 的缺点: 软件实现速度慢, 分组长度过小.

    • 算法结构:

      • 密钥长度 128 bits.
      • 分组长度 128 bits.
      • 迭代轮数 10 轮.
    • 不是 Feistel 结构, 每一轮都使用代换和置换并行处理分组.

    • 算法过程:

      • 字节代换: S 盒.
      • 行移位: 置换.
      • 列混淆: 代换.
      • 轮密钥加: 按位异或.

  • 其他对称密码算法:

非对称密码算法

公钥密码原理

  • 对称密钥密码的缺陷:

    • 安全的信道分配密钥.
    • 无法用于数字签名.
    • 管理复杂, 密钥的数量 $O(n^2)$.
  • 公钥密码:

    • 密码学历史上唯一一次真正的革命.
    • 基于数学函数而非代换和置换.
    • 基于陷门单向函数的概念, 不知陷门信息下求逆困难.
    • 公钥公开, 存于寄存器或文件, 加密和验证签名.
    • 私钥保密, 解密和签名.
    • 系统控制私钥, 通信就是安全的.
    • 系统可以改变私钥, 公布相应的公钥代替.
  • 加密原理/签名原理.

  • 用途:

    • 加密/解密.
    • 数字签名.
    • 密钥交换: 协商会话密钥, 用于对称密钥加密.

    • 实际应用中目前局限于数字签名和密钥管理.

  • 误解:

    • 密码分析角度看, 公钥密码比传统密码更安全.
      • 加密安全性依赖于密钥长度和破译所需计算量.
    • 公钥密码是通用方法, 传统密码已过时.
      • 公钥密码需大量计算, 仅限密钥管理和签名, 难以取代传统密码.
    • 传统密码与密钥分配中心的握手很麻烦, 公钥密码实现密钥分配很简单.
      • 公钥密码也需协议和中心代理, 处理过程不比传统密码简单有效.

RSA 算法

  • 1978 年首次发表.

  • 是最早满足要求、广泛接受并实现的通用公钥分组密码算法.

  • 攻击方法:

    • 蛮力攻击.
    • 数学攻击: 因子分解.
    • 计时攻击:记录解密消息所用的时间, 来确定私钥.
      • 不仅可以攻击 RSA, 还可攻击其它公钥密码系统.
      • 完全不可预知性, 仅依赖明文, 有很大的威胁.

DH 密钥交换算法

  • 局限性: 只进行密钥交换.

  • 有效性: 计算离散对数非常困难.

DSA 算法

  • 数字签名算法, 用于数字签名标准 DSS.
  • 安全性: 计算离散对数非常困难.
  • 局限性:
    • 只用于数字签名, 不能加密或密钥分配.
    • 由 NIST 研制的, 可能有后门.
    • 选择过程不公开, 提供的分析时间不充分.
    • 比 RSA 慢 10-40 倍, 512 位密钥长度太小.

密钥分配

概述

  • 加密方法:

    • 链路加密.
    • 端到端加密.

  • 密钥分配方法:

    • 将密钥发给数据交换双方, 不让别人知道.
  • 密码系统强度与密钥分配方法有关.

三种情况

传统对称密码分配

  • 人工传送: 适用于链路加密.
  • 密钥分配中心: 适用于端到端加密.
  • 密钥分配中心 KDC 模式:
    • A 向 KDC 请求会话密钥, 消息有 A 和 B 的标识及临时交互号 N1.
    • KDC 用 Ka 加密响应, A 可知一次性会话密钥 Ks, 含 N1 原始请求消息, 还有用 Kb 加密的一次性会话密钥 Ks 和 A 的标识符 IDa.
    • A 存下会话密钥 Ks, 将响应后两项内容发给 B.
  • 网络规模很大, 密钥分配不限定在单个 KDC 上, 使用层次式 KDC.
    • 主密钥分配代价变小, 本地 KDC 出错或被攻击不会影响全局.

公钥分配

  • 公开发布:
    • 通信方将公钥发送给另一通讯方或广播给各方 (电子邮件 PGP 协议).
    • 方法简便, 但是任何人都可以伪造.
  • 公开可访问目录:
    • 可信的实体或组织维护一个动态可访问的公钥目录.
    • 管理员定期发布或者更新该目录.
    • 通讯方可以用新密钥替代当前密钥, 也可以从安全认证通道访问目录.
    • 比公开公钥要安全, 但是一旦攻击者获得目录管理员私钥, 危险很大.
  • 公钥授权:
    • A 发送时间戳消息给公钥管理员, 请求 B 的公钥. 管理员发送用其私钥 KR 加密的消息, A 用管理员公钥解密, 包含 B 的公钥、原始请求、原始时间戳.
    • A 保存 B 公钥, 并将 A 的表示和临时交互号 N1 发给 B. B 从管理员得到 A 的公钥. 通过核对临时交互号, 确认各自身份, 安全通信机制就建立了.
    • 但是只要通信, 公钥管理员就成为系统瓶颈.
  • 公钥证书:
    • 不通过管理员, 用证书交换密钥, 与公钥授权安全性相同.
    • 证书由证书管理员产生, 发给拥有相应私钥的通讯方.
    • 通信方传递证书以传递密钥信息, 可以验证证书由证书管理员发出.

利用公钥分配传统密码密钥

  • 原因: 公钥密码速度较慢, 更适合在传统密码中实现密钥分配.

  • 分配方法:

    • 简单的密钥分配方法:

      • A 产生公/私钥对, 将 KUa 和 A 表示发给 B.
      • B 产生密钥 Ks, 用 A 公钥加密后传给 A.
      • A 计算得到密钥 Ks.
      • 容易受到主动攻击.
    • 具有保密性和真实性的密钥分配方法:

      • 可以抗击主动攻击和被动攻击.

    • 混合方法.


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