网络安全理论

作者 Caligo 日期 2017-12-25
网络安全理论

网络安全理论技术

Chapter1

Chapter2

Chapter3

两大类:流密码与分组密码

流密码:每次加密数据流的一位或一个字节

分组密码:将一个明文组作为整体加密通常得到的是与之等长的密文组

理想分组密码体制
  • ${2}^{n}!$个映射
  • 大规模
Feistel密码结构——用于分组密码的一种对称结构

由于它是对称的密码结构,所以对信息的加密和解密的过程就极为相似,甚至完全一样。

这就使得在实施的过程中,对编码量和线路传输的要求就减少了几乎一半。

  • 设计动机

    • 需要对应较大n分理想分组密码体制的一种近似体制
    • 它可以在容易实现的部件上逐步建立起来
  • 密钥长为k位,分组长为n位,采用${2}^{k}$个变换

  • 建议交替使用代换和置换

  • 目的:挫败基于统计方法的密码分析

    • 混淆(confusion):使得密文的统计特性与密钥的取值之间的关系尽量复杂
      • 使得对手即使获取了关于密文的一些统计特性,也无法推测密钥。
      • 使用复杂的非线性代替变换可以达到比较好的混淆效果,而简单的线性代替变换得到的混淆效果则不理想。
      • 可以用”揉面团”来形象地比喻扩散和混淆.当然,这个”揉面团”的过程应该是可逆的。
      • 乘积和迭代有助于实现扩散和混淆。
        • 选择某些较简单的受密钥控制的密码变换,通过乘积和迭代可以取得比较好的扩散和混淆的效果
    • 扩散(diffusion):明文的统计特征消散在密文中,使得明文和密文之间的统计关系尽量复杂。
      • 例如e的分布 ➡️对应多种加密结果(操作是多重移位)➡️看不出统计特性
      • 正规解释:
        • 扩散就是让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响。
        • 这样可以隐蔽明文的统计特性。
        • 理想的情况是让明文中的每一位影响密文中的所有位,或者说让密文中的每一位受明文中所有位的影响。
    • pps:扩散(diffusion)和混淆(confusion)是C.E.Shannon提出的设计密码体制的两种基本方法,其目的是为了对手从密文的统计特性推测明文或密钥。扩散和混淆是现代分组密码的设计基础。
  • 具体实现

    依赖于以下参数特征:

    • 分组长度 ➡️ 每个分组的明文长度

      • 大的块会提高加密的安全性,但是会降低加密、解密的速度。截止至2013年,比较流行的这种方案是64 bit。而128 bit 的使用也比较广泛。
    • 密钥长度 ➡️ key的长度,子密钥长度之和

      • 同上。现在流行的是64 bit ,而 128 bit 正逐渐成为主流。
    • 循环次数/轮数 ➡️ 经过几次轮函数的操作

      • 每多进行一轮循环,安全性就会有所提高。现阶段比较流行的是16轮。
    • 子密钥生成算法 ➡️ 子密钥是对应每个轮操作的key

      • 生成算法越复杂,则会使得密码被破译的难度增强,即,信息会越安全。
    • 轮函数 ➡️对每轮都做这个函数操作

      • 轮函数越复杂,则安全性越高。
  • 设计Feistel密码的考虑
    • 快速软件加解密
    • 易于分析
数据加密标准DES

第一个并且是最重要的现代分组密码算法

  • 历史(1970年代)

    • IBM Lucifer 1971-1972

    • 标准化 1975年3月公开发表

  • 概述

    • DES是一种用56位密钥来加密64位数据的方法。

    屏幕快照 2017-09-30 上午1.53.00

    IP是初始置换 initial permutation的缩写

Note:
> 初始置换与初始逆置换是互逆的
> 严格而言不具有加密的意义
> DES中其它算法都是线性的,而S-盒运算则是非线性的
> 提供了密码算法所必须的混乱作用
> S-盒不易于分析,它提供了更好的安全性
> S-盒的设计未公开

des-i

DES第i轮迭代加密

f function

F函数

Expansion E-box:扩展E置换(E-盒)

  • 这个内部没有说 具体在ppt03-22 边上两侧,中间是4*8-01-32的矩阵。

S-Boxes:8个S盒

  • S-盒是DES加密算法的唯一非线性部件
  • 输入48bit-输出32bit(6byte-4byte)

Straight P-box:直接P置换

  • 也是一个直接的4*8矩阵 无规则

s盒内部

S盒子内部

  • 黄色部分是输入的中间4byte决定行
  • 绿色部分是输入的两侧2byte决定列