密码学笔记

一.密码学概述和古典密码

基本概念

密码编码学和密码分析学

Plaintext:明文,被隐蔽消息,M

Ciphertext:密文,C

Encryption:加密

Decryption:解密,加密的逆过程

Encryption algorithm: 加密算法,E()

Decryption algorithm: 解密算法,D()

Key: 密钥,控制加密和解密算法操作的数据处理,分别称作加密密钥和解密密钥,k

  • 传统密码体制所用的加密密钥和解密密钥相同或实质上等同,从一个易于推出另一个:单钥或对称密码体制,无法实现不可否认性
  • 加密密钥和解密密钥不相同,从一个难于推出另一个,双钥,或非对称密码体制

密码体系是一个五元组(M C K E D)

密钥空间K,在单钥体制下K1 = K2 = K

加密变换$E_{k1}$

解密变换$D_{k2}$

(M C K $E{k1}$ $D{k2}$)为保密通信系统

密码分析者,选定变换函数h,对c进行变换,得到的明文是明文空间中的某个元素,

即$m’ = h(x)$

如果m’ = m,则分析成功

保密系统基本要求

  1. 理论上不可破,即 $ p_r{m’=m}=0 $,当知道已知的明文密文时,要决定密钥或任意明文在计算上是不可行的
  2. Kerchhoff原则,保密性不依赖于加密体制或算法的保密,而依赖于密钥
  3. 加密解密算法适用于所有密钥空间中的元素
  4. 系统便于实现和使用

密码系统的攻击

  • 惟密文攻击
  • 已知明文攻击
  • 选择明文攻击
  • 选择密文攻击
攻击类型 攻击者掌握的内容
惟密文攻击 加密算法,截获的部分密文
已知明文攻击 以上及一个或多个明文密文对
选择明文攻击 自己选择的明文消息及由密钥产生的密文
选择密文攻击 自己选择的密文消息及相应的被解密的明文

