密码学与信息安全-第12章-散列算法和MAC算法PPT
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于散列函数不是专为MAC设计的,其不依赖于秘 密钥,所以不能直接用于MAC,目前提出了许多 方案,其中HMAC是最受支持的一种方案。它是 IP安全里必须实现的MAC方案,并且在其他 Internet协议中也使用了HMAC
HMAC设计目标
不必修改而直接使用现有的hash函数。特别地, 很容易免费得到软件上执行速度较快的散列函数 及其代码。
3. 散列函数:它是将任意长的消息映射为定长的 散列值的函数,以该散列值作为认证符。目前 主要有:MD5,SHA-1,SHA256,SHA-384, SHA-512,Whirlpool 等。
在数字签名方案中也要用到散列函数。对需 要签名的消息用一个函数,产生一个固定 长度的消息摘要(Message Digest),最 后对消息摘要进行签名,得到确定长度的 签名消息。
SHA-1产生160比特的散列值。2002年,NIST发布了修订 版2,FIPS180-2,其中给出了三种新的SHA版本,散列 值长度依次为256,384和512比特。分别称为SHA-256, SHA-384, SHA-512。这些新的版本和SHA-1具有相 同的基础结构,使用了相同的模算术和二元逻辑运算。 2005年,NIST宣布了逐步废除SHA-1的意图,到2010 年,逐步转而依赖SHA的其他版本。
如果找到或者需要更快或更安全的hash函数,应 能很容易地替代原来嵌入的hash函数。
应保持hash函数的原有性能。 对密钥的使用和处理应较简单。 如果已知嵌入的hash函数的强度,则完全可以知
道认证机制抗密码分析的强度。
HMAC算法
H:嵌入的hash函数
IV:作为散列函数的输入值
M:HMAC的消息输入
典型的安全散列函数的总体结构
典型的安全散列函数的总体结构
散列函数将输入消息分为L个固定长度的分组,每一分组 长为b位,最后一个分组不足b位时需要将其填充为b位, 最后一个分组还需要一些空间保存输入的总长度。
散列函数中重复使用了压缩函数f,它的输入是前一步中得 出的n位结果(称为链接变量)和一个b位分组,输出为 一个n位分组。链接变量的初值由算法在开始时指定, 其终值即为散列值,通常b>n,因此称其为压缩函数。 散列函数可归纳如下:
步骤5:输出。所有的N个1024比特分组都处理 完以后,从第N阶段输出的是512比特的消息摘要。 Ho=IV Hi=SUM 64(Hi-1,abcdefghi) MD=HN
SHA-512轮函数
SHA-512轮函数
T1=h+Ch(e,f,g)+(
512 e 1
)+Wt+Kt
T2=(
512 a 0
安全散列算法
消息摘要 长度
消息长度
SHA-1 160
<264
SHA-256 SHA-384 SHA-512
256
384
512
<264
<2128
<2128
分组长度 512
512
1024
1024
字长度 32 步骤数 80 安全性 80
32
64
64
64
80
80
128
192
256
1.所有的长度以比特为单位
2.安全性是指对输出长度为n比特散列函数的生日攻击产生碰撞的工作 量大约为2n/2
SHA-512逻辑原理
+ 为模264的逐字加
SHA-512逻辑原理
这个过程包含下列步骤: 步骤1:附加填充位。填充消息使其长度模1024
与896同余,即长度≡896 (mod 1024),即使消 息已经满足上述长度要求,仍然需要进行填充, 因此填充位数在1到1024之间。填充由一个1和 后续的0组成。 步骤2:附加长度。在消息后附加一个128比特的 块,将其看做是128比特的无符号整数,它包含 填充前消息的长度。
SHA-512逻辑原理
步骤4:以1024比特的分组(16个字)为单位处 理消息。算法的核心是具有80轮运算的模块。每 一轮,如t,使用一个64比特的值Wt,该值由当 前被处理的1024比特消息分组Mi导出。每一轮还 使用附加的常数Kt,其中0≤t≤79,用来表示轮 数。这些常数如下获得:前80个素数取三次根, 取小数部分的前64比特。第80轮的输出和第一轮 的输入Hi-1进行模264相加产生Hi
SHA-512逻辑原理
步骤3:初始化散列缓冲区。散列函数的中间结果和最终 结果保存于512比特的缓冲区中,缓冲区用8个64比特的 寄存器(a,b,c,d,e,f,g,h)wenku.baidu.com示,并将这些寄存器初始化 为下列64比特的整数: a=6A09E667F3BCC908 e=510E527FADE682D1 b=BB67AE8584CAA73B f=9B05688C2B3E6C1F c=3C6EF372FE94F82B g=1F83D9ABFB41BD6B d=A54FF53A5F1D36F1 h=5BE0CD19137E2179
Yi:M的第i个分组 L:M中的分组数
b:每一分组所含的位数
n:嵌入的散列函数所产生散列码长
K:密钥,若k长度大于b,则将密钥 作为散列函数的输入产生一个n位 的新密钥来使用
K+: 为使K为b位长而在K左边填充0 后所得的结果。
ipad: 00110110(十六进制数36)重复 b/8次的结果。
opad: 01011100(十六进制数5C) 重 复b/8次的结果。
CV0=IV=初始n位值 CVi=f(CVi-1,Yi-1) 1≤i≤L H(M)=CVL
安全散列算法
安全散列算法(SHA)是由美国标准与技术协会(NIST) 设计,并于1993年作为联邦信息处理标准(FIPS 180) 发布,修订版于1995年发布(FIPS 180-1),通常称之 为SHA-1.
密钥可以进行预处理
第12章 散列算法和MAC算法
第12章 散列算法和MAC算法
消息认证是用来验证消息完整性的一种机制或 服务。产生消息认证符的函数分为如下三类:
1. 消息加密:整个消息的密文作为认证符。
2. 消息认证码(MAC):它是消息和密钥的函数, 它产生定长的值,以该值作为认证符。目前有 两种MAC:HMAC和CMAC
)+Maj(a,b,c)
a= T1 +T2
b=a
c=b
d=c
e=d+ T1 f=e
g=f
h=g
SHA-512轮函数
512 a 0
512 e 1
SHA-512轮函数
HMAC
对于MAC,一种策略是利用hash函数来设计, 因为: 1、一般像md5、sha-1这样的散列函数,其软件 执行速度比诸如des这样的对称分组密码钥要快。 2、可以利用密码散列函数代码库。
HMAC设计目标
不必修改而直接使用现有的hash函数。特别地, 很容易免费得到软件上执行速度较快的散列函数 及其代码。
3. 散列函数:它是将任意长的消息映射为定长的 散列值的函数,以该散列值作为认证符。目前 主要有:MD5,SHA-1,SHA256,SHA-384, SHA-512,Whirlpool 等。
在数字签名方案中也要用到散列函数。对需 要签名的消息用一个函数,产生一个固定 长度的消息摘要(Message Digest),最 后对消息摘要进行签名,得到确定长度的 签名消息。
SHA-1产生160比特的散列值。2002年,NIST发布了修订 版2,FIPS180-2,其中给出了三种新的SHA版本,散列 值长度依次为256,384和512比特。分别称为SHA-256, SHA-384, SHA-512。这些新的版本和SHA-1具有相 同的基础结构,使用了相同的模算术和二元逻辑运算。 2005年,NIST宣布了逐步废除SHA-1的意图,到2010 年,逐步转而依赖SHA的其他版本。
如果找到或者需要更快或更安全的hash函数,应 能很容易地替代原来嵌入的hash函数。
应保持hash函数的原有性能。 对密钥的使用和处理应较简单。 如果已知嵌入的hash函数的强度,则完全可以知
道认证机制抗密码分析的强度。
HMAC算法
H:嵌入的hash函数
IV:作为散列函数的输入值
M:HMAC的消息输入
典型的安全散列函数的总体结构
典型的安全散列函数的总体结构
散列函数将输入消息分为L个固定长度的分组,每一分组 长为b位,最后一个分组不足b位时需要将其填充为b位, 最后一个分组还需要一些空间保存输入的总长度。
散列函数中重复使用了压缩函数f,它的输入是前一步中得 出的n位结果(称为链接变量)和一个b位分组,输出为 一个n位分组。链接变量的初值由算法在开始时指定, 其终值即为散列值,通常b>n,因此称其为压缩函数。 散列函数可归纳如下:
步骤5:输出。所有的N个1024比特分组都处理 完以后,从第N阶段输出的是512比特的消息摘要。 Ho=IV Hi=SUM 64(Hi-1,abcdefghi) MD=HN
SHA-512轮函数
SHA-512轮函数
T1=h+Ch(e,f,g)+(
512 e 1
)+Wt+Kt
T2=(
512 a 0
安全散列算法
消息摘要 长度
消息长度
SHA-1 160
<264
SHA-256 SHA-384 SHA-512
256
384
512
<264
<2128
<2128
分组长度 512
512
1024
1024
字长度 32 步骤数 80 安全性 80
32
64
64
64
80
80
128
192
256
1.所有的长度以比特为单位
2.安全性是指对输出长度为n比特散列函数的生日攻击产生碰撞的工作 量大约为2n/2
SHA-512逻辑原理
+ 为模264的逐字加
SHA-512逻辑原理
这个过程包含下列步骤: 步骤1:附加填充位。填充消息使其长度模1024
与896同余,即长度≡896 (mod 1024),即使消 息已经满足上述长度要求,仍然需要进行填充, 因此填充位数在1到1024之间。填充由一个1和 后续的0组成。 步骤2:附加长度。在消息后附加一个128比特的 块,将其看做是128比特的无符号整数,它包含 填充前消息的长度。
SHA-512逻辑原理
步骤4:以1024比特的分组(16个字)为单位处 理消息。算法的核心是具有80轮运算的模块。每 一轮,如t,使用一个64比特的值Wt,该值由当 前被处理的1024比特消息分组Mi导出。每一轮还 使用附加的常数Kt,其中0≤t≤79,用来表示轮 数。这些常数如下获得:前80个素数取三次根, 取小数部分的前64比特。第80轮的输出和第一轮 的输入Hi-1进行模264相加产生Hi
SHA-512逻辑原理
步骤3:初始化散列缓冲区。散列函数的中间结果和最终 结果保存于512比特的缓冲区中,缓冲区用8个64比特的 寄存器(a,b,c,d,e,f,g,h)wenku.baidu.com示,并将这些寄存器初始化 为下列64比特的整数: a=6A09E667F3BCC908 e=510E527FADE682D1 b=BB67AE8584CAA73B f=9B05688C2B3E6C1F c=3C6EF372FE94F82B g=1F83D9ABFB41BD6B d=A54FF53A5F1D36F1 h=5BE0CD19137E2179
Yi:M的第i个分组 L:M中的分组数
b:每一分组所含的位数
n:嵌入的散列函数所产生散列码长
K:密钥,若k长度大于b,则将密钥 作为散列函数的输入产生一个n位 的新密钥来使用
K+: 为使K为b位长而在K左边填充0 后所得的结果。
ipad: 00110110(十六进制数36)重复 b/8次的结果。
opad: 01011100(十六进制数5C) 重 复b/8次的结果。
CV0=IV=初始n位值 CVi=f(CVi-1,Yi-1) 1≤i≤L H(M)=CVL
安全散列算法
安全散列算法(SHA)是由美国标准与技术协会(NIST) 设计,并于1993年作为联邦信息处理标准(FIPS 180) 发布,修订版于1995年发布(FIPS 180-1),通常称之 为SHA-1.
密钥可以进行预处理
第12章 散列算法和MAC算法
第12章 散列算法和MAC算法
消息认证是用来验证消息完整性的一种机制或 服务。产生消息认证符的函数分为如下三类:
1. 消息加密:整个消息的密文作为认证符。
2. 消息认证码(MAC):它是消息和密钥的函数, 它产生定长的值,以该值作为认证符。目前有 两种MAC:HMAC和CMAC
)+Maj(a,b,c)
a= T1 +T2
b=a
c=b
d=c
e=d+ T1 f=e
g=f
h=g
SHA-512轮函数
512 a 0
512 e 1
SHA-512轮函数
HMAC
对于MAC,一种策略是利用hash函数来设计, 因为: 1、一般像md5、sha-1这样的散列函数,其软件 执行速度比诸如des这样的对称分组密码钥要快。 2、可以利用密码散列函数代码库。