信息安全机制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1.4 RC5算法
RC5是具有参数变量的分组密码算法, 其中可变的参量为:
• 分组的大小
• 密钥的大小
• 加密的轮次。
该算法主要使用了三种运算:异或、加、循环。
2.1.4 RC5算法
创建密钥组
采用 64bit 分组为例来描述算法。加密需要使用 2r+2 (其中 r 表示加密的轮次)个与密钥相关的 32bit 字, 分别表示为 S 0 、 S 1 、 S 2 …… S 2r+1 。创建这个与密钥相 关的数组的运算如下:首先将密钥的字节拷贝到32bit 字的数组 L ,如果需要,最后一个字可以用零填充。 然后利用线性同余发生器初始化数组S
4
3
2
12
9
5
15
10
11
14
1
1
6
0
8
13
每一轮中的子密钥的生成
密钥通常表示为64-bit,但每个第8位用作奇偶校验, 实际的密钥长度为56-bit。 首先,56-bit密钥分成两部分(以C、D分别表示这两 部分) 每轮运算C、D循环左移1位或2位(从第1轮到第16轮, 相应左移位数分别为:1、1、2、2、2、2、2、2、1、 2、2、2、2、2、2、1)。 再将生成的56-bit组经过一个压缩转换(compression permutation),舍掉其中的某8个位并按一定方式改变 位的位置,生成一个48-bit的子密钥Ki。
2.2.1 数据完整性验证
消息的发送者用要发送的消息和一定的算法生成一个附件, 并将附件与消息一起发送出去;消息的接收者收到消息和附件 后,用同样的算法与接收到的消息生成一个新的附件;把新的 附件与接收到的附件相比较,如果相同,则说明收到的消息是 正确的,否则说明消息在传送中出现了错误。
消 息
H
消 息
DES算法的缺点
不能抵御穷尽搜索。 其安全性主要依赖于s-盒,而s-盒的内容 是固定的且设计原理保密,固可能存在陷门。
三重DES
如上所言, DES 一个致命的缺陷就是密钥长度短, 并且对于当前的计算能力,56位的密钥长度已经抗不住 穷举攻击,而DES又不支持变长密钥。但算法可以一次 使用多个密钥,从而等同于更长的密钥。三重DES算法 表示为: C=EK3(DK2(EK1(M))) 通常取K3=K1,则上式变为: C=EK1(DK2(EK1(M)))
2.1.3 DES算法
1、算法描述
①把明文分成若干个64bit的分组,算法以一个分组作
为输入。 ②通过一个初始置换(IP)将明文分组分成左半部分 (L0)和右半部分(R0),各为32-bit。 ③然后进行16轮完全相同的运算,这些运算我们称为 函数f,在运算过程中数据与密钥相结合。 ④左、右两部分合在一起经过一个末转换(初始转换 的逆置换IP-1),输出一个64-bit的密文分组。
附 件
消 息
+
附 件
compare
H
2.2.2 单向散列函数
单向散列函数(one-way hash function),也 叫压缩函数、收缩函数,它是现代密码学的中心。散 列函数长期以来一直在计算机科学中使用,其主要功 能 为 : 把 可 变 长 度 的 输 入 串 ( 叫 做 预 映 射 , p re image)转换成固定长度的输出串(叫做散列值)的 一种函数。 h=H(M) 其中h的长度通常是固定的
2.1.6 RSA算法
RSA算法的思路如下: • 为了产生两个密钥,先取两个大素数,p和q。为了 获得最大程度的安全性,两数的长度一样。计算乘 积 n=p*q, • 然后随机选取加密密钥e,使e和(p-1)*(q-1)互素。 • 最后用欧几里得(Euclidean)扩展算法计算解密密 钥d,d满足ed≡1 mod (p-1)(q-1),即d≡e-1 mod (p1)(q-1)。则e和n为公开密钥,d是私人密钥。 • 两个大数p和q应该立即丢弃,不让任何人知道。一 般选择公开密钥e比私人密钥 d小。最常选用的e值 有三个3,17,65537。
明文
32bit
IP
32bit
L0
R0
+
L1=R0
f
K1
R1=L0⊕f(R0,k1)
+
L2=R1
f
K2
R2=L1⊕f(R1,k2)
…
L16=R15 IP-1 密文 R16=L15⊕f(R15,k16)
每一轮的运算过程:
①通过一个扩展置换将数据的右半部分扩展成48位 ②通过一个异或操作与48位密钥结合 ③通过8个S盒(substitution box)将这48位替代成 新的32位 ④再依照P-盒置换一次。 (以上四步构成复杂函数f)。 ⑤然后通过另一个异或运算,将复杂函数f的输出与 左半部分结合成为新的右半部分
破译密文最简单的方法,就是尝试所有可能的钥匙组合。
2、密码分析
在不知道钥匙的情况下,利用数学方法破译密文或找到秘密钥匙 的方法,称为密码分析。密码分析有两个基本目标:利用密文发 现明文,利用密文发现钥匙。
3、其它密码破译方法
2.2 数据完整性机制
密码学除了为数据提供保密方法以外,还可以用于 其他的作用: 鉴别(authentication):消息的接收者可以确定 消息的来源,攻击者不可能伪装成他人。 抗抵赖(nonrepudiation):发送者事后不能否认 自己已发送的消息。 完整性(integrity):消息的接收者能够验证消息 在传送过程中是否被修改;攻击者不可能用假消息 来代替合法的消息。
2.2.3 消息摘要算法MD5
每一轮运算
• • • • •
将A,B,C,D分别付给a,b,c,d 每次对a、b、c、d中的三个做一次非线性函数运算 加上第四个变量、消息的一个子分组和一个常数 左移一个不定的数,并加上a、b、c、d其中之一 用运算结果取代a、b、c、d其中之一
四轮所采用的非线性函数分别为 • F(x,y,z)=(x∧y) ∨((﹗x) ∧z) • G(x,y,z)=(x∧z) ∨(y∧(﹗z)) • H(x,y,z)=x ⊕ y ⊕ z • I(x,y,z)=y⊕ (x∨ (﹗z))
第2章
信息安全机制
本章学习目标
主要内容:
•
• •
•
•
对称加密机制及典型算法 非对称加密机制及算法 数据完整性验证的原理及典型算法 数字签名的原理 PGP的使用(实践内容)
2.1 加密机制
2.1.1 密码学基础知识
明文:加密变换前的数据项
密文:变换后产生的相应数据项
加密变换(Encryption):加密变换将明文和一个称 为加密密钥的独立数据值作为输入,输出密文。 解密变换(Decryption)。;解密变换将密文和一个 称为解密密钥的数据值作为输入 ,输出明文。
S0=P Si=(Si-1+Q) mod 232 (其中 i=1 to 2(r+1)-1, P=0xb7e15163,Q=0x9e3779b9)
创建密钥组
最后将L与S混合: 初始化: i=j=0 A=B=0 然后做3n次循环:(其中c为密钥所占32bit字数目 ,亦即数组L的长度,n为2(r+1)和c中的最大值)。 A=Si=(Si+A+B)<<<3 B=Lj=(Lj+A+B)<<<(A+B) i=(i+1) mod 2(r+1) j=(j+1) mod c
2.2.2 单向散列函数
特性:
•
• •
给定M,可算出h.
给定h,根据H(M)=h反推出M是非常困难的。 给定M,要找到另外一个消息M*,使其满足 H(M*)=H(M)=h 是非常困难的。
2.2.2wk.baidu.com单向散列函数
利用单向散列函数生成消息的指纹可以分成两种情况。
一种是不带密钥的单向散列函数
•任何人都能验证消息的散列值
。
每一轮运算流程图
LI-1 RI-1
32bit
扩展置换
⊕
S-盒替换
48bit密钥
P-盒替换
⊕
LI RI
S-盒置换
每6-bit一组作为一个S盒的输入,输出为一个4-bit组 6-bit中的首、末两位数决定输出项所在的行;中间的 四位决定输出项所在的列。
12 1 10 9 15 14 10 15 9 4 15 2 5 7 2 2 12 8 6 9 12 8 5 3 0 6 7 13 3 1 0 13 4 4 14 10 15 7 0 1 11 13 5 3 11 11 8 6
2.2.3 消息摘要算法MD5
获取分组
附加位填充
•
填充消息,使其长度为比512的整数倍小64位。 方法为:在消息后面填充1,然后填充所需数量 的0。
将后64位用于填充原消息的长度
附加长度
•
2.2.3 消息摘要算法MD5
MD5算法描述:
•MD5以512位分组来处理输入的信息 •每一分组又被划分为16个32位子分组 •经过了一系列的处理后,算法的输出由四个32位分组组成, •将这四个32位分组级联后将生成一个128位散列值。
2.1.6 RSA算法
加密消息时,首先将消息分成比n小的数据分组(采 用二进制数,选到小于 n的 2 的最大次幂),设 m i表 示消息分组,ci表示加密后的密文,它与mi具有相同 的长度。
加密过程:ci=mie(mod n) 解密过程:mi=cid(mod n)
2.1.7 密钥与密码破译方法
1、密钥的穷尽搜索
加密和解密
KE KD
M
加
密
C
C
解
密
M
加密 M:明文
C:密文
KE:加密密钥
解密 KD:解密密钥
2.1.2 对称加密算法
加密:Ek(M)=C 解密:Dk(C)=M Ek=Dk 或者两者之间很容易互相推算出来
对称密码算法有很多种 :DES、triple DES、IDEA、RC2、 RC4、RC5、RC6、GOST、FEAL、LOKI
加密过程
首先将明文分组( 64bit )分成两个 32 位字 A 和B(假设字节进入字的顺序为第一个字节进行 寄存器的低位置),然后进行如下的运算: A=A+S0 B=B+S1 for(i=1;i<=r;i++) { A=((A⊕B)<<<B)+S2i; B=((B⊕A)<<<A)+S2i+1;
}
2.2.3 消息摘要算法MD5
512bit消息分组 16个32位子分组 主 循 环 体
A B C D
第 一 轮
第 二 轮
第 三 轮
第 四 轮
+
+
+
+
A B C D
2.2.3 消息摘要算法MD5
初始化
A=0x01234567
B=0x89abcdef
C=0xfedcba98
D=0x76543210
2.2.3 消息摘要算法MD5
•
•
•
•
四轮运算的公式化表达 FF(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(F(b,c,d)+Mj+ti)<<<s) GG(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(G(b,c,d)+Mj+ti)<<<s) HH(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(H(b,c,d)+Mj+ti)<<<s) II(a,b,c,d,Mj,s,ti) 表示 a=b+((a+(I(b,c,d)+Mj+ti)<<<s) 四轮结束后用A,B,C,D分别加上a,b,c,d 用下一分组进行运算
输出的A、B为密文
解密过程
解密时,把密文分成A和B,然后进行如下运算: for(i=r;r>=1;r--) { B=((B-S2i+1)>>>A) ⊕A; A=((A-S2i)>>>B) ⊕B; } B=B-S1 A=A-S0 此时输出的A、B为解密后得到的明文。
2.1.5 非对称加密体制
加密密钥和解密密钥分离,通信的每一方都拥有这 样的一对密钥。 其中加密密钥可以像电话号码一样对外公开,由发 送方用来加密要发送的原始数据;解密密钥则由接收 方秘密保存,作为解密时的私用密钥。 算法的核心是一种特殊的数学函数――单向陷门函 数(trap-door one way function)。即该函数从一个 方向求值是容易的,但其逆变换却是极其困难的,因 此利用公开的加密密钥只能作正向变换,而逆变换只 有依赖于私用的解密密钥这一“陷门”才能实现。
另一种是带密钥的单向散列函数
•只有拥有密钥的人才能验证散列值
单向散列函数的算法实现有很多种,如Snefru算法、NHash算法、MD2算法、MD4算法、MD5算法,SHA-1算 法等等。
2.2.3 消息摘要算法MD5
MD表示信息摘要(Message Digest),该 算法对输入的任意长度的消息产生128位散 列值(或消息摘要)
2.1.5 非对称加密体制
优点就是不需要对密钥通信进行保密,所需 传输的只有公开密钥。 • 可用于数字签名,即信息的接收者能够验 证发送者的身份,而发送者在发送已签名 的信息后不能否认。 缺陷在于其加密和解密的运算时间比较长, 这在一定程度上限制了它的应用范围。
2.1.5 非对称加密体制
现在真正实用的公开密钥算法还不是很 多,目前公认比较安全的要算RSA算法及 其变种Rabin算法。算法表示为: Ek1(M)=C Dk2(C)=M Dk2(Ek1(M))=M (其中k1和k2为一对密 钥中的私有密钥和公开密钥)