2-0 基本概念
1、密码体制语法定义
明文消息空间M: 可能的明文字母串集合
密文消息空间C: 可能的密文字母串集合
加密密钥空间K: 可能的加密密钥集合
解密密钥空间K’: 可能的解密密钥集合
有效的密生成算法: N>K X K’
加密算法E: M X K → C
解密算法D: C X K’→ M
- 密码体制分类
- 双(公)钥密码体制 ke≠kd
- 单(私)钥密码体制 ke=kd
- 流密码
- 分组密码
2、古典密码 Kryptos
- 置换密码 -> 明文字母保持不变,但顺序打乱 -> 矩阵置换
- 代换密码 -> 明文字母被替换,但顺序保持不变
单表代换 -> 一个明文字母对应的密文字母是确定的 -> 凯撒密码
多表代换 -> 一个明文字母可以表示为多个密文字母 -> 维吉尼亚密码(引入密钥)
弗纳姆密码 -> 流密码雏形 -> 将每消息比特和相应的密钥比特进行比特异或运算
2-1 单(私)钥密码体制
1、流密码 逐比特异或
- 基本概念
- 明文m
- 伪随机序列k -> 有限状态自动机(有限存储单元和确定性算法)
- 若密钥流是完全随机的非周期序列,则可以用它实现一次一密
- 密文 c = Ek(m)
- 密钥流生成器的结构 -> δ:密钥流生成器的内部状态
- 加密解密过程相同且互逆;流密码的安全性完全依赖于伪随机数的强度
驱动部分:状态序列s控制生成器的周期和统计特性
组合部分:对s进行非线性组合
- 分类
- 同步流密码:δ与明文消息无关,则密钥流独立于明文。(明文不进入密钥流发生器)
- 无记忆性,时变的;对失步敏感;没有传输差错。
- 自同步流密码:δ依赖于密钥流与明文。
- 一位出错,影响后n位密钥的正确性;具有自同步功能。
- 同步流密码:δ与明文消息无关,则密钥流独立于明文。(明文不进入密钥流发生器)
2、快速软、硬件实现的流密码算法
- A5加密算法(自同步流密码)
- GSM(数字蜂窝网)中采用,用于手机到基站无线链路的加密
- 由三个线性反馈移位寄存器(LFSR)组成,级数N分别为19、22、23
- 特点:执行效率高✅移位寄存器级数短,可以用穷尽法破译❌
- 加法流密码生成器
- 按递归关系式给出i时刻的输出字
- 选择适当系数使生成序列周期最大化,条件:选用次数大于2的本原3次式,且以斐波纳切数列决定递推式的系数
- 加法流密码生成器举例:FISH、PIKE、MUSH
- RC4算法(不公开,密钥长度可变,同步流密码)
- 基于输出反馈模式,利用8x8个S盒,在变长密钥控制下对0,1,...,255的数进行置换
- 祖冲之密码算法 -> 128-EEA3(用于4G)
3、分组密码
- m长分组 -> n长数字序列
- 设计要求:
- 分组长度大于128bit
- 密钥长度大于128bit
- 算法足够复杂
- 加密解密简单,易于实现
- 数据无扩展
- 差错传播尽可能得小
- shannon密码设计思想
- 扩散diffusion:如置换,重新排列字符。隐蔽明文数字的统计特性
- 混淆confusion:如代换。密钥和密文关系复杂化,统计相关特性极小化。
- DES(data encryption standard)介绍:
- 明文64bit,密文56bit
- 满足feistel网络结构,加密解密操作非常相似,只需要逆转密钥编排
- DES一轮加密过程
- S盒-> 混淆:决定安全性 ;
- S盒是在对称密钥算法中用于执行置换计算的基本结构,它是唯一的一个非线性结构。S盒的主要功能是通过简单的“代替”操作来混淆密钥与密文之间的关系。 具体来说,S盒可以将48比特的数据压缩成32比特。这个过程涉及将特定的数量(通常是48比特)通过8个不同的S盒进行处理,每个S盒具有6位输入和4位输出的能力。 这些S盒构成一个四行十六列的表格,其中的每一项是一个4位二进制数,代表相应的十进制数值。
- P盒 ->扩散:一比特明文改变,影响大部分密文
- AES(advanced encryption standard)
- rijndeal算法为AES原型,由基本的“轮变换”(记为Round(State,Roundkey))经过多次迭代而成。
-
- state ->消息轮矩阵 ; roundkey -> 轮密钥矩阵
- eg:以明文分组长度128bit,密钥长度128bit为例
- 字节代换 SubBytes(state) ->为每个字节提供非线性变换
- 行位移 ShiftRows(state)
- 列混淆 Mix Columns(state) ->
- 轮密钥加 AddRoundKey(State,RoundKey) ->
- 加密解密不满足feistel结构,需要两块板子,两种算法。
4、中国商用分组密码算法SM4
5、分组密码的工作模式分类
- 电码本模式(ECB)Electronic CodeBook 用相同的密钥分别对明文分组单独加密。
- 优点:每个数据块独立加密,可并行加密,实现简单
- 缺点:相同明文会产生相同密文,不具备数据完整保护性
- 适用:于短消息加密传输
- 密码分组链接模式(CBC)Cipher Block Chaining 将前一个密文块与当前明文块进行异或运算后再加密。
- 优点:每个密文块的加密依赖前一个密文块,具备数据完整性保护
- 缺点:错误传播、不适合并行处理
- 适用:于常规文件加密、非实时加密等场景
- 密码反馈模式(CFB) Cipher FeedBack将前一个密文块作为输入进行加密,生成一个密钥流,再与当前明文块进行异或运算得到密文块
- 优点:可变长度的加密操作;实时性;可以部分解密数据
- 缺点:错误传播敏感;不适合并行处理;需要保证初始向量的唯一性和完整性
- 适用于流加密和对特定部分数据进行随机访问的场景
- 输出反馈模式(OFB)Output-FeedBack将前一个加密算法的输出作为输入进行加密,生成一个密钥流,再与当前明文块进行异或运算得到密文块。
-
- 优点:可变长度的加密操作;实时性;对于密文分组的错误不敏感
- 缺点:传输错误不可恢复;不支持并行加密;无法提供数据完整性保护
- 适用于实时数据流加密和随机访问的场景
- 计数器模式(CTR)Counter 每一个明文分组都与一个经过加密的计数器异或。对每个后续的分组,计数器增1。
- 优点:可并行处理;随机访问;不受错误传播影响
- 缺点:计数器必须唯一;密钥流和明文相关性较弱
- 适用于并行加密、随机访问和实时加密的场景
2-2 双(公)钥密码体制
-
公钥密码体制的基础 -> 计算复杂度理论
- Whitfield Diffie& Martin Hellman公钥密码思想
- f(x):A → B
- 单射(一 一映射)
- 单向函数:逆向求x极为困难
- 陷门单向函数:fz:Az→Bz,z∈Z,Z->陷门信息集合
- 对于给定z∈Z,容易找到一对算法Ez和Dz,使对于所有x∈A,易于计算fz及其逆
- fz(x)=Ez(x) ; Dz(fz(x))=x
- 对于所有z∈Z,给定Ez和Dz,使对于所有x∈A,难以计算x
- 对于给定z∈Z,容易找到一对算法Ez和Dz,使对于所有x∈A,易于计算fz及其逆
- 数学难问题eg:
- 有限域上的离散对数问题DL ->Elgamal、DH
- 大整数难分解问题FAC ->RSA、Rabit
- 椭圆曲线上的离散对数问题
- 多项式求根
- Diffie-Hellman问题(DHP)
-
公钥密码体制原理
- A给B发送消息,采用B的公钥加密
- 常用加密模式:用公钥传递会话密钥(单钥)
-
公钥密码体制特点
- 公钥:可以被任何人知道,用于加密和验证签名
- 私钥:只有持有者知道,用于解密或签名
- 公钥密码体制解决了对称密钥的发布和管理问题
-
公钥密码体制用途
- 密钥分发
- 消息加密
- 数字签名
- 发送方采用自己的私钥对消息进行签名
- 接收方采用发送方的公钥对签名进行验证
-
公钥密码体制的安全型
- 安全性依赖于解数学上的困难问题。
- 穷搜索(exhaustive search)在理论上能够破解公钥密码,当密钥足够长时破解极其困难目前,通常要求足够大的密钥长度(>1024 bits)。
- 密钥太长会导致加密速度缓慢,因此公钥算法常用于密钥传递,而一般不用于实时的数据加密。
-
RSA密码体制 PKCS系列标准
- 理论基础为一种特殊的可逆模指数运算,安全性基于大整数分解的困难性
- 可应用于消息加密和数字签名。
- RSA公钥算法说明
- 密钥生成算法
- 选(两个不同奇素数p,q)、算(n=p*q, 欧拉函数值φ(n)=(p-1)(q-1))、选(一个整数1≤ e <φ(n),GCD(φ(n),e)=1)、算(e逆元d=e-1modφ(n) ->费马小定理)
- 公钥为n、e,私钥为d (p、q不再需要,可销毁,但绝不可泄露)
- 加密算法 :m → c = me mod n
- 解密算法: c → cd = m mod n
- 密钥生成算法
- RSA算法的安全性
- 理论上,RSA的安全性取决于模n分解的困难性。采用广义域筛所需计算机资源:
- 单钥和双钥密码在相同安全性下的等价密钥长度
- 理论上,RSA的安全性取决于模n分解的困难性。采用广义域筛所需计算机资源:
- RSA算法的局限性:加密速度很慢,为DES的千分之一
- RSA破解
- RSA破解
-
ElGamal公钥密码算法/ Schnorr /DSA签名算法
- 基于有限域上的离散对数问题的困难性
- 算法说明
- 密钥生成算法: 选择私钥α in GF(p)*,计算公钥 β =gα mod p
- 加密算法 :选择一个随机数k(仅发送方持有),且(k,p-1)=1 ; 加密 m → (gk,m βk) mod p = (y1,y2) =c
- 解密算法:m=y2 y1-α mod p
-
其他公钥密码算法
- Diffie-Hellman公钥密码体制
- D-H协议核心思想:1、交换公钥;2、计算共享密钥
- 基于离散对数难题
- 不能抵抗中间人攻击
- 椭圆曲线密码体制ECC
- 基于椭圆曲线上的离散对数问题
- 可以使用比RSA更短的密钥
- 应用:无线MODEM、WEB服务器、集成电路卡
- 实数域上的椭圆曲线的概念
- Diffie-Hellman公钥密码体制
- 中国商用密码SM2算法