分组密码の一些相关概述|密码学
分组密码概述
原理&特点
原理
将明文划分成长为m(如64或128)的分组P=(p0,p1,p2,…,pm-1), 各明文分组分别在长为t的秘钥K=(k0,k1,k2,…,kt-1)的控制下变成长为n(一般n=m)的密文分组C=(c0,c1,c2,…,cn-1)。
特点
速度快, 安全性较高, 易于标准化, 便于软硬件实现
是网络安全中实现数据保密性
的核心机制, 可用于构造伪随机数生成器、序列密码、消息认证码、Hash哈希函数
分组密码的一些概念
分组密码设计要求:
-
分组长度要足够大
保证对长度为n的分组而言,2^n足够大防止
明文穷举攻击
-
密钥量足够大
防止
密钥穷举攻击
-
密码变换足够复杂
避免被找到简化数学方法从而被攻击
-
加解密运算简单(可选)
-
无数据拓展和压缩(可选)
密码系统的3个基本原则:扩散
,混淆
,乘积密码
(抗击密码系统的统计分析)
-
扩散
密钥或明文的每一比特变化都会影响许多比特的变化,以便隐蔽明文的统计特性(雪崩效应)
-
混淆原则(混乱原则)
明文和密文之间的依赖关系尽可能复杂化,防止通过统计分析方法破译(如非线性代换)
混乱必须是可逆的
-
乘积密码
设密码体制R=(P,C,K1,E1,D1)和R2=(P,C,K2,E2D2)是两个具有相同明文空间和密文空间的密码体制, R1和R2的乘积密码体制R1*R2定义为(P,C,K1*K2,E,D)。R* R2中的加密变换和解密变换如下:对任意明文x ∈P和密钥k=(k1,k2),加密变换为:
对任意密文y ∈C和密钥k=(k1,k2),解密变换为:
简单来说就是, 支持套娃的操作
Feistel网络
分组密码中主要使用两种迭代网络结构: Feistel网络
, SP网络
Feistel网络有点在于加解密相似性, 只需要一个逆转的秘钥编排算法, 其加解密过程几乎相同。
F表示轮函数(不一定可逆), K0,K1,…,Kn表示进行第n+1轮加密的子秘钥
加解密过程如下:
Feistel网络
的雪崩效应
假设轮函数的输入最右边发生1比特变化, 至少影响轮函数输出2比特的变化
SP网络
SP网络
是由多重S变换
和P变换
组成的变换网络
基本操作都是S变换(代换)
和P变换(置换,分组重排)
, 前者成为S盒
, 后者成为P盒
- 代换的
S盒子起混乱(混淆)作用
- 置换的
P盒子起扩散作用
SP网络
的雪崩效应
输入的明文或密文即使变化很小也会导致输出发生很大变化, 每次经过代换的S盒
都会让影响加倍
轮函数设计标准
- 非线性(主要依赖S盒子)
- 可逆性(同时能够满足加解密要求)
- 雪崩效应
- 位独立(要求输入中某一位的变化, 引起输出中的其他位变化是彼此无关的)
主要性能指标: 安全性、速度、灵活性
子秘钥生成方法
子秘钥生成算法
是从初始(种子)秘钥产生迭代的各轮要使用的子秘钥的算法, 轮函数F的功能在自秘钥的参与下完成。
迭代次数
一般来说迭代次数越多密码分析越困难
, 但是次数过多会是输入和输入出的关系复杂化, 而安全性并没有明显的增强。
决定迭代次数的准则: 使密码分析难度大于简单穷举搜索攻击的难度
分组密码迭代次数一般采用8, 10, 12, 16, 20
居多
分组密码算法介绍
DES比较简单直接放一个流图, 这几个加密算法等强网拟态结束了再继续复习开个新的文章吧~
-
数据加密标准DES
-
高级加密标准AES
-
国际数据加密算法IDEA
-
SM4密码算法
2022_11_04 第11周星期五 17:00