消息认证与数字签名
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Step5:对输入数据作变换
处理数据,N是总的字节数,以64个字节为一 组,每组作一次循环,每次循环进行四轮操 作。 要变换的64个字节用16个32位的整数数组 M[0 ...15]表示。而数组T[1 ... 64]表示一组常 数,T[i]为4294967296*abs(sin(i))的32位整数 部分,i的单位是弧度,i的取值从1到64。
提供保密、鉴别
Ek[M||H(M)]
发方私钥加密[消息摘要]
提供鉴别、数字签名
M||Ek[H(M)]
对称密钥加密[发方私钥加密消息摘 要的结果]
提供鉴别、数字签名、保密
M||Eka[H(M)]
共享密值
提供鉴别
Ek[M||Eka[H(M)]]
共享密值、对称加密
提供鉴别、数字签名、保密
M||H(M||S)
接收方
完整性技术:
奇偶校验 检错码 纠错码 消息验证码(MAC)
散列函数
散列函数:
M || M H 比较
H
H(M)
MAC
M KRa H E
||
M
H 比较
h H ( x) 特性: 一致性 随机性 唯一性 单向性
EKRa[H(M)]
HMAC
D
散列函数的用法
对称密钥加密[报文+消息 对称密钥加密[消息摘要] 摘要] 提供鉴别
再定义四个分别用于四轮变换的函数。 设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)
信息隐藏系统模型
特点
自恢复性:秘密数据在一定程度破坏后,接收方仍然能 恢复隐藏信息。 鲁棒性:不因宿主文件的某种改动而导致隐藏信息丢失 的能力。 安全性:隐藏算法具有较强的抗攻击的能力,使隐藏信 息不会被破坏。 不可检测性:隐藏宿主与原始宿主具有一致的特性,使 攻击者无法判断是否有隐藏信息。 透明性:经过一系列的隐藏处理后,目标数据没有明显 的降质现象,而隐藏的数据却无法人为地看见或听见。
/* 第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]
M E D 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]
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提交。
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))
扩展数据至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位整数是输入数据的原始长度 而不是填充字节后的长度。
/* 第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]
/* 然后进行如下操作 */
A = A + AA B = B + BB C = C + CC D = 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发送过该 报文这一事实。
分类
直接数字签名
功能: KUa KRa EKRa(M) 鉴别、数字签名。 弱点: (a)利用发送方的私钥加密 (1)方案的有效性依赖 || H 于发方私钥的安全性。M M (2)某个私钥真的可能 比较 KRa 在时间T在X处被盗。 EKRa[H(M)] H E D
(b)利用发送方的私钥报文散列码加密
采用公钥密码体制,如RSA。 格式一般采用X.509国际标准。 由权威公正的第三方机构即CA中心签发。
数字证书
数字水印
信息隐藏原理
也称为信息伪装技术,它是利用人类感觉器官对数字 信号的感觉冗余,将一个消息(秘密信息)隐藏在另 一个消息(非秘密信息)之中,实现隐蔽通信或隐蔽 标志。
密钥 秘密信息 宿主信息 编码器 掩蔽宿主 密钥 检测器 秘密信息 宿主信息
/* 第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]
具体过程如下:
/* 设置主循环变量 */ For i = 0 to N/16-1 do /*每循环一次,把数据原文存放在16个元素的数组X中. */ For j = 0 to 15 do Set X[j] to M[i*16+j]. end /结束对J的循环 /* Save A as AA, B as BB, C as CC, and D as DD. */ AA = A BB = B CC = C DD = D
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 平台上内存中字节的排列方式。
(c)公开密钥加密,仲裁不能看到报文内容 (1)X→A:IDx//EKRx[IDx//EKUy[EKRx[M]]] (2)A→Y:EKRa[IDx//EKUy[EKRx[M]]//T]
注:X=发方;Y=收方;A=仲裁;M=报文
数字签名算法
签名算法:RSA、DSA、MD5wk.baidu.comSHA等 验证算法
数字证书
/* 第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]
说明
唯一性和不可逆性都不是绝对的,从理论上 分析是一种多对一的关系,但两个不同的信 息产生相同摘要的概率很小。 不可逆是指从输出反推输入所需的运算量和 计算时间太大,使用穷搜字典的方法又需要 太多的存储空间。
MD5-算法描述
算法输入是一个字节串,每个字节是8个bit。 共六个步骤
Step1:补位
用途
MD5的作用是对一段信息(message)生成信息摘要 (message-digest),该摘要对该信息具有唯一性,可 以作为数字签名。用于验证文件的有效性(是否有丢 失或损坏的数据),对用户密码的加密,在哈希函数中 计算散列值。
特点
输入一个任意长度的字节串,生成一个128位的整数。 由于算法的某些不可逆特征,在加密应用上有较好 的安全性。并且,MD5算法的使用不需要支付任何 版权费用。
第五章 消息认证与数字签名
回顾
计算机系统安全的五个属性: 可用性(Availability) 可靠性(Reliability) 完整性(Integrity) 保密性(Confidentiality) 不可抵赖性(Non-Repudiation)
消息认证
信息 发送方
完整性需要验证:
1. 信息发送方是否真实?接收方是否真实? 2. 信息在传输过程中是否被改变? 3. 信息的到达时间是否在指定的期限内?