第八讲-报文鉴别讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
散列函数(HASH):一个公共函数,将任意长 度的报文映射到一个固定长度的散列值, 作为鉴别标识
对称加密-保密和认证
B A
A与B共享密钥k A: Ek (M ) B B : Dk (M ),查看M 是否为有意义的明文
对称加密-保密和认证
提供保密-仅A和B共享密钥 提供一定程度的鉴别
MD5描述: 输入:任意长度的报文 输入分组长度:512bit 输出:128bit报文
MD5设计目标
安全性:找到两个具有相同散列值的消息计算上不 可能,不存在比穷举攻击更有效的攻击方法
直接安全性:算法不基于任何安全性假设,如因 子分解难度
效率:算法基于32位的简单操作,适合高速软件 实现
每一步运算步骤
从消息 块导出 常量
报文鉴别
A
B
MAC=CK(M),K为A和B共享密钥,M为明文
A->B: M||CK(M) 提供鉴别:仅A和B共享密钥
报文鉴别与保密:鉴别与明文连接
A
B
MAC=CK1(M)
A->B: EK2[M||CK1(M)] 提供鉴别:仅A和B共享密钥K1 提供保密:仅A和B共享密钥K2
报文鉴别与保密:鉴别与密文连接
散列函数基本用法(5)
A->B: M||[H(M||S)] 提供鉴别:仅A和B共享秘密值S,且S不在信 道中传输 减少了两次加/解密过程
散列函数基本用法(6)
A->B: EK[M||[H(M||S)]] 提供鉴别:仅A和B共享秘密值S 提供保密:仅A和B共享密钥K 减少了两次加/解密过程
报文鉴别
鉴别的结构
底层必须有某种函数产生一个鉴别标识:用于认 证一个报文的值
高层认证协议以底层函数为原语,使接收者完成 报文的鉴别
报文鉴别的三种方式
消息加密:以整个报文的密文作为鉴别标识
对称加密 公钥加密
报文鉴别码(MAC):以一个公共函数和一个 密钥产生一个固定长度的值作为认证鉴别 标识
HMD5压缩算法
各轮处理使用的16个32位字X[0,..15]的 不同次序
第一轮按照初始次序 2,3,4轮采用下式对(0,1,..,15)进行置换
2 (i) (1 5i) mod 16 3 (i) (5 3i) mod 16 4 (i) 7i mod 16
Secure Hash Algorithm简介
散列函数vs报文鉴别码
报文鉴别码需要对全部数据进行加密 报文鉴别码速度慢 散列函数是一种直接产生鉴别码的方法
散列函数通用结构
Merkle于1989年提出迭代散列函数模型 具体做法:
把原始消息M分成一些固定长度b比特的块 Yi,(Y0,Y1,…, YL-1,)最后一块填充为b比特, 并包含报文M的长度值
用户A和用户B共享密钥K,对报文M,MAC= CK(M),Ck不需要可逆
若接收方计算的MAC与收到的MAC匹配
接收者可以确信消息M未被改变 接收者可以确信消息来自所声称的发送者 若报文中包含序号(如HDLC,X.25, TCP),则
接收者可以保证报文的正常顺序,因为攻击者无 法成功更改序列号
b
公钥加密-鉴别和签名
A
B
提供鉴别和签名
仅A有KRa可进行加密 任何一方均能使用KUa验证签名
不具备保密性
所有用户都能使用A的公钥解密
公钥加密-保密、鉴别和签名
A
B
KRa提供认证和签名
仅A有KRa可进行加密 任何一方均能使用KUa验证签名
KUb提供保密性
报文鉴别码
使用一个双方共享的密钥生成一个短小的定 长数据分组,即报文鉴别码,并附加到报文中
将为消51息2位M分组为Y0, Y1,…, YL-1,其中每个分组
最填后充值一个,填分充组值Y最L-1高,前位4为481位,其为余消位息为M的 0(尾低部字加节上 序)
MD5描述-step 2
缓冲区初始化
MD5使用缓冲区存放处理过程的中间结果和 最后的消息摘要
缓冲区MD为128bit
MD可表示为4个32bit的寄存器 (A,B,C,D),每个寄存器均以小字节序存放 数据
MD5描述-step 3
压缩:由压缩函数HMD5对每个消息分组Yi 进行4轮循环的压缩处理。
CV0 IV CVi H MD5 (CVi1,Yi )
输出
MD CVL
HMD5压缩算法
HMD5压缩算法输入:
散列函数基本用法(2)
A->B: M||Ek[H(M)] 提供鉴别:加密保护H(M)
散列函数基本用法(3)
A->B: M||EKRa[H(M)] 提供鉴别:加密保护H(M) 提供签名:仅A能生成EKRa[H(M)]
散列函数基本用法(4)
A->B: EK[M||EKRa[H(M)]] 提供鉴别:加密保护H(M) 提供保密:仅A和B共享密钥K
报文鉴别
报文鉴别:对收到的报文进行验证,证实 报文来自可信的源点且未被篡改过,若在报 文中加入时间和序号信息,则可完成对报文 及时性和序号的认证
鉴别的目的
信源识别:验证报文的发送者是真实的,而不 是冒充的
验证报文的完整性,在传送或存储过程中未被篡 改,重放或延迟等
数字签名的目的
活性 某些报文只需要真实性,不需要保密性
广播的报文难以使用加密(信息量大) SNMP网络管理报文等只需要真实性 政府/权威部门的公告
散列函数
h H (M )
H(M): 以任意长度的报文M为输入; 输出为一 个固定长度的散列值,称为报文摘要 (MessageDigest)
H(M)是消息M的所有位的函数并提供错误检测 能力:消息中的任何一位或多位的变化都将导 致该散列值的变化
散列函数的要求
H能用于任意大小分组,能产生定长输出 对任何给定的x,H(x)要相对易于计算,使得
硬件和软件实现成为可能 单向性:对任何给定的码h,寻找x使得H(x)=
h在计算上是不可行的
散列函数的要求
映射分布均匀性和差分分布均匀性
输入中每一比特信息,应尽量均匀的反映到输 出的每一比特上, 输出的每一比特,都是输入 中尽可能多比特的信息一起作用的结果
常量表T:随机化32位整型量,消除输入数据 的规律性
每轮处理结构一 样,使用的位逻 辑函数不同,分 别表示为F,G,H, I. 每轮循环分 为16步
第4轮处理的输
出与第一轮的输 入CVq按照4个32 位字进行模232相 加
Function g(b,c,d) F(b,c,d) (b&c)|(~b&d) G(b,c,d) (b&d)|(c&~d) H(b,c,d) bcd I(b,c,d) c(b|~d)
1992年NIST制定了SHA(128位) 1993年SHA成为标准,用于数字签名标准
DSS 1994年修改产生SHA-1(160位) 1995年SHA-1成为新的标准 SHA-1要求输入消息长度<264 SHA-1的摘要长度为160位 基础是MD4
SHA-1算法
结构与MD5类似 使用BIG-ENDIAN字节序 步骤1:填充
A是用此密钥发送密文的唯一来源 传输中不会被更改,其他用户不知道如何修改密
文来使明文产生预期的改变 B需要某些手段确定解密结果是合法明文:校验