无条件安全:无论敌手截获多少密文,花费多长时间都不能解密密文 (一次一密

计算上安全:1,破译密文的代价超过被加密信息的价值。2,破译密文所花的时间超过信息的有用期。

密码学发展

Cryptology - 密码学

三个阶段:

1.1949之前:古典密码 艺术

2.1949-1975:近代密码 艺术->科学

3.1976年至今:现代密码

古典密码:

  1. 斯巴达棍。算法是缠绕,密钥是棍子的粗细。
  2. 单表代换密码:凯撒密码,单字母代换。算法是代换,密钥是密码表。
  3. 多表代换密码:Enigma密码机。

近代密码:

  1. 1977年,NBS颁布采纳IBM设计的方案作为非机密数据的数据加密标准DES,Data Encryption Standard。
  2. 2001.11.16,采用AES算法
  3. 1976,W.Diffie,M.E.Hellman,提出非对称密码算法思想
  4. 1977,Rivest,Shamir,Adleman提出RSA密码体制

公钥密码学实现加密密钥和解密密钥的分离,伟大革命,使用两个密钥:公钥,私钥

仿射变换

$c = E_{a,b}(m) \equiv am + b(mod26)$

$m = D_{a,b}(c) \equiv a^{-1} + (c - b)(mod26)$

当a和26互为素数的时候才可以解密 最大公因子为1时才互为素数 (不互素的话逆元求不出来,就没法解密

ab为密钥

$a^{-1}$为a的逆元

单表代换优缺点

频次问题

相对位置问题

维吉尼亚密码

加密算法

$c{i+td}=E_k(m{i+td})\equiv(m_{i+td}+k_i)(mod q)$

总结

1.理解保密通信系统模型

2.密码体制从原理分为两大类,单钥和双钥体制

3.加密算法两条安全准则

4.能够计算仿射变换

5.置换密码的操作

二.密码学相关数学知识

1.素数和互素

  • 因子

    • b能整除a,b|a : b是a的因子
    • b|1 b = $\pm$1
    • b|a a|b 则 a=$\pm$b
    • b|a b|c. 则对于任意整数m和n -> b|(am+cn)
  • 素数

    • 素数是现代数论的核心内容
    • p的因子只有 $\pm$1和 $\pm$p
    • 整数分解的唯一性定理 任一正整数可以唯一分解成素数的乘积
      • $a = p_1^{e_1} + p_2^{e_2} + … + p_t^{e_t}$
      • $e_i$是正整数 $p_i$是素数
  • 互素数

    • c是a和b的最大公因子 c=gcd(a,b)
    • 因为所有不为0的整数都是0的因子,因此,gcd(a,0) = |a|
    • 如果gcd(a,b) = 1,则称a,b是互素的

    • 最小公倍数 lcm。d是a和b的最小公倍数,d=lcm(a,b)

    • 若gcd(a,b) = 1,则lcm(a,b) = a * b

2.模运算

  • 数论

    • 是密码学特别是公钥密码学的基本工具

    • 离散的数字集合

    • 运算是模加,模减,逆运算

    • 对整数和多项式进行模运算

    • 字母的通用表示:

      • n: 非负整数
      • p: 素数

      • Z: 整数集合

      • R: 实数集合
      • Q: 有理数集合

      • $Z_n$ = {0,1,2…n-1}小于n的非负整数集合

  • 模运算

    • a = $\lfloor a/n\rfloor$ n + (a mod n)
  • 同余

    • a mod n= b mod n a $\equiv$ b mod n
    • n|(a-b) 等价a $\equiv$ b mod n
  • 同余性质

    • a $\equiv$ b mod n,则b $\equiv$ a mod n
    • a $\equiv$ b mod n,b $\equiv$ c mod n,则a $\equiv$ c mod n
    • a $\equiv$ b mod n,d|n,则a $\equiv$ b mod d
    • a $\equiv$ b mod $n_i$ , d = lcm($n_1,n_2,…n_k$),则a $\equiv$ b mod d,(i = 1,2,…,k)
  • 同余类/等价类/模n剩余类

    • 与a模n同余的全体成为a的同余类记为$[a]_n$
    • $Z_n$为模n的等价类集合
  • 等价类性质

    • 在做mod n的加法和乘法时,等价类的元素可以替换,结果不变
  • 模运算性质

    • 加运算和乘运算先做模和后做模不影响结果
    • 满足交换律,结合律,分配律
    • 单位元,0是加法单位元,1是乘法单位元

3.模指数运算

模指数运算

  • $a^m \pmod p$
  • 思路:现将m用二进制表示
  • ?快速指数运算查询
  • 阶 $ord_n(a)$, 满足 $a^m \equiv $ 1 mod n 的最小正整数m为模n下a的阶
  • $ord_n(a)$ = m,$ a^k \equiv 1$ mod n的充要条件是k为m的倍数

4.费马定理和欧拉定理

  • 费马定理
    • p是素数,a是正整数,且gcd(a,p) = 1,则$a^{p-1}\equiv1$ mod p
    • $aa^{p-2}\equiv$ mod p 或者 $a^{-1} \equiv a^{p-2}$ mod p
    • $2^{100} $ mod 13 = 3 (满足费马定理,即$2^{12} \equiv 1$ mod 13,即$2^{96} \equiv 1$ mod 13)

5.素性检测

素性检测就是对给定的数检验是否为素数

费马定理的逆命题不成立,伪素数(卡米歇尔数)

  • 埃拉托斯散筛法
  • Miller-Rabin概率检测法

    6.欧几里得算法

辗转相除法

7.中国剩余定理

小数重构大数

大数用小数表示

8.群环域

  • 代数系统

    • 代数系统是一种数学模型,包含要处理的数学对象的集合及集合上的关系或运算。
    • 群,环,域都是代数系统。
  • 半群

    • 任取ab属于S,a和b的运算*都在S中,则S对运算*是封闭的
    • 满足结合律
    • 满足以上两点,称为为半群
    • 封闭性
    • 结合律
    • 单位元:$ae = ea = a$,e称为$$的单位元
    • 逆元:对任取a属于G,存在元素$a^{-1}$,$a a^{-1} = a^{-1} a = e$
    • 满足以上几点称为$$是群
    • 实例 $$,模8加
    • 实例 XOR,模2加
    • 实例,加法群
      • 对任意n大于等于1,整数模n的集合构成一个包含n个元素的有限模n加法群,单位元是0,群中任一元素a,它的逆元是n-a,这个群记为$Z_n$
    • 实例,乘法群不是群,是幺半群,不满足逆元的条件

    • 乘法群 $Z_n^*$

      • $Z_n^*={x\in Z_n:gcd(x,n)=1}$,小于n的非负整数且与n互素
      • 模n乘法群,单位元e = 1
      • 是abel群,$|Z_n^*| = \psi(n)$
      • 对素数p,$Z_p^* = Z_p - 0$
  • Abel群

    • 运算*表示加法时,称为加法群
    • 乘法,乘法群
    • 若G的元素是有限的,称为有限群,否则为无限群
    • 有限群中,G的元素个数称为群G的阶数,表示为$|G|$ or $#G$
    • 还满足交换律,则称为群$$为Abel群
    • 密码学中用到的几乎都为Abel群

    • 实例 $$,模8加,阶为8

  • 循环群
    • $g^i = a$,a为任意的一个元素,g为生成元或本原元
    • 即能够自己对自己做运算,最终能够遍历群
    • 实例
      • $Z_4$
      • $Z_p^*$,p为素数,肯定存在生成元
        • 定理$Z_n^*$每一个元素都有乘法逆元
        • 并不是每一个元素都是生成元
    • 本原元的存在性
      • 对模素数p
          1. 其生成元必定存在
          2. 当g为生成元且p与p-1互素时,$g^a$ mod p也是生成元
          3. 生成元个数为$\psi(p-1)$
  • 元素的阶
    • 拉格朗日定理推论,提供了群的阶和群中元素阶的关系
    • $$是Abel群
    • $$是半群
    • 分配律
    • $$是环
    • $$ 是Abel群,0是+的单位元
    • $$ 是Abel群
    • 分配律
    • $$是域
  • 有限域
    • 若q是素数的幂,即$q = p^n$ ,p是素数,n是正整数,则阶为q的域记为GF(q)

9.离散对数

10.平方剩余

11.小结

三.应用密码学

1.流密码

流密码的基本思想:利用密钥k产生一个密钥流,使用规则对明文串加密

与维吉尼亚类似,多表代换密码

密钥流通过密钥发生器f产生

$z_i = f(k,\theta_i)$

分组密码和流密码的区别在于有无记忆性

流密码的滚动密钥,由函数f,密钥k和初始状态西格玛完全确定。此后,输入的密文可能影响加密器中内部记忆元件的存储状态,因而可能依赖于所有输入的影响。

可分为同步和自同步两种

对称密码体制

同步流密码的变换$E_i$可以有多种选择,只要变换即可逆即可。

二元加法流密码是最常用的流密码的体制。即异或。

密钥流序列Z应该具有如下性质

  • 极大的周期
  • 良好的统计特性
  • 抗线性分析
  • 抗统计分析

有限状态自动机

是具有离散输入和输出的一种数学模型,由三部分组成

  1. 有限状态集
  2. 有限输入字符集,有限输出字符集
  3. 转移函数

密钥流产生器

关键是密钥流产生器。一般可将其看成为参数为k的有限状态自动机,有输出符号集,一个状态集,和两个函数以及一个初始状态组成

两个函数为状态转移函数和字符输出函数

LFSR:线性反馈移位寄存器

最大周期为2的n次方减1,n是几级寄存器

2.分组密码体制

对称密码体制

1.概述

  • 加密解密

  • 构成其他加密算法的组成元素

  • 明文
  • 明文分组
  • 密钥
  • 密文分组
  • 加密函数

通常取密文分组数量和明文分组数量相等

  • 要求
    • 分组长度n足够大,防止明文穷举攻击法
    • 密钥量足够大,即置换子集中的元素足够多,以防止密钥穷举攻击,但又不能过长,管理问题
    • 由密钥确定置换的算法要足够复杂
    • 加密和解密运算简单,易于软件和硬件高速实现

2.DES

密钥长度为56位

3.分组密码体制的运行模式

4.IDEA

5.AES

文章作者: Alex
文章链接: http://example.com/2021/03/05/密码学笔记/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alex's blog~