Upload
daktari
View
75
Download
5
Embed Size (px)
DESCRIPTION
第五章 消息认证与数字签名. 回顾. 计算机系统安全的五个属性: 可用性( Availability ) 可靠性( Reliability ) 完整性( Integrity ) 保密性( Confidentiality ) 不可抵赖性( Non-Repudiation ). 消息认证. 完整性需要验证: 信息发送方是否真实?接收方是否真实? 信息在传输过程中是否被改变? 信息的到达时间是否在指定的期限内?. 完整性技术: 奇偶校验 检错码 纠错码 消息验证码( MAC ). 散列函数. 散列函数: 特性: 一致性 随机性 唯一性 单向性. - PowerPoint PPT Presentation
Citation preview
第五章 消息认证与数字签名
回顾
计算机系统安全的五个属性:可用性( Availability )可靠性( Reliability )完整性( Integrity )保密性( Confidentiality )不可抵赖性( Non-Repudiation )
消息认证
完整性需要验证:1. 信息发送方是否真实?接收方是否真实?2. 信息在传输过程中是否被改变?3. 信息的到达时间是否在指定的期限内?
发送方 接收方
信息
完整性技术:奇偶校验检错码纠错码消息验证码( MAC )
散列函数
M
H
|| HM
比较H(M)
散列函数:
特性:一致性随机性唯一性单向性
M
H E
|| H
D
M
比较
EKRa[H(M)]
KRa
)(xHh
MAC
HMAC
散列函数的用法对称密钥加密 [ 报文+消息摘要 ]提供保密、鉴别
对称密钥加密 [ 消息摘要 ]提供鉴别
Ek[M||H(M)] M||Ek[H(M)]
发方私钥加密 [ 消息摘要 ]提供鉴别、数字签名
对称密钥加密 [ 发方私钥加密消息摘要的结果 ]提供鉴别、数字签名、保密
M||Eka[H(M)] Ek[M||Eka[H(M)]]
共享密值提供鉴别
共享密值、对称加密提供鉴别、数字签名、保密
M||H(M||S) Ek[M||H(M)||S]
MD5
来历MD5 的全称是 message-digest algorithm 5( 信息 - 摘要算法 ) ,在 90 年代初由 MIT laboratory for computer science 和 RSA data security inc 的 Ronald l. Rivest 开发出来,经 MD2 、 MD3 和 MD4 发展而来。http://www.ietf.org/rfc/rfc1321.txt,是一份最权威的文档,由 Ronald l. Rivest 在 1992 年8 月向 IETF 提交。
用途MD5 的作用是对一段信息 (message) 生成信息摘要(message-digest) ,该摘要对该信息具有唯一性 , 可以作为数字签名。用于验证文件的有效性 ( 是否有丢失或损坏的数据 ), 对用户密码的加密,在哈希函数中计算散列值。
特点输入一个任意长度的字节串,生成一个 128 位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且, MD5 算法的使用不需要支付任何版权费用。
说明唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。不可逆是指从输出反推输入所需的运算量和计算时间太大,使用穷搜字典的方法又需要太多的存储空间。
MD5 -算法描述
算法输入是一个字节串,每个字节是 8 个 bit 。
Step1 :补位扩展数据至 LEN=K*64+56 个字节, K 为整数。补位方法:补一个 1 ,然后补 0 。相当于补一个 0x80 的字节,再补值为 0 的字节。这一步里总共补充的字节数为 0 ~ 63 个。
共六个步骤
Step2 :附加数据长度用一个 64 位的整数表示数据的原始长度 ( 以bit 为单位 ) ,将这个数字的 8 个字节按低位在前,高位在后的顺序附加在补位后的数据后面。这时,数据被填补后的总长度为: LEN = K*64+56+8=(K+1)*64 Bytes 。
注意:这个 64 位整数是输入数据的原始长度而不是填充字节后的长度。
Step3 :初始化MD5参数有四个 32 位整数变量 (A,B,C,D) 用来计算信息摘要,每一个变量被初始化成以下以十六进制数表示的数值,低位的字节在前面。 word A: 01 23 45 67 word B: 89 ab cd ef word C: fe dc ba 98 word D: 76 54 32 10注意:低位的字节在前面指的是 Little Endian平台上内存中字节的排列方式。
Step4:处理位操作函数定义四个 MD5基本的按位操作函数: X , Y , Z 为 32 位整数。 F(X,Y,Z) = (X and Y) or (not(X) and Z) G(X,Y,Z) = (X and Z) or (Y and not(Z)) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X or not(Z))
再定义四个分别用于四轮变换的函数。设Mj 表示消息的第 j 个子分组(从 0 到 15 ),<<<s 表示循环左移 s 位,则四种操作为: 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)
Step5:对输入数据作变换处理数据, N 是总的字节数,以 64 个字节为一组,每组作一次循环,每次循环进行四轮操作。要变换的 64 个字节用 16 个 32 位的整数数组M[0 ...15] 表示。而数组 T[1 ... 64] 表示一组常数, T[i] 为 4294967296*abs(sin(i)) 的 32位整数部分, i 的单位是弧度, i 的取值从 1到 64 。
具体过程如下: /* 设置主循环变量 */
For i = 0 to N/16-1 do
/* 每循环一次,把数据原文存放在 16 个元素的数组 X 中 . */For j = 0 to 15 doSet X[j] to M[i*16+j].end / 结束对 J 的循环
/* Save A as AA, B as BB, C as CC, and D as DD.*/AA = ABB = BCC = CDD = D
/* 第 1轮 *//* 以 [abcd k s i] 表示如下操作a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 7 3] [BCDA 3 22 4][ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 7 7] [BCDA 7 22 8][ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12][ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* 第 2轮 * *//* 以 [abcd k s i] 表示如下操作a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20][ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24][ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28][ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/* 第 3轮 *//* 以 [abcd k s i] 表示如下操作a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36][ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40][ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44][ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/* 第 4 轮 *//* 以 [abcd k s i] 表示如下操作a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52][ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56][ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60][ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
/* 然后进行如下操作 */A = A + AAB = B + BBC = C + CCD = D + DD
Next I /* 结束对 I 的循环 */
Step6:输出结果A , B , C , D连续存放,共 16 个字节, 128 位。按十六进制依次输出这个 16 个字节。
数字签名
问题的提出假定 John 向 Mary 发送一个带鉴别的报文,可能会出现如下的争执:1 、 Mary 可能伪造不同的报文,并声称它来自John 。 Mary只要简单地生成一个报文,并附加使用由 John 和 Mary 所共享的密钥生成的鉴别码即可。2 、 John 可以否认发送过该报文。因为 Mary伪造一个报文是可能的,无法证明 John 发送过该报文这一事实。
分类 直接数字签名功能:鉴别、数字签名。弱点:(1) 方案的有效性依赖于发方私钥的安全性。(2) 某个私钥真的可能在时间 T 在 X处被盗。
M
H E
|| H
D
M
比较
EKRa[H(M)]
KRa
M ME D
KRa KUaEKRa(M)
( a )利用发送方的私钥加密
( b )利用发送方的私钥报文散列码加密
需仲裁的数字签名
(c)公开密钥加密,仲裁不能看到报文内容(1)X→A : IDx//EKRx[IDx//EKUy[EKRx[M]]]
(2)A→Y : EKRa[IDx//EKUy[EKRx[M]]//T]
注: X=发方; Y=收方; A=仲裁;M=报文
(a)常规加密,仲裁能看到报文内容(1)X→A : M//EKxa[IDx//H(M)]
(2)A→Y : EKay[IDx//M//EKxa[IDx//H(M)]//T]
(b)常规加密,仲裁不能看到报文内容(1)X→A : IDx//EKxy[M]//EKxa[IDx//H(EKxy[M])]
(2)A→Y : EKay[IDx//EKxy[M]//EKxa[IDx//H(EKxy[M])]//T]
数字签名算法签名算法: RSA 、 DSA 、 MD5 、 SHA等验证算法
数字证书采用公钥密码体制,如 RSA 。格式一般采用 X.509国际标准。由权威公正的第三方机构即 CA 中心签发。
数字证书
数字水印
信息隐藏原理也称为信息伪装技术,它是利用人类感觉器官对数字信号的感觉冗余,将一个消息(秘密信息)隐藏在另一个消息(非秘密信息)之中,实现隐蔽通信或隐蔽标志。
编码器 掩蔽宿主 检测器秘密信息宿主信息
秘密信息宿主信息
密钥 密钥
信息隐藏系统模型
特点 自恢复性:秘密数据在一定程度破坏后,接收方仍然能恢复隐藏信息。
鲁棒性:不因宿主文件的某种改动而导致隐藏信息丢失的能力。
安全性:隐藏算法具有较强的抗攻击的能力,使隐藏信息不会被破坏。
不可检测性:隐藏宿主与原始宿主具有一致的特性,使攻击者无法判断是否有隐藏信息。
透明性:经过一系列的隐藏处理后,目标数据没有明显的降质现象,而隐藏的数据却无法人为地看见或听见。
分类
按水印载体
按检测方法 按内容
按用途
图像水印视频水印音频水印文本水印印刷水印
明水印盲水印
内容水印标志水印
版权保护水印篡改提示水印票据防伪水印隐藏标识水印印刷数字水印
原图 数字水印 嵌入后的图像
川大一角
原图 数字水印 嵌入后的图像