第11章 密码学Hash函数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章 密码学Hash函数
在数字签名方案中也要用到散列函数。对需 要签名的消息用一个函数,产生一个固定 长度的消息摘要(Message Digest),最 后对消息摘要进行签名,得到确定长度的 签名消息。
散列(hash)函数也称为杂凑值或消息摘要。
11.1密码学Hash函数的应用
11.1.1消息认证 消息认证是用来验证消息完整性的一种机制
抗弱碰撞攻击
抗原像攻击
抗强碰撞攻击
Hash函数安全特性之间的联系
11.5安全Hash算法(SHA)
安全散列算法(SHA)是由美国标准与技术协会 (NIST)设计,并于1993年作为联邦信息处理标准 (FIPS 180)发布,修订版于1995年发布(FIPS 180-1),通常称之为SHA-1。 SHA-1产生160比特的 散列值。
2002年,NIST发布了修订版2,FIPS180-2,其中给 出了三种新的SHA版本,散列值长度依次为256,384 和512比特。分别称为SHA-256,SHA-384, SHA512,这些算法被统称为SHA-2。这些新的版本和 SHA-1具有相同的基础结构,使用了相同的模算术和 二元逻辑运算。2005年,NIST宣布了逐步废除SHA-1 的意图,到2010年,逐步转而依赖SHA的其他版本。
512 a 0
=ROTR28(a)⊕ROTR34(a)⊕ROTR39(a)
512 e 1
= ROTR14(e) ⊕ROTR18(e) ⊕ROTR41(e)
a=6A09E667F3BCC908
e=510E527FADE682D1
b=BB67AE8584CAA73B
f=9B05688C2B3E6C1F
c=3C6EF372FE94F82B
g=1F83D9ABFB41BD6B
d=A54FF53A5F1D36F1 Nhomakorabeah=5BE0CD19137E2179
• 步骤4:以1024比特的分组(16个字)为单位 处理消息。算法的核心是具有80轮运算的模块。 每 由 一 表一 当 轮 示轮 前 还 轮, 被 使 数如 处 用 。理附这t,的加些使的常1用0常数2一4数如比个下K特6t4,获消比其得息特中:分的0前组值≤t8≤MW07i个导t9,,素出该用数。值来取每 三次根,取小数部分的前64比特。
• 步骤5:输出。所有的N个1024比特分组都处 理完以后,从第N阶段输出的是512比特的消 息摘要。
Ho=IV Hi=SUM 64(Hi-1,abcdefghi) MD=HN
图11.9 SHA-512对单个1024位分组的处理
11.5.2 SHA-512轮函数
图11.10 基本的SHA-512运算(单轮)
或服务。消息认证确保收到的数据确实和 发送时的一样(即没有修改、插入、删除 或重放),且发送方声称的身份是真实有 效的。
(c) (d)
11.1.2 数字签名
11.1.3其他应用
• 产生单向口令文件: 如操作系统存储口令的Hash值而不是
口令本身。 • 入侵检测和病毒检测:
将每个文件的Hash值H(F)存储在安全系统 中,随后就能够通过重新计算H(F)来判断 文件是否被修改过。
T1=h+Ch(e,f,g)+(1512e )+Wt+Kt
T2=(
512 a 0
)+Maj(a,b,c)
a= T1 +T2
b=a
c=b
d=c
e=d+ T1 f=e
g=f
h=g
其中: t : 步骤数,0≤t≤79 Ch(e,f,g)= (e AND f)⊕(NOT e AND g) Maj(a,b,c)= (a AND b)⊕(a AND c) ⊕(b AND c)
• 步骤2:附加长度。在消息后附加一个128比 特的块,将其看做是128比特的无符号整数, 它包含填充前消息的长度。
• 步骤3:初始化散列缓冲区。散列函数的中间 结果和最终结果保存于512比特的缓冲区中, 缓冲区用8个64比特的寄存器(a,b,c,d,e,f,g,h) 表示,并将这些寄存器初始化为下列64比特的 整数:
• 构建随机函数(PRF)或用做伪随机发生器。
11.3 需求与安全性
• 原像:对于Hash函数h=H(x),称x为H原像。 • 碰撞:因为H是多对一映射,所以对于任意
给定的Hash值h,对应有多个原像。如果满 足x≠y且H(x)=H(y),则称出现碰撞。 假设函数H的输入消息或数据块长度是b位, 输出的长度为n位,且b>n,则平均每个 Hash值对应2b/n个原像。
2008年发布了修订版FIPS 180-3,增加了224位版本。
SHA- SHA- SHA-256
1
224
消息摘要长度 160 224 256
SHA-384 384
SHA-512 512
消息长度 分组长度 字长度 步骤数
<264 <264 <264 512 512 512
32
32
32
80
64
64
散列函数应满足的条件:
散列函数的目的是为需认证的数据产生一 个“指纹”。为了能够实现对数据的认 证,散列函数应满足以下条件:
1)函数的输入可以是任意长。 2)压缩性:函数的输出是固定长,如MD5输出 128bit,SHA-1输出160 bit。具有压缩性。 3)已知X,求H(x)较为容易,可用硬件或软件实 现。 4)抗原像攻击(单向性):已知h,求使得 H(x)=h的x在计算上是不可行的,这一性质称为函 数的单向性,称H(x)为单向散列函数。
5)抗弱碰撞性:已知x,找出y(y≠x)使得 H(y)=H(x)在计算上是不可行的。
如果单向散列函数满足这一性质,则称其 是抗弱碰撞的。
6)抗强碰撞性:找出任意两个不同的输入x、y, 使得H(x)=H(y)在计算上是不可行的。如果 单向散列函数满足这一性质,则称其是抗 强碰撞的。
7)伪随机性:H的输出满足伪随机性测试标准
<2128 1024 64 80
<2128 1024 64 80
所有的长度以比特为单位。
11.5.1 SHA-512逻辑
图11.8 SHA-512生成消息摘要
这个过程包含下列步骤:
• 步骤1:附加填充位。填充消息使其长度模 1024与896同余,即使消息已经满足上述长 度要求,仍然需要进行填充,因此填充位 数在1到1024之间。填充由一个1和后续的0 组成。
在数字签名方案中也要用到散列函数。对需 要签名的消息用一个函数,产生一个固定 长度的消息摘要(Message Digest),最 后对消息摘要进行签名,得到确定长度的 签名消息。
散列(hash)函数也称为杂凑值或消息摘要。
11.1密码学Hash函数的应用
11.1.1消息认证 消息认证是用来验证消息完整性的一种机制
抗弱碰撞攻击
抗原像攻击
抗强碰撞攻击
Hash函数安全特性之间的联系
11.5安全Hash算法(SHA)
安全散列算法(SHA)是由美国标准与技术协会 (NIST)设计,并于1993年作为联邦信息处理标准 (FIPS 180)发布,修订版于1995年发布(FIPS 180-1),通常称之为SHA-1。 SHA-1产生160比特的 散列值。
2002年,NIST发布了修订版2,FIPS180-2,其中给 出了三种新的SHA版本,散列值长度依次为256,384 和512比特。分别称为SHA-256,SHA-384, SHA512,这些算法被统称为SHA-2。这些新的版本和 SHA-1具有相同的基础结构,使用了相同的模算术和 二元逻辑运算。2005年,NIST宣布了逐步废除SHA-1 的意图,到2010年,逐步转而依赖SHA的其他版本。
512 a 0
=ROTR28(a)⊕ROTR34(a)⊕ROTR39(a)
512 e 1
= ROTR14(e) ⊕ROTR18(e) ⊕ROTR41(e)
a=6A09E667F3BCC908
e=510E527FADE682D1
b=BB67AE8584CAA73B
f=9B05688C2B3E6C1F
c=3C6EF372FE94F82B
g=1F83D9ABFB41BD6B
d=A54FF53A5F1D36F1 Nhomakorabeah=5BE0CD19137E2179
• 步骤4:以1024比特的分组(16个字)为单位 处理消息。算法的核心是具有80轮运算的模块。 每 由 一 表一 当 轮 示轮 前 还 轮, 被 使 数如 处 用 。理附这t,的加些使的常1用0常数2一4数如比个下K特6t4,获消比其得息特中:分的0前组值≤t8≤MW07i个导t9,,素出该用数。值来取每 三次根,取小数部分的前64比特。
• 步骤5:输出。所有的N个1024比特分组都处 理完以后,从第N阶段输出的是512比特的消 息摘要。
Ho=IV Hi=SUM 64(Hi-1,abcdefghi) MD=HN
图11.9 SHA-512对单个1024位分组的处理
11.5.2 SHA-512轮函数
图11.10 基本的SHA-512运算(单轮)
或服务。消息认证确保收到的数据确实和 发送时的一样(即没有修改、插入、删除 或重放),且发送方声称的身份是真实有 效的。
(c) (d)
11.1.2 数字签名
11.1.3其他应用
• 产生单向口令文件: 如操作系统存储口令的Hash值而不是
口令本身。 • 入侵检测和病毒检测:
将每个文件的Hash值H(F)存储在安全系统 中,随后就能够通过重新计算H(F)来判断 文件是否被修改过。
T1=h+Ch(e,f,g)+(1512e )+Wt+Kt
T2=(
512 a 0
)+Maj(a,b,c)
a= T1 +T2
b=a
c=b
d=c
e=d+ T1 f=e
g=f
h=g
其中: t : 步骤数,0≤t≤79 Ch(e,f,g)= (e AND f)⊕(NOT e AND g) Maj(a,b,c)= (a AND b)⊕(a AND c) ⊕(b AND c)
• 步骤2:附加长度。在消息后附加一个128比 特的块,将其看做是128比特的无符号整数, 它包含填充前消息的长度。
• 步骤3:初始化散列缓冲区。散列函数的中间 结果和最终结果保存于512比特的缓冲区中, 缓冲区用8个64比特的寄存器(a,b,c,d,e,f,g,h) 表示,并将这些寄存器初始化为下列64比特的 整数:
• 构建随机函数(PRF)或用做伪随机发生器。
11.3 需求与安全性
• 原像:对于Hash函数h=H(x),称x为H原像。 • 碰撞:因为H是多对一映射,所以对于任意
给定的Hash值h,对应有多个原像。如果满 足x≠y且H(x)=H(y),则称出现碰撞。 假设函数H的输入消息或数据块长度是b位, 输出的长度为n位,且b>n,则平均每个 Hash值对应2b/n个原像。
2008年发布了修订版FIPS 180-3,增加了224位版本。
SHA- SHA- SHA-256
1
224
消息摘要长度 160 224 256
SHA-384 384
SHA-512 512
消息长度 分组长度 字长度 步骤数
<264 <264 <264 512 512 512
32
32
32
80
64
64
散列函数应满足的条件:
散列函数的目的是为需认证的数据产生一 个“指纹”。为了能够实现对数据的认 证,散列函数应满足以下条件:
1)函数的输入可以是任意长。 2)压缩性:函数的输出是固定长,如MD5输出 128bit,SHA-1输出160 bit。具有压缩性。 3)已知X,求H(x)较为容易,可用硬件或软件实 现。 4)抗原像攻击(单向性):已知h,求使得 H(x)=h的x在计算上是不可行的,这一性质称为函 数的单向性,称H(x)为单向散列函数。
5)抗弱碰撞性:已知x,找出y(y≠x)使得 H(y)=H(x)在计算上是不可行的。
如果单向散列函数满足这一性质,则称其 是抗弱碰撞的。
6)抗强碰撞性:找出任意两个不同的输入x、y, 使得H(x)=H(y)在计算上是不可行的。如果 单向散列函数满足这一性质,则称其是抗 强碰撞的。
7)伪随机性:H的输出满足伪随机性测试标准
<2128 1024 64 80
<2128 1024 64 80
所有的长度以比特为单位。
11.5.1 SHA-512逻辑
图11.8 SHA-512生成消息摘要
这个过程包含下列步骤:
• 步骤1:附加填充位。填充消息使其长度模 1024与896同余,即使消息已经满足上述长 度要求,仍然需要进行填充,因此填充位 数在1到1024之间。填充由一个1和后续的0 组成。