信息安全常用算法分享
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
传统对称密码分析--DES
算法总体框架
64位明文
IP Li = Ri-1 Ri =Li-1⊕f (Ri-1,Ki) i =1,2,3,…16
L0
R0
K1
f
L1
R1
9
K2 f
L2
R2
L15
R15
K16
f
R16
L16
IP-1
10
64位密文
传统对称密码分析--DES
DES算法过程描述
• 64位密钥(K),经子密钥产生算法产生出16个子密钥:
K1 ,K2 ,...,K16 ,分别供第一次,第二次,...,第十六次加密迭代使用
• 64位明文(M)经初始置换IP,将数据打乱重排并分成左右两半
左边为L0 ,右边为R0
• 第一次加密迭代:
在子密钥 K1的控制下,由加密函数 f 对 R0 加密: L0⊕f(R0 ,K1 ) 以此作为第二次加密迭代的 R1,以 R0 作为第二次加密迭代的 L1
传统对称密码分析--3DES
3DES(或称为Triple DES),是DES加密算法的一种模式
[ 通过增加密钥长度,增强抗攻击性 ]
2密钥的3DES:密钥长度112位(已去除8位奇偶校验位) 3密钥的3DES:密钥长度168位(已去除8位奇偶校验位)
17
传统对称密码分析--3DES
2密钥的3DES
密钥产 生算法
若干轮处理
密文128位
21
传统对称密码分析--AES
AES(Advanced Encryption Standard)高级数据加密标准
整体特点 • 分组密码:
明文长度128, 密文长度、密钥长度可变 (128/192/256等,现在一般取 128 )
• 非对合运算:
加、解密使用不同的算法
34
公开非对称密码分析--RSA
参数选择
为确保RSA密码安全性,选择密码参数需注意: • (p-1)和(q-1)的最大公因子要小 否则易受迭代加密攻击 • e的选择 随机且含1多就安全,但加密速度慢 有学者建议取e=216+1=65537 • d的选择 d不能太小,要足够大 • 不要许多用户共用一个模 n 易受共模攻击
28
公开非对称密码分析
每个用户分配一对密钥,将所有用户的公开加密钥Ke 放入共享密钥库PKDB 私有解密密钥 KdA、KdB自己保留
用户 A 公开密钥 KeA
B ……
KeB ……
29
公开非对称密码分析
秘密性保证
Alice(A) C=E(M,KeB) Bob(B)
M=D(C,KdB)
真实性保证 C=D(M,KdA)
DES-(Data Encryption Standard)-数据加密标准 • 算法特点
明文64bit
密钥产生 算法 16个Key 16轮处理 Ki
密文64bit
密钥64位
分组密码: 明文、密文和密钥的分组长度都是64位
对合运算: 因而加密和解密共用同一算法,使工程实现的工作量减半 综合运用了置换、代替、代数等多种密码技术
• 整体结构:
基本轮函数加迭代,圈数可变,≥10
• 128 位的明文:
被分成16 个字节, 按顺序复制到一个4×4 的矩阵中, 称为状态(state),AES 的所有 变换都是基于状态矩阵的变换
22
AES算法框架
128位明文
密钥 初始圈密钥加
圈密钥产生 S盒变换 Nr个圈密钥
行移位与列混淆 圈密钥加 128位密文
101010
0101
10
6: 0110
15
传统对称密码分析--DES
解密分析:
• DES的运算是对合运算,解密和加密可共用同一个运算 • 不同点:子密钥使用的顺序不同
第一次 —— K16 , 第二次 —— K15 , …… 第十六 —— K1
安全弱点:
• 密钥太短,存在弱密钥 • 存在互补对称性
16
M: 64位 K: 168位 (K1,K2,K3)
C: 64位
19
传统对称密码分析--3DES
DES与3DES的特点比较
DES:速度较快,安全性较低
暴力破解:2^56
3DES:速度较慢,安全性更高,其中3密钥的安全性最高
暴力破解:2^168
20
传统对称密码分析--AES
密钥长度 明文128bit 密钥 (128、192、256bit) 初始变换 128 192 256 10 12 14 处理轮数
• 求α的模幂运算为: y =α^x mod p,1≤x≤p-1, 求对数 X 的运算为 x=logαy,1≤x≤p-1 由于上述运算是定义在模p有限域上的,所以称为离散对数运算
39
公开非对称密码分析--ELGamal
ELGamal加密算法
随机选择一个大素数p,要求p-1有大素数因子 再选择一个模p的本原元α。将 p和α 公开 密钥生成 随机选择一个整数 d(2≤d≤p-2 ),计算 y=α^d mod p 秘密的解密钥:d 公开的加密钥:y
40
公开非对称密码分析--ELGamal
ELGamal加密算法
加密过程 • 随机地选取一个整数k,2≤k≤p-2。 • 计算: U =y^k mod p C1=α^k mod p C2=UM mod p [注: 明文M(0≤M≤p-1) ] • 密文C=(C1 ,C2)
解密过程 • 计算 V=C1^d mod p • 计算 M=C2 V ^-1 mod p
12
6源自文库位密钥
DES子密钥产生框图
C0
置换选择1
D0
循环移位 置换选择2
K1
循环移位
C1 循环移位
D1 循环移位 置换选择2
K2
C15 循环移位
C15 循环移位 置换选择2
K16
13
DES加密函数 f 框图 Ri =Li-1⊕f (Ri-1,Ki)
32位输入 选择运算E
48位中间结果
48位子密钥
伪装信息,使未授权的人不能理解它的真实含义
明 文
加密 解密
密 文
密码体制构成
I LOVE U 明文空间 M: 全体明文的集合 密文空间 C: 全体密文的集合 9121522521 密钥空间 K: 全体密钥的集合,K=<Ke,Kd> 加密算法 E: 一组由MC的加密变换 C=E ( M, Ke ) 解密算法 D: 一组由CM的解密变换 M=D ( C, Kd )
24
传统对称密码分析--AES
圈密钥生成:
用户密钥
密钥拓展
密钥选择
圈密钥
25
传统对称密码分析--AES
AES的解密算法
• AES不是对合运算: 解密算法和加密算法不是同一个算法 • AES的巧妙之处: AES的解密算法和加密算法 结构相同
• 解密算法: 把加密算法的基本元变换变成对应的逆变换即可
Alice(A)
Bob(B)
M=E(C,KeA)
30
公开非对称密码分析
秘密性和真实性同时保证
Alice(A)
C=E(D(M,KdA),KeB)
Bob(B)
M=E(D(C,KdB),KeA)
31
公开非对称密码分析--RSA
RSA基于这个数论事实:
将两个大素数相乘得到乘积很容易,但是对乘积进行因式分解却 及其难,于是可将乘积公开作为公开加密钥
11
传统对称密码分析--DES
DES算法过程描述
• 第二次加密迭代至第十六次加密迭代,分别用子密钥 K2 ,..., K16 进行,其过程与第一次加密迭代相同 • 第十六次加密迭代结束后,产生一个64位的数据组。以其左边 32位作为 R16 ,以其右边32位作为 L16 • L16与R16合并,再经过逆初始置换IP –1,将数据重新排列,便 得到64位密文(C)
注:最后一圈没有列混淆
轮 函 数
Nr圈
迭代控制
23
传统对称密码分析--AES
AES组成部分
• S盒变换:
AES唯一的非线性变换,是安全关键 16个相同的S盒,8位输入8位输出 (DES有8个不相同的S盒,6位输入4位输出)
• 行移位变换:
线性变换,作用是置换,把数据打乱重排
• 列混淆变换:
属于代替变换
S1
S2
S7
S8
置换运算P
32位输出
14
传统对称密码分析--DES
其中选择替换S盒是关键:
• S盒是DES唯一的非线性变换,共有8个不相同的S盒 • 每个S盒有6个输入,4个输出,是一种非线性压缩变换 • 设输入为 b1b2b3b4b5b6 ,则以b1b6组成的二进制数为行号, b2b3b4b5组成的二进制数为列号。行列交点处的数(二进制)为输出
RSA算法涉及三个参数:n,e,d
32
公开非对称密码分析--RSA
RSA加解密算法
RSA公开的加密钥(n, e) RSA秘密的解密钥(n, d)
随机地选择两个大素数 p 和 q,而且保密 计算n=pq,将 n 公开 计算φ(n)=(p-1)(q-1),对 φ(n) 保密 随机地选取一个正整数e,1<e<φ(n)且(e,φ(n))=1,将 e 公开 根据 ed=1 mod φ(n),求出d,并对d 保密 加密运算:C=M^e mod n 解密运算:M=C^d mod n
Ke ≠ Kd ,且由Ke 不能计算出 Kd
例如:RSA、ECC、ELGamal
3)新型密码
演化密码、量子密码、DNA密码等
6
How? 常用安全算法的分析
传统对称密码 DES、3DES、AES 公开非对称密码 RSA、ELGamal 散列密码 SHA、MD5
7
传统对称密码分析--DES
41
公开非对称密码分析--ELGamal
ELGamal安全性
• 由于ELGamal密码的安全性,建立在GF(p)离散对数的困难 性之上,而目前尚无求解GF(p)离散对数的有效算法,所以 在p足够大时ELGamal密码是安全的 • 为了安全p应为150位以上的十进制数,而且p-1应有大素因子
加密
M DES DES-1 DES C
M: 64位 K: 112位 (K1,K2)
C: 64位
k1
k2
解密
k1
C
M
DES-1
k1
DES
k2
DES-1
k1
18
传统对称密码分析--3DES
3密钥的3DES
加密 M DES k1 DES-1 k2 解密 C DES-1 k3 DES k2 DES-1 k1 M DES k3 C
33
公开非对称密码分析--RSA
参数选择
为确保RSA密码安全性,选择密码参数需注意: • p和q要足够大 一般应用:p和q应 512 b 重要应用:p和q应 1024 b • p和q应为强素数 文献指出,只要(p-1)、(p+1)、(q-1)、(q+1)四个数之一 有小的素因子,n就容易分解 • p和q的差要大
37
公开非对称密码分析--RSA
rsakey 私钥签名, pubkey公钥认证
38
公开非对称密码分析--ELGamal
ELGamal:建立在离散对数的困难性 背景——离散对数问题:
• 设 p为素数,则模p的剩余构成有限域: Fp={0,1,2,… ,p-1} Fp 的非零元构成循环群Fp* Fp* ={1,2,… ,p-1} ={α,α^2,α^3,,α^p-1} 则称 α 为 Fp*的生成元 或 模 p 的本原元
信息安全常用算法分享
1
Agenda
• Why ? 为什么需要安全算法 • What? 安全算法概述 • How? 常用安全算法的分析
2
Why? 为什么需要安全算法
丘比特之箭
密文 明文
9121522521
I LOVE U
9.12.15.22.5.21
地下党 军事科技
通信信息安全
3
What? 安全算法概述
26
传统对称密码分析—DES、3DESvsAES
名称
DES 3DES AES
密钥长度
56位 112位或168位 128、192、256位
运算速度
较快 慢 快
安全性
低 中 高
资源消耗
中 高 低
27
公开非对称密码分析
公开密钥密码的基本思想
• 将密钥 K一分为二,一个专门加密Ke,一个专门解密Kd: Ke ≠ Kd • 由Ke 不能计算出 Kd ,于是可将Ke公开,使密钥分配简 单。 • 根据前面两条,Kd 可作为用户的指纹,可方便地实现数 字签名。
4
What? 安全算法概述
攻击者
明 文
M
加 密 算 法
C
信 道
C
解 密 算 法
M
明 文
Ke Kd 加密钥 解密钥 密钥 K=<Ke , Kd>
5
What? 安全算法概述
密码体制分类
1)传统密码(对称密码)
Ke = Kd 例如:DES、3DES、AES、EES、SMS4
2)公开密码(非对称密码)
35
公开非对称密码分析--RSA
RSA应用特性 缺点:
大素数计算导致速度太慢,速度比对应同样安全级别的对称密码 算法要慢1000倍左右 一般来说只用于少量数据加密。
36
公开非对称密码分析--RSA
RSA应用举例(Ubuntu支持openssl)
Private key -- rsakey Public key -- pubkey Public.bin文件,先生成txt,取其modulus部分作为bin Public摘要 -- pubkey_dgst.bin
传统对称密码分析--DES
算法总体框架
64位明文
IP Li = Ri-1 Ri =Li-1⊕f (Ri-1,Ki) i =1,2,3,…16
L0
R0
K1
f
L1
R1
9
K2 f
L2
R2
L15
R15
K16
f
R16
L16
IP-1
10
64位密文
传统对称密码分析--DES
DES算法过程描述
• 64位密钥(K),经子密钥产生算法产生出16个子密钥:
K1 ,K2 ,...,K16 ,分别供第一次,第二次,...,第十六次加密迭代使用
• 64位明文(M)经初始置换IP,将数据打乱重排并分成左右两半
左边为L0 ,右边为R0
• 第一次加密迭代:
在子密钥 K1的控制下,由加密函数 f 对 R0 加密: L0⊕f(R0 ,K1 ) 以此作为第二次加密迭代的 R1,以 R0 作为第二次加密迭代的 L1
传统对称密码分析--3DES
3DES(或称为Triple DES),是DES加密算法的一种模式
[ 通过增加密钥长度,增强抗攻击性 ]
2密钥的3DES:密钥长度112位(已去除8位奇偶校验位) 3密钥的3DES:密钥长度168位(已去除8位奇偶校验位)
17
传统对称密码分析--3DES
2密钥的3DES
密钥产 生算法
若干轮处理
密文128位
21
传统对称密码分析--AES
AES(Advanced Encryption Standard)高级数据加密标准
整体特点 • 分组密码:
明文长度128, 密文长度、密钥长度可变 (128/192/256等,现在一般取 128 )
• 非对合运算:
加、解密使用不同的算法
34
公开非对称密码分析--RSA
参数选择
为确保RSA密码安全性,选择密码参数需注意: • (p-1)和(q-1)的最大公因子要小 否则易受迭代加密攻击 • e的选择 随机且含1多就安全,但加密速度慢 有学者建议取e=216+1=65537 • d的选择 d不能太小,要足够大 • 不要许多用户共用一个模 n 易受共模攻击
28
公开非对称密码分析
每个用户分配一对密钥,将所有用户的公开加密钥Ke 放入共享密钥库PKDB 私有解密密钥 KdA、KdB自己保留
用户 A 公开密钥 KeA
B ……
KeB ……
29
公开非对称密码分析
秘密性保证
Alice(A) C=E(M,KeB) Bob(B)
M=D(C,KdB)
真实性保证 C=D(M,KdA)
DES-(Data Encryption Standard)-数据加密标准 • 算法特点
明文64bit
密钥产生 算法 16个Key 16轮处理 Ki
密文64bit
密钥64位
分组密码: 明文、密文和密钥的分组长度都是64位
对合运算: 因而加密和解密共用同一算法,使工程实现的工作量减半 综合运用了置换、代替、代数等多种密码技术
• 整体结构:
基本轮函数加迭代,圈数可变,≥10
• 128 位的明文:
被分成16 个字节, 按顺序复制到一个4×4 的矩阵中, 称为状态(state),AES 的所有 变换都是基于状态矩阵的变换
22
AES算法框架
128位明文
密钥 初始圈密钥加
圈密钥产生 S盒变换 Nr个圈密钥
行移位与列混淆 圈密钥加 128位密文
101010
0101
10
6: 0110
15
传统对称密码分析--DES
解密分析:
• DES的运算是对合运算,解密和加密可共用同一个运算 • 不同点:子密钥使用的顺序不同
第一次 —— K16 , 第二次 —— K15 , …… 第十六 —— K1
安全弱点:
• 密钥太短,存在弱密钥 • 存在互补对称性
16
M: 64位 K: 168位 (K1,K2,K3)
C: 64位
19
传统对称密码分析--3DES
DES与3DES的特点比较
DES:速度较快,安全性较低
暴力破解:2^56
3DES:速度较慢,安全性更高,其中3密钥的安全性最高
暴力破解:2^168
20
传统对称密码分析--AES
密钥长度 明文128bit 密钥 (128、192、256bit) 初始变换 128 192 256 10 12 14 处理轮数
• 求α的模幂运算为: y =α^x mod p,1≤x≤p-1, 求对数 X 的运算为 x=logαy,1≤x≤p-1 由于上述运算是定义在模p有限域上的,所以称为离散对数运算
39
公开非对称密码分析--ELGamal
ELGamal加密算法
随机选择一个大素数p,要求p-1有大素数因子 再选择一个模p的本原元α。将 p和α 公开 密钥生成 随机选择一个整数 d(2≤d≤p-2 ),计算 y=α^d mod p 秘密的解密钥:d 公开的加密钥:y
40
公开非对称密码分析--ELGamal
ELGamal加密算法
加密过程 • 随机地选取一个整数k,2≤k≤p-2。 • 计算: U =y^k mod p C1=α^k mod p C2=UM mod p [注: 明文M(0≤M≤p-1) ] • 密文C=(C1 ,C2)
解密过程 • 计算 V=C1^d mod p • 计算 M=C2 V ^-1 mod p
12
6源自文库位密钥
DES子密钥产生框图
C0
置换选择1
D0
循环移位 置换选择2
K1
循环移位
C1 循环移位
D1 循环移位 置换选择2
K2
C15 循环移位
C15 循环移位 置换选择2
K16
13
DES加密函数 f 框图 Ri =Li-1⊕f (Ri-1,Ki)
32位输入 选择运算E
48位中间结果
48位子密钥
伪装信息,使未授权的人不能理解它的真实含义
明 文
加密 解密
密 文
密码体制构成
I LOVE U 明文空间 M: 全体明文的集合 密文空间 C: 全体密文的集合 9121522521 密钥空间 K: 全体密钥的集合,K=<Ke,Kd> 加密算法 E: 一组由MC的加密变换 C=E ( M, Ke ) 解密算法 D: 一组由CM的解密变换 M=D ( C, Kd )
24
传统对称密码分析--AES
圈密钥生成:
用户密钥
密钥拓展
密钥选择
圈密钥
25
传统对称密码分析--AES
AES的解密算法
• AES不是对合运算: 解密算法和加密算法不是同一个算法 • AES的巧妙之处: AES的解密算法和加密算法 结构相同
• 解密算法: 把加密算法的基本元变换变成对应的逆变换即可
Alice(A)
Bob(B)
M=E(C,KeA)
30
公开非对称密码分析
秘密性和真实性同时保证
Alice(A)
C=E(D(M,KdA),KeB)
Bob(B)
M=E(D(C,KdB),KeA)
31
公开非对称密码分析--RSA
RSA基于这个数论事实:
将两个大素数相乘得到乘积很容易,但是对乘积进行因式分解却 及其难,于是可将乘积公开作为公开加密钥
11
传统对称密码分析--DES
DES算法过程描述
• 第二次加密迭代至第十六次加密迭代,分别用子密钥 K2 ,..., K16 进行,其过程与第一次加密迭代相同 • 第十六次加密迭代结束后,产生一个64位的数据组。以其左边 32位作为 R16 ,以其右边32位作为 L16 • L16与R16合并,再经过逆初始置换IP –1,将数据重新排列,便 得到64位密文(C)
注:最后一圈没有列混淆
轮 函 数
Nr圈
迭代控制
23
传统对称密码分析--AES
AES组成部分
• S盒变换:
AES唯一的非线性变换,是安全关键 16个相同的S盒,8位输入8位输出 (DES有8个不相同的S盒,6位输入4位输出)
• 行移位变换:
线性变换,作用是置换,把数据打乱重排
• 列混淆变换:
属于代替变换
S1
S2
S7
S8
置换运算P
32位输出
14
传统对称密码分析--DES
其中选择替换S盒是关键:
• S盒是DES唯一的非线性变换,共有8个不相同的S盒 • 每个S盒有6个输入,4个输出,是一种非线性压缩变换 • 设输入为 b1b2b3b4b5b6 ,则以b1b6组成的二进制数为行号, b2b3b4b5组成的二进制数为列号。行列交点处的数(二进制)为输出
RSA算法涉及三个参数:n,e,d
32
公开非对称密码分析--RSA
RSA加解密算法
RSA公开的加密钥(n, e) RSA秘密的解密钥(n, d)
随机地选择两个大素数 p 和 q,而且保密 计算n=pq,将 n 公开 计算φ(n)=(p-1)(q-1),对 φ(n) 保密 随机地选取一个正整数e,1<e<φ(n)且(e,φ(n))=1,将 e 公开 根据 ed=1 mod φ(n),求出d,并对d 保密 加密运算:C=M^e mod n 解密运算:M=C^d mod n
Ke ≠ Kd ,且由Ke 不能计算出 Kd
例如:RSA、ECC、ELGamal
3)新型密码
演化密码、量子密码、DNA密码等
6
How? 常用安全算法的分析
传统对称密码 DES、3DES、AES 公开非对称密码 RSA、ELGamal 散列密码 SHA、MD5
7
传统对称密码分析--DES
41
公开非对称密码分析--ELGamal
ELGamal安全性
• 由于ELGamal密码的安全性,建立在GF(p)离散对数的困难 性之上,而目前尚无求解GF(p)离散对数的有效算法,所以 在p足够大时ELGamal密码是安全的 • 为了安全p应为150位以上的十进制数,而且p-1应有大素因子
加密
M DES DES-1 DES C
M: 64位 K: 112位 (K1,K2)
C: 64位
k1
k2
解密
k1
C
M
DES-1
k1
DES
k2
DES-1
k1
18
传统对称密码分析--3DES
3密钥的3DES
加密 M DES k1 DES-1 k2 解密 C DES-1 k3 DES k2 DES-1 k1 M DES k3 C
33
公开非对称密码分析--RSA
参数选择
为确保RSA密码安全性,选择密码参数需注意: • p和q要足够大 一般应用:p和q应 512 b 重要应用:p和q应 1024 b • p和q应为强素数 文献指出,只要(p-1)、(p+1)、(q-1)、(q+1)四个数之一 有小的素因子,n就容易分解 • p和q的差要大
37
公开非对称密码分析--RSA
rsakey 私钥签名, pubkey公钥认证
38
公开非对称密码分析--ELGamal
ELGamal:建立在离散对数的困难性 背景——离散对数问题:
• 设 p为素数,则模p的剩余构成有限域: Fp={0,1,2,… ,p-1} Fp 的非零元构成循环群Fp* Fp* ={1,2,… ,p-1} ={α,α^2,α^3,,α^p-1} 则称 α 为 Fp*的生成元 或 模 p 的本原元
信息安全常用算法分享
1
Agenda
• Why ? 为什么需要安全算法 • What? 安全算法概述 • How? 常用安全算法的分析
2
Why? 为什么需要安全算法
丘比特之箭
密文 明文
9121522521
I LOVE U
9.12.15.22.5.21
地下党 军事科技
通信信息安全
3
What? 安全算法概述
26
传统对称密码分析—DES、3DESvsAES
名称
DES 3DES AES
密钥长度
56位 112位或168位 128、192、256位
运算速度
较快 慢 快
安全性
低 中 高
资源消耗
中 高 低
27
公开非对称密码分析
公开密钥密码的基本思想
• 将密钥 K一分为二,一个专门加密Ke,一个专门解密Kd: Ke ≠ Kd • 由Ke 不能计算出 Kd ,于是可将Ke公开,使密钥分配简 单。 • 根据前面两条,Kd 可作为用户的指纹,可方便地实现数 字签名。
4
What? 安全算法概述
攻击者
明 文
M
加 密 算 法
C
信 道
C
解 密 算 法
M
明 文
Ke Kd 加密钥 解密钥 密钥 K=<Ke , Kd>
5
What? 安全算法概述
密码体制分类
1)传统密码(对称密码)
Ke = Kd 例如:DES、3DES、AES、EES、SMS4
2)公开密码(非对称密码)
35
公开非对称密码分析--RSA
RSA应用特性 缺点:
大素数计算导致速度太慢,速度比对应同样安全级别的对称密码 算法要慢1000倍左右 一般来说只用于少量数据加密。
36
公开非对称密码分析--RSA
RSA应用举例(Ubuntu支持openssl)
Private key -- rsakey Public key -- pubkey Public.bin文件,先生成txt,取其modulus部分作为bin Public摘要 -- pubkey_dgst.bin