1
计算机网络安全
第八讲 消息认证与Hash算法
许勇
华南理工大学信息网络工程研究中心
yxu@scut.edu.cn
2
主要内容主要内容
• 消息认证
¾消息加密
¾消息认证码
¾散列函数
• Hash算法
¾MD5
3
信息安全的需求信息安全的需求
• 保密性( Confidentiality)
• 完整性(Integrity)
¾ 数据完整性,未被未授权篡改或者损坏
¾ 系统完整性,系统未被非授权操纵,按既定的功能运行
• 可用性(Availability)
• 认证(Authenticity)
¾ 实体身份的认证,适用于用户、进程、系统、信息等
• 不可否认性( Non-repudiation)
¾ 防止源点或终点的抵赖
4
通信系统典型攻击通信系统典型攻击
• 泄密
• 传输
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
• 伪装:从一个假冒信息源向网络中插入消息
• 消息篡改
¾内容修改:消息内容被插入、删除、修改。
¾顺序修改:插入、删除或重组消息序列。
¾时间修改:消息延迟或重放。
• 发送方否认:发送者否认发送过消息
• 接收方否认:接受者否认收到消息
2
5
攻击与对策攻击与对策
发送方否认 数字签名
接收方否认
时间修改
顺序修改
内容修改
消息认证
(消息鉴别)
伪装
传输分析
加密泄密
对策攻击
6
消息认证(Message Authentication)消息认证(Message Authentication)
• 认证:一个短的字符串(值) V追加到消息M 之后,用
以认证该消息
¾ 发送方:M → M||V
¾ 接收方:M||V → yes/no (认证)
• 一个安全的认证系统,需满足
¾ 意向的接收者能够检验和证实消息的合法性、真实性和完整性
¾ 消息的发送者和接收者不能抵赖
¾ 除了合法的消息发送者,其它人不能伪造合法的消息
• 首先要选好恰当的认证函数,该函数产生一个认证标识,
然后在此基础上,给出合理的认证
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
(Authentication
Protocol),使接收者完成消息的认证。
7
认证函数认证函数
• 可用来做认证的函数分为三类:
¾消息加密函数(Message encryption):用完整信息的
密文作为对信息的认证
¾消息认证码MAC(Message Authentication Code):
是密钥和消息的公开函数,产生一个固定长度的值
作为认证标识
¾散列函数(Hash Function):是一个公开的函数,它
将任意长的信息映射成一个固定长度的信息,做为
认证值
8
主要内容主要内容
• 消息认证
¾消息加密
¾消息认证码
¾散列函数
• Hash算法
¾MD5
3
9
消息加密消息加密
• 消息的自身加密可以作为一个认证的度量。
• 对称加密模式和公钥加密模式有所不同。
10
对称加密:保密性与认证对称加密:保密性与认证
• 提供保密
¾ 只有A和B共享K
• 提供认证
¾ 仅来自A
¾ 传输中没有被更改
¾ 需要某种结构或冗余
• 不提供签名
¾ 接收方可以伪造消息
¾ 发送方可以否认消息
• 问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
:如何自动确定是
否收到的密文可解密为
可懂的明文?
• 一种解决办法是强制明
文有某种结构.
11
差错控制(Error Control)差错控制(Error Control)
FCS: 帧校验序列或校验和
12
公钥加密:保密性公钥加密:保密性
• 提供保密
¾只有B拥有解密的密钥KRb
• 不提供认证
¾任何一方都可用KUb对消息加密并假称是A
4
13
私钥加密:认证与签名私钥加密:认证与签名
• 提供认证和签名
¾仅A有KRa可以进行加密
¾传输中没有被更改
¾需要某种结构或冗余
¾任何一方均可以使用KUa验证签名
14
公钥加密:保密性、认证与签名公钥加密:保密性、认证与签名
• KUb提供保密性
• KRa提供认证和签名
15
主要内容主要内容
• 消息认证
¾消息加密
¾消息认证码
¾散列函数
• Hash算法
¾MD5
16
消息认证码(MAC)消息认证码(MAC)
• MAC:使用一个密钥生成一个固定大小的短数
据块,并加入到消息中
¾MAC(K,M)=CK(M)
• 前提: A 和 B 共享一个密钥 K
• 发送方:M||CK(M)
• 接收方:收到M’ || C’
¾计算 C’’=CK(M’)
¾检查是否 C’=C’’
• MAC函数类似于加密函数,但不需要可逆性。
因此在数学上比加密算法被攻击的弱点要少
5
17
MAC的基本用法(1)MAC的基本用法(1)
• 消息认证
¾提供认证
• 只有A和B共享K
18
MAC的基本用法(2)MAC的基本用法(2)
• 消息认证与保密性:与明文有关的认证
¾提供认证
• 只有A和B共享K1
¾提供保密性
• 只有A和B共享K2
19
MAC的基本用法(3)MAC的基本用法(3)
• 消息认证与保密性:与密文有关的认证
¾提供认证
• 使用K1
¾提供保密性
• 使用K2
20
MAC的安全性MAC的安全性
• 只有共享一个密钥的A和 B 可以为消息M创建
一个MAC码
• 只有认定的A 或 B可以认证接收的消息
• 攻击者如果没有重新计算MAC=CK(M’),无法
修改M
6
21
基于DES的消息认证码基于DES的消息认证码
• 最广泛的用法是数据认证算法DAA(Data
Authentication Algorithm),FIPS 出版物(FIPS PUB
113)和ANSI
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
(X9.17)
• 使用CBC(Cipher Block Chaining)方式,初始向量为0
• 将数据按64位分组,D1, D2, … , DN,必要时最后一个
数据块用0向右填充。运用DES算法E,密钥K
• 数据认证码(DAC)的计算如下:
O1 = EK(D1)
O2 = EK(D2⊕O1)
O3 = EK(D3⊕O2)
…
ON = EK(DN⊕ON-1)
22
基于DES的消息认证码(2)基于DES的消息认证码(2)
23
加密认证的问题加密认证的问题
• 保密性与真实性是两个不同的概念
• 根本上,信息加密提供的是保密性而非真实性
• 加密代价大(公钥算法代价更大)
¾ 加密软件速度慢
¾ 加密硬件成本高,硬件的优化针对大数据块
¾ 加密算法受专利保护或出口限制
• 某些信息只需要真实性,不需要保密性
¾ 广播的信息难以使用加密(信息量大)
¾ 网络管理信息等只需要真实性
¾ 政府/权威部门的公告
认证函数与保密函数的分离能提供功能上的灵活性
24
主要内容主要内容
• 消息认证(Message Authentication)
¾消息加密
¾消息认证码
¾散列函数
• Hash算法
¾MD5
7
25
散列函数(Hash Function)散列函数(Hash Function)
• Hash函数H(M): H: {0,1}*Æ{0,1}m。
¾输入为任意长度的消息M;
¾输出为一个固定长度m(例如m=128 or 160)的
散列值,称为消息摘要(Message Digest),是所
有消息位的函数。
• 这个散列值是消息M的所有位的函数并提供
错误检测能力:消息中的任何一位或多位的
变化都将导致该散列值的变化。
• 注意:
¾Hash函数不使用密钥
¾Hash函数是多对一的映射
26
散列函数的基本用法(1)散列函数的基本用法(1)
27
散列函数的基本用法(2)散列函数的基本用法(2)
28
散列函数的用法总结散列函数的用法总结
(f)
(e)
(d)
(c)
(b)
(a)
用法
Ek[ M || H(M || S)]
Ek[M || EKRa[H(M)]]
M || H(M || S)
签名 保密性
M || EKRa[H(M)]
M || Ek[H(M)]
Ek[M || H(M)]
认证传输的数据
√ √
√
√ √
√ √ √
√
√ √
8
29
散列函数的需求散列函数的需求
• 容易计算
¾给出 x,容易计算 H(x)
¾比密钥加密快
• 单向性
¾给定hash值 h,不容易找到 x使得 H(x)=h
• 抗碰撞性(Collision-resistance)
¾不容易找到 x和 y使得 H(x)=H(y)
30
Hash与MAC的区别Hash与MAC的区别
• MAC需要对全部数据进行加密
• MAC速度慢
• Hash是一种直接产生认证码的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
• 安全性:
¾Hash值长度为m位hash函数,攻击代价2m/2
¾密钥长度为k位,码长度为n位的MAC,攻击代价
是min(2k,2n)
31
Hash函数通用结构Hash函数通用结构
• 由Merkle于1989年提出
• Ron Rivest于1990年提出MD4
• 几乎被所有hash函数使用
• 具体做法:
¾把原始消息M分成一些固定长度的块Yi
¾最后一块padding并使其包含消息M长度
¾设定初始值CV0
¾压缩函数f, CVi=f(CVi-1,Yi-1)
¾最后一个CVi为hash值
32
Hash函数通用结构(2)Hash函数通用结构(2)
• IV =初始值(initial value)
• CV =链接值(chaining value)
• Yi =第i 个输入数据块 (ith input block )
• f =压缩算法 (compression algorithm)
• n =散列码的长度 (length of hash code)
• b =输入块的长度 (length of input block)
CV0=IV
CVi=f(CVi-1, Yi-1) (1 ≤ i ≤ L)
H(M) = CVL
9
33
主要内容主要内容
• 消息认证(Message Authentication)
¾消息加密
¾消息认证码
¾散列函数
• Hash算法
¾MD5
34
MD5简介MD5简介
• Merkle于1989年提出hash function 模型
• MIT 教授Ron Rivest于1990年提出MD4,于
1992年提出MD5 (RFC 1321)
• MD5把数据分成512bits块
• MD5的hash值是128bits
• 在最近数年之前,MD5是最主要的hash算法
• 现行美国标准SHA-1以MD5的前身MD4为基础
35
Hash函数:MD5Hash函数:MD5
• 输入:任意长度的二进制串
• 输出: 128bits二进制串
{0,1}* {0,1}128
2128 strings
36
MD5示意图MD5示意图
10
37
Step 1:增加填充位(padding bits)Step 1:增加填充位(padding bits)
• 用比特串100…0对M 进行填充,使得填充后
的消息M’的长度是512m+448bits
• 如果|M| mod 512 = 448,则填充 512bits长度的
100…0
• 例如:
¾M=001001
¾M’=001001100…0, |M’|=448
38
Step 2:填充长度Step 2:填充长度
• 令k = |M|, M的长度
• 将k 表示为 8 个字节B8B7…B1,将k追加到M的
末尾,低字节在前 (little-endian),结果为:
¾M’’=M’||B1||B2||…||B8
¾M’’的长度为512的倍数
• 例如:
¾M=001001
¾M’=001001100…0, |M’|=448
¾M’’=001001100…0||06x00x00x00x00x00x00x00x
39
Step 3:初始化MD缓冲区Step 3:初始化MD缓冲区
• 128bits缓存A, B, C, D
¾ A, B, C, D 32bits
¾ 保存中间值
• A, B, C, D初始化为:
¾ 低端存储格式(little-endian format):最低有效字节存储在
低地址字节
¾ 例如:
¾ A = 01 23 45 67 (0x67452301)
¾ B = 89 AB CD EF (0xEFCDAB89)
¾ C = FE DC BA 98 (0x98BADCFE)
¾ D = 76 54 32 10 (0x10325476)
40
Step 4:处理512bits分组Step 4:处理512bits分组
T[i]=232×abs(sin(i)),
1≤i≤64
Yq=X[0]X[1]…X[15]
CVq+1=HMD5(CVq,Yq)
11
41
压缩函数:HMD5压缩函数:HMD5
• HMD5有 4个循环
• 每个循环有 16个步骤
• 基本函数:
aÅb+((a+g(b,c,d)+X[k]+T[i])<<
本文档为【08消息认证与Hash算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。