1 / 28

第五章 消息认证与数字签名

第五章 消息认证与数字签名. 回顾. 计算机系统安全的五个属性: 可用性( Availability ) 可靠性( Reliability ) 完整性( Integrity ) 保密性( Confidentiality ) 不可抵赖性( Non-Repudiation ). 消息认证. 完整性需要验证: 信息发送方是否真实?接收方是否真实? 信息在传输过程中是否被改变? 信息的到达时间是否在指定的期限内?. 完整性技术: 奇偶校验 检错码 纠错码 消息验证码( MAC ). 散列函数. 散列函数: 特性: 一致性 随机性 唯一性 单向性.

daktari
Download Presentation

第五章 消息认证与数字签名

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 消息认证与数字签名

  2. 回顾 计算机系统安全的五个属性: • 可用性(Availability) • 可靠性(Reliability) • 完整性(Integrity) • 保密性(Confidentiality) • 不可抵赖性(Non-Repudiation)

  3. 消息认证 完整性需要验证: • 信息发送方是否真实?接收方是否真实? • 信息在传输过程中是否被改变? • 信息的到达时间是否在指定的期限内?

  4. 完整性技术: • 奇偶校验 • 检错码 • 纠错码 • 消息验证码(MAC)

  5. 散列函数 散列函数: 特性: • 一致性 • 随机性 • 唯一性 • 单向性 MAC HMAC

  6. 散列函数的用法

  7. 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提交。

  8. 用途MD5的作用是对一段信息(message)生成信息摘要(message-digest),该摘要对该信息具有唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户密码的加密,在哈希函数中计算散列值。用途MD5的作用是对一段信息(message)生成信息摘要(message-digest),该摘要对该信息具有唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户密码的加密,在哈希函数中计算散列值。 特点输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且,MD5算法的使用不需要支付任何版权费用。

  9. 说明唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。说明唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。 不可逆是指从输出反推输入所需的运算量和计算时间太大,使用穷搜字典的方法又需要太多的存储空间。

  10. MD5-算法描述 算法输入是一个字节串,每个字节是8个bit。 Step1:补位扩展数据至LEN=K*64+56个字节,K为整数。补位方法: 补一个1,然后补0。相当于补一个0x80的字节,再补值为0的字节。这一步里总共补充的字节数为0~63个。 共六个步骤

  11. Step2:附加数据长度用一个64位的整数表示数据的原始长度(以bit为单位),将这个数字的8个字节按低位在前,高位在后的顺序附加在补位后的数据后面。这时,数据被填补后的总长度为:LEN = K*64+56+8=(K+1)*64 Bytes。 注意:这个64位整数是输入数据的原始长度而不是填充字节后的长度。

  12. 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平台上内存中字节的排列方式。

  13. 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))

  14. 再定义四个分别用于四轮变换的函数。设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)

  15. Step5:对输入数据作变换处理数据,N是总的字节数,以64个字节为一组,每组作一次循环,每次循环进行四轮操作。要变换的64个字节用16个32位的整数数组M[0 ...15]表示。而数组T[1 ... 64]表示一组常数,T[i]为4294967296*abs(sin(i))的32位整数部分,i的单位是弧度,i的取值从1到64。

  16. 具体过程如下: /* 设置主循环变量 */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

  17. /* 第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]

  18. /* 第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]

  19. /* 然后进行如下操作 */A = A + AAB = B + BBC = C + CCD = D + DD Next I /* 结束对I的循环*/

  20. Step6:输出结果A,B,C,D连续存放,共16个字节,128位。按十六进制依次输出这个16个字节。

  21. 数字签名 问题的提出 假定John向Mary发送一个带鉴别的报文,可能会出现如下的争执: 1、Mary可能伪造不同的报文,并声称它来自John。Mary只要简单地生成一个报文,并附加使用由John和Mary所共享的密钥生成的鉴别码即可。 2、John可以否认发送过该报文。因为Mary伪造一个报文是可能的,无法证明John发送过该报文这一事实。

  22. 分类 • 直接数字签名 功能: 鉴别、数字签名。 弱点: (1)方案的有效性依赖于发方私钥的安全性。 (2)某个私钥真的可能在时间T在X处被盗。 (a)利用发送方的私钥加密 (b)利用发送方的私钥报文散列码加密

  23. 需仲裁的数字签名 注:X=发方;Y=收方;A=仲裁;M=报文

  24. 数字签名算法 签名算法:RSA、DSA、MD5、SHA等 验证算法 数字证书 采用公钥密码体制,如RSA。 格式一般采用X.509国际标准。 由权威公正的第三方机构即CA中心签发。 数字证书

  25. 数字水印 信息隐藏原理 也称为信息伪装技术,它是利用人类感觉器官对数字信号的感觉冗余,将一个消息(秘密信息)隐藏在另一个消息(非秘密信息)之中,实现隐蔽通信或隐蔽标志。 信息隐藏系统模型

  26. 特点 • 自恢复性:秘密数据在一定程度破坏后,接收方仍然能恢复隐藏信息。 • 鲁棒性:不因宿主文件的某种改动而导致隐藏信息丢失的能力。 • 安全性:隐藏算法具有较强的抗攻击的能力,使隐藏信息不会被破坏。 • 不可检测性:隐藏宿主与原始宿主具有一致的特性,使攻击者无法判断是否有隐藏信息。 • 透明性:经过一系列的隐藏处理后,目标数据没有明显的降质现象,而隐藏的数据却无法人为地看见或听见。

  27. 分类

  28. 数字水印 原图 嵌入后的图像 川大一角 数字水印 原图 嵌入后的图像

More Related