密码学基础

1 概述

1.1 密码学(cryptography)术语

密码学基础_第1张图片

m: 明文
KA(m): 密文,利用秘钥KA加密
m = KB(KA(m)): 利用秘钥KB解密

1.2 对称密钥加密

密码学基础_第2张图片

  • 对称密钥加密: Bob和Alice共享相同(对称)密钥: KS
    • e.g., 单码替代密码的替代模式

Q: Bob和Alice如何确认密钥值(密钥分发) ?

1.3 公开密钥加密

密码学基础_第3张图片

1.4 破解加密方法

唯密文攻击(cipher-textonly attack): 入侵者(如Trudy)只截获到密文,基于对密文的分析进行破解

  • 两条途径:
    • 暴力破解(brute force):尝试所有可能的密钥
    • 统计分析

已知明文攻击(knownplaintext attack): 入侵者已知(部分)明文以及与之匹配的密文

  • e.g., 在单码替代密码(monoalphabeticcipher)中,入侵者已确
    认字母a,l,i,c,e,b,o的替换关系

选择明文攻击(chosenplaintext attack): 入侵者可以获取针对选择的明文的密文

2 传统加密方法

替代密码(substitution cipher): 利用一种东西替代另一种东西。

  • 凯撒密码(Casesar cipher):一个字母替代另一个字母

    • 将一个字母利用字母表中该字母后面的第k个字母替代
    • 如k=3,“bob. i love you. alice” →“ere, l oryh brx. dolfh”
  • 单码(字母)替代密码(monoalphabetic cipher)

密码学基础_第4张图片

  • 多码(字母)替代加密(polyalphabetic encryption):使用多个单码替代密码,明文中不同位置的字母使用不同的单码替代密码
    • 例如,使用采用两个凯撒密码的多码替代加密:

密码学基础_第5张图片

换位(transpositions)密码: 重新排列明文中的字母。

  • 置换法(permutation method)
    • 将明文划分为固定长度(d)的组,每个组内的字母按置换规则(f)变换位置
    • 密钥: (d, f)

密码学基础_第6张图片

  • 列置换加密
    • 将明文按行组成一个矩阵,然后按给定列顺序输出得到密文

密码学基础_第7张图片

  • 列置换加密的密钥包括列数和输出顺序
    • 可以用一个单词来表示
    • 单词长度表示列数,单词中的字母顺序表示输出顺序

密码学基础_第8张图片

3 现代加密技术

  • 现代加密技术的基本操作包括经典的替代和置换
    • 不再针对一个个字母,而是针对二进制位操作
  • 现代加密技术主要分为:
    • 对称密钥加密
    • 非对称密钥加密(公开密钥加密)

3.1 对称密钥加密

  • 对称密钥加密:
    • 流密码(stream ciphers)
    • 分组密码,也称块密码(block ciphers)

3.1.1 流密码

基本思想:

  • 首先利用密钥K产生一个密钥流: z=z0 z1 z2…
  • 然后使用如下规则对明文串x=x0x1x2…加密:y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…
  • 解密时,使用相同的密钥流与密文做运算(XOR)

流密码工作流程

密码学基础_第9张图片

3.1.2 分组密码

  • 将明文序列划分成长为m的明文组
  • 各明文组在长为i的密钥组的控制下变换成长度为n的密文组
  • 通常取n=m
    • n>m 扩展分组密码
    • n< m 压缩分组密码
  • 典型分组密码结构: Feistel分组密码结构

    • 在设计密码体制的过程中, Shannon提出了能够破坏对密码系统进行各种统计分析攻击的两个基本操作:扩散(diffusion)和混淆(confusion)
    • 基于1949年Shannon提出的交替使用替代和置换方式构造密码体制
  • 基于“扩散” 和“混乱” 的思考, Feistel提出通过替代和置换交替操作方式构造密码

  • Feistel是一种设计原则,并非一个特殊的密码

密码学基础_第10张图片

密码学基础_第11张图片

密码学基础_第12张图片

Feistel结构的分组密码安全性取决于:

  • 分组长度
    • 分组长度越大,安全性越高,加密速度越慢,效率越低
    • 目前常用的分组加密算法的分组长度取64位
  • 子密钥的大小
    • 子密钥长度增加,安全性提高,加密速度降低
    • 设计分组密码时需要在安全性和加密效率之间进行平衡
  • 循环次数
    • 循环越多,安全性越高,加密效率越低
  • 子密钥产生算法
    • 在初始密钥给定的情况下, 产生子密钥的算法越复杂,安全性越高
  • 轮函数
    • 一般情况下,轮函数越复杂,加密算法的安全性越高

你可能感兴趣的:(计算机网络技术)