不提供签名
发送人和接收人均可伪造报文
公钥加密-保密
A
B
提供保密
-仅B有KRb能解密 不提供鉴别
-任何一方均可以使用KU
加密报文而假称它是发自A的
采用数据加密,防止消息泄露,抵御被动攻击
网络通信的攻击威胁
伪装:以假的源点身份将报文插入网络中 内容篡改:报文内容被插入,删除,变换,修改 序号篡改:对通信双方报文序号的任何修改,
包括插入、删除或重排序 时间篡改:报文延迟或重放 抵赖:接受者否认收到某报文;发送者否认发
送过某报文 采用报文鉴别、数字签名技术
网络信息安全
陈羽中 yzchen79@126.com
第八讲 报文鉴别
报文鉴别 散列函数 散列算法MD5、SHA1 数字签名
网络通信的攻击威胁
泄露:把报文内容发布给任何人或没有合法 密钥的进程
流量分析:发现通信双方之间报文流的通信 模式,可以用来确定连接的频率、持续时间长 度;还可以发现报文数量和长度等
简单:算法中没有大型数据结构和复杂的程序 有利于Little-Endian结构:采用小字节序,
同Intel处理器
MD5示意图
MD5描述-Step1
消息分组与填充
附加填充比特,对报文进行填充使报文长度(比 特数)与448模512同余,即填充后长度为512的 整数倍减去64
附加长度值,将64bit表示的初始报文M的位长 度(低字节序)附加在填充后报文尾部。
当前处理的512位分组Yi 128位缓冲区MD中4个32位寄存器A,B,C,D
的当前值 常量表T中的常数:T[1..16],T[17..32],
T[33..48],T[49..64]
HMD5压缩算法
常量表T[1..64]中各元素T[i]为32位 整数,取值为:
Ti IN T (2 32 abs(sin( i))), i为 弧 度 值
基本MD5操作(单步)
HMD5压缩算法
BB+((A+g(B,C,D)+X[K]+T[i])<<s)
A,B,C,D: 缓存中的4个字 g: 基本逻辑函数F,G,H,I中的一个 <<<s: 32bit参数循环左移s个比特 X[k]: =M[q*16+k],第q个长度为512bit
报文分组中的第k个32bit字 T[i]:矩阵T中的第i个32bit字 +:模232加法
抗冲突性:在统计上无法产生2个散列值相 同的预映射。
弱抗冲突性:给定任意分组x,寻找不等于x的y, 使得H(x)=H(y)在计算上是不可行的
强抗冲突性:寻找任何的(x,y),使得H(x)= H(y)在计算上是不可行的
散列函数基本用法(1)
A->B: EK[M||H(M)] 提供鉴别:加密保护H(M) 提供保密:仅A和B共享密钥K
填充方法与MD5完全相同,填充到512的倍数
步骤2
分块,每个分块为512位
SHA-1算法
步骤3:初始化缓冲区MD,160位常量(5个 32位寄存器A,B,C,D,E)
A 67 45 23 01 (0x67452301) B EF CD AB 89 (0xEFCDAB89) C 98 BA DC FE (0x98BADCFE ) D 10 32 54 76 (0x10325476) E C3 D2 E1 F 0 (0xC3D2E1F 0)
SHA-1算法
步骤4:对每 个消息分组Yi 进行4轮循环 的压缩处理, 每轮处理结构 相同,但使用 的位逻辑函数 不同,每轮处 理由20次迭代 组成
SHA-1算法
常数字序列K: Kt=0x 5A 82 77 99 ( 0≤t≤19 ) Kt=0x 6E D9 EB A1 ( 20≤t≤39 ) Kt=0x 8F 1B BC DC ( 40≤t≤59 ) Kt=0x CA 62 C1 D6 ( 60≤t≤79 ) 字序列W 块Mi分为16个字W0,W1,...,W15: Wi: (16<=i<=79) Wi = (Wi-3Wi-8Wi-14来自百度文库Wi-16) <<< i
设定初始值CV0 压缩函数f,CVi=f(CVi-1,Yi-1) 最后一个CVi为hash值,H(M,CV0)=CVL
MD5描述
Ron Rivest于1990年提出MD4 1992年, Ron Rivest 完成MD5 (RFC
1321) 在最近数年,MD5是最主要的hash算法 现行美国标准SHA-1以MD5的前身MD4为基础
A
B
MAC=CK1(EK2(M))
A->B: EK2[M||CK1(EK2(M))] 提供鉴别:仅A和B共享密钥K1 提供保密:仅A和B共享密钥K2
报文鉴别 VS 常规加密
保密性与真实性是两个不同的概念 根本上,报文加密提供的是保密性而非真实性 加密代价大(公钥算法代价更大) 鉴别函数与保密函数分离能提供功能上的灵
相关文档
最新文档