第十讲 密码Hash函数.ppt
- 格式:ppt
- 大小:471.50 KB
- 文档页数:53
第11章 密码学Hash函数Crytographic Hash Functions课程内容大纲1. 引言第一部分:对称密码2. 传统加密技术第三部分:密码学数据完整性算法11.密码学Hash函数3. 分组密码与数据加密标准(DES) 12.消息认证码(MAC) 4. 数论与有限域的基本概念 13.数字签名 5. 高级加密标准(AES) 6. 分组密码的工作模式 7. 伪随机数的产生和流密码第四部分:相互信任14.密钥管理与分发 15.用户认证第二部分:公钥密码8. 数论入门 9. 公钥密码学与RSA 10. 密钥管理和其他公钥密码体制讲课内容11.1 密码学Hash函数的应用 11.2 两个简单的Hash函数 11.3 需求和安全性、安全Hash函数结构 11.4 基于分组密码链接的Hash函数 11.5 安全Hash算法(SHA) 补充:Hash函数MD511.1 密码学Hash函数的应用Hash函数定义• (单词"hash"的翻译:哈希、杂凑、散列、… ) • Hash函数H是一公开函数,用于将任意长的消息 M映射为较短的、固定长度的一个值H(M)。
称函 值H(M)为杂凑值、杂凑码或消息摘要 M → h = H(M)• 在安全应用中使用的Hash函数称为密码学Hash 函数(cryptographic hash function)Hash函数特点• Hash值 H(M) 是消息中所有 比特的函数,因此提供了一 种错误检测能力,即改变消 息中任何一个比特或几个比 特都会使杂凑码发生改变。
Hash函数的应用(1)消息认证 (2)数字签名 (3)其它一些应用Hash函数应用之一:消息认证• 消息认证是用来验证消息完整性的一种机制或服务 完整性 • 当Hash函数用于提供消息认证功能时,Hash函数 值通常称为消息摘要(message digest)• 一般地,消息认证是通过使用消息认证码(MAC) 实现的,即带密钥的Hash函数。
harsh函数-概述说明以及解释1.引言1.1 概述概述部分的内容可以描述一下harsh函数是什么以及它的重要性和作用。
可以参考以下内容:概述:随着计算机科学的快速发展,数据安全和隐私保护变得尤为重要。
在这个数字化时代,我们需要一种可靠的方法来保护数据的完整性和安全性。
在这方面,hash函数扮演着至关重要的角色。
Hash函数是一种常见的密码算法,主要用于将数据转换为固定长度的字符串。
它通过对任意长度的数据应用哈希算法,生成一个唯一的哈希值。
这个哈希值可以用来验证数据的完整性,检测数据的变化和确定数据的唯一性。
在hash函数的世界里,harsh函数是一种特殊类型的hash函数,它具有许多独特的特点和优势。
与传统的hash函数相比,harsh函数不仅具有更高的效率和更低的冲突率,还可以提供更好的数据安全性和隐私保护。
harsh函数的工作原理是将输入数据通过一系列复杂而精确的计算,转换为一个唯一的哈希值。
这个哈希值具有不可逆的特性,即无法通过哈希值来恢复原始数据。
这种不可逆的特性使得harsh函数成为密码学中重要的工具,广泛应用于数字签名、数据验证、身份验证等各个领域。
此外,harsh函数还具有较低的碰撞概率,即不同的输入数据生成相同哈希值的概率非常低。
这使得harsh函数在数据完整性验证等关键应用场景中更加可靠。
另外,harsh函数还具有良好的计算性能和效率,使得它能够承担大规模数据处理的任务。
总的来说,harsh函数在确保数据安全性和完整性方面发挥着重要作用。
它的独特特性使其在各个领域得到广泛应用,同时也推动了数据安全和密码学的发展。
未来,随着计算机技术的不断进步,人们对于更加高效和安全的harsh函数算法的需求也将不断增加。
1.2文章结构文章结构部分的内容可以描述整篇文章的组织架构和章节安排:在本文中,我将按照如下结构来阐述关于harsh函数的相关知识。
首先,我将在引言部分进行概述,简要介绍harsh函数的定义、背景和应用领域。
哈希函数1 基本原理我们使用一个下标范围比较大的数组来存储元素。
可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素"分类",然后将这个元素存储在相应"类"所对应的地方。
但是,不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值,这样就产生了"冲突",换句话说,就是把不同的元素分在了相同的"类"之中。
后面我们将看到一种解决"冲突"的简便做法。
总的来说,"直接定址"与"解决冲突"是哈希表的两大特点。
2 函数构造构造函数的常用方法(下面为了叙述简洁,设h(k) 表示关键字为k 的元素所对应的函数值):a) 除余法:选择一个适当的正整数p ,令h(k ) = k mod p这里,p 如果选取的是比较大的素数,效果比较好。
而且此法非常容易实现,因此是最常用的方法。
b) 数字选择法:如果关键字的位数比较多,超过长整型范围而无法直接运算,可以选择其中数字分布比较均匀的若干位,所组成的新的值作为关键字或者直接作为函数值。
3 冲突处理线性重新散列技术易于实现且可以较好的达到目的。
令数组元素个数为S ,则当h(k) 已经存储了元素的时候,依次探查(h(k)+i) mod S , i=1,2,3…… ,直到找到空的存储单元为止(或者从头到尾扫描一圈仍未发现空单元,这就是哈希表已经满了,发生了错误。
当然这是可以通过扩大数组范围避免的)。
4 支持运算哈希表支持的运算主要有:初始化(makenull)、哈希函数值的运算(h(x))、插入元素(insert)、查找元素(member)。
设插入的元素的关键字为x ,A 为存储的数组。
Hash函数概念将任意长度的输⼊变换为固定长度的输出的不可逆的单向密码体制Hash函数在数字签名和消息完整性检测等⽅⾯有着⼴泛的应⽤Hash函数同时是⼀种具有压缩特性的单向函数,其像通常称为数字指纹,消息摘要或散列值。
散列值的⽣成过程可以表⽰为h = H(M)其中h是定长的散列值,H是哈希函数,M是⼀个变长消息散列函数主要⽤于消息认证和数字签名,因此需要具备以下特性1. H可应⽤于任意长度的消息2. H产⽣定长的输出3. 对任意给定的消息x,计算H(x)⽐较容易,⽤硬件软件均可实现4. 单向性:对任意给定的散列值h,找到满⾜H(x) = h 的x在计算上是不可⾏的5. 抗弱碰撞性:对任意给定的消息x,找到x != y并且H(x) = H(y)的消息y在计算上是不可⾏的6. 抗强碰撞性:找到任何满⾜H(x) = H(y) 的偶对(x,y)在计算上是不可⾏的性质2是哈希函数的基本特性,性质3是哈希函数的可⽤性,性质4,5,6是哈希函数为满⾜不同应⽤⽽需具备的基本安全性质应⽤数字签名由于消息散列值通常⽐消息本⾝短的多,因此对消息散列值进⾏数字签名在处理上⽐对消息本⾝进⾏签名要⾼效的多。
⽣成程序或⽂档的数字指纹hash函数可以⽤来保证消息的完整性。
⾸先,通过哈希函数变换得到程序或⽂档的散列值,然后将散列值存储,对程序或⽂档进⾏定时的检测,与已存储的散列值进⾏⽐较,以此来实现完整性验证。
⽤于安全传输和⽤户⼝令⽤于保存⽤户登陆⼝令(密码),通过⽤户id及⼝令⽣成相应的散列值,然后保存,⽤户在进⼊系统输⼊⼝令时,⽣成散列值与存储的散列值进⾏⽐较,这样可以确保⽤户⼝令不被管理员或攻击者获取到哈希算法消息认证消息认证的作⽤主要有两个:⼀个是验证信息来源的真实性,⼀般称之为信息源认证;另⼀个是验证消息的完整性消息认证码(MAC)利⽤消息和双放共享的密钥通过认证函数来⽣成⼀个固定长度的短数据块,并将该数据块附加在消息后⽐如发送⽅A和接收⽅B共享密钥K,若A向B发送消息M,则MAC = C(K,M) ,其中C是认证函数,MAC是消息认证码(a)为明⽂传输,(b)为先计算MAC后,将MAC数据块附加在M信息后进⾏加密传输,(c)为先将M进⾏加密,再⽣成MAC,并附在消息块后进⾏传输基于哈希的消息认证码HMAC是实际应⽤中使⽤最多的⽅案,如SSL就使⽤HMAC来实现消息认证功能。