Pre:
- 明文: 需要秘密传送的信息
- 密文:明文经过密码变换后的信息
- 加密:把明文变成密文的过程
- 解密:把密文变成明文的过程
- 破译:从密文恢复成密文的过程
- 加密算法:对明文进行加密时采用的一组规则
- 解密算法: 对密文进行解密时采用的一组规则
- 密钥: 加密和解密时使用的(秘密的)关键性信息
一、密码系统的组成:
明文空间、密文空间、
密钥空间、加密算法、解密算法
数学符 记 密码系统 为 集合 S = { P, C, K, E, D}
P = 明文空间
C = 密文空间
K = 密钥空间
E = 加密算法
D = 解密算法
当给定密钥 k ∈ K 时, 加密算法为 Ek, 解密算法为Dk
对应密码系统为 Sk = { P, C, k, Ek, Dk }
且符合逻辑关系: C= Ek §; P= Dk? = Dk( Ek§ )
二、密码学核心:
1. 密码的两个基本工作原理:混淆、扩散
置换 扩散: 扩散密钥的影响
代换 混淆: 防止统计分析攻击
2. 加密信息的安全性,不取决于算法的保密,而取决于密钥的保密
注:军用 不公开算法,商用 公开算法。
三、密码体制分类:单钥体制(对称密码)、双钥体制(非对称密码)
记 加密密钥为 Ke,解密密钥为 Kd
单钥体制: Ke = Kd
双钥体制: Ke ≠ Kd
单钥体制分类:流密码、分组密码
流密码 Stream Cipher : 数据逐位(比特/字符)加密,即数据流和密钥流 逐位(比特/字符) 进行 异或(XOR)运算
分组密码 Block Cipher : 对数据分组,分组后再进行处理
双钥体制分类:分组密码
2. 密码分组链接模式(CBC)Cipher Block Chaining
本段参考博客:链接(写得比我看的那本书写得更通俗易懂)
当前组的密钥= function(上一组的密文)
先加和取模,再加密算法,得密文。
加密过程: 在所有分组前插入一个分组IV,每个分组的加密方式(密钥)具有递推关系,即跟上一组的密文有关。
分组随机性: 被插入的分组IV被称为初始化矢量,是一个随机的n比特分组(长度和内容均随机)。由此可以使得后续分组随机、密文翻译方式随机。
注:因为插入原因,对于m个明文分组,CBC模式将输出m+1个密文分组
加/解密模式图:
4. 输出反馈模式(OFB)
本段参考博客:链接(写得比我看的那本书写得更通俗易懂)
当前组的密钥=function(加密后的(上一组的密钥))
先加密算法,再加和取模,得密文
加密过程: 把上一组的 Input、和密文进行逻辑连接,作为当前组的 input输入,然后对input进行加密算法。
分组随机性: 在所有分组前插入随机分组IV(长度、内容均随机)。
注:因为插入原因,对于m个明文分组,CBC模式将输出m+1个密文分组
加/解密模式图:
5. 计数器模式(CTR)
本段参考博客:链接(写得比我看的那本书写得更通俗易懂)
当前组的密钥 = function( 加密后的(计数器))
加密过程: 计数器CTR,每进行一段明文->密文加密过程,CTR++;将计数器输入到加密算法,得到的输出作为密钥。
加/解密模式图:
七、流密码(序列密码)
1. 基本概念与分类
定义
Basic:加和取模
密钥更换频率要高: 改为研究密钥生成算法
但是一次一密,成本过高,所以想到序列密码方法:
密钥生成算法,根据种子密钥,生成密钥,使加密效果接近于 一次一密
同步序列密码
对双方同步性的严格要求,有弊有利
要求: 严格要求双方同步
弊端:一旦发生1bit的丢包现象,序列的后续密文均发生错误。
优势:抵抗“重播”和“插入删除“攻击,一旦有攻击者用这两种方法,立马可以被通讯双方检测到
自同步序列密码
借助 n级移位寄存器存储的密文反馈型 (OFB),流密码。
即 每个密文数字 影响后n个明文数字的加密结果。
非线性序列密码
使用 与 或 非 等 逻辑运算,实现非线性组合。
防止线性(代数)相关推导破解同步序列密码。
2. RC4算法
密钥长度可变,算法基于随机置换
基于 非线性数据表(计算机查表)
256字节的S表,和两个指针 I 和 J,S[ 0 ~255],存储的数字为 0 ~ 255 随机顺序。
S表的随机化方法
先将S顺序填充,再创造R[0~255]表,用户将密钥写入R内,用R表将S表进行随机化。
【参考代码】
实现随机置换S表的效果。
3. ZUC 祖冲之算法
即密钥序列产生算法
输入:
128bit 密钥 和 128bit 初始向量
输出:
32bit 密钥字序列
过程:
三层逻辑,16级线性反馈移位寄存器+比特重组+非线性函数
八、多重加密与三重 DES【待填】
- 3DES: 密钥长度放大到3倍,168位密钥,暴力算法无法破解,但加密时间很长,音视频加密不适用。
九、伪随机数发生器和伪随机函数
pre / definition
理解1: 对于流密码体制而言,加密方式固定,所以可以作文章的地方便是 “密钥序列”。
理解2: 根据先前密码学的铺垫结论,“一次一密” 体制安全性最佳,而“随机数生成”是实现“一次一密”的关键步骤。
周期性:
序列a[i] 称为周期序列,即 存在 周期T 使得 a[i+T]=a[i]
1. 伪随机性的衡量
周期性:周期越长越安全
真随机序列应当为 非周期性的,所以周期越长越接近真随机,越安全。
不可预测性:越不可预测越安全
自相关性低; 线性复杂度 是不可预测性的重要指标。
2. 伪随机序列生成器的方法
LFSR(线性反馈移位寄存器)
n级线性反馈移位寄存器:
f(x) = Σ c[i] * x[i] ,c[i]为常系数
分组密码的序列化
即通过分组密码加密生成随机序列。
软件实现的快速加密算法
RC4等算法。
计算复杂性的方法
RSA生成器等。
基于混沌理论的方法
扩散、混淆等。
十、其他单钥密码体制
- IDEA 欧洲数据加密标准:64位/组,128位密钥,可对抗差分分析和线性分析
- RC5: RC系列为RSA公司设立的一系列密码,分组长度 密钥长度 均可变的 分组迭代密码算法
对称密钥体制的固有缺陷:密钥管理
密钥管理、分发、更换,成本高
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览35205 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!