《图解密码技术》笔记7:单向散列函数-获取消息的“指纹”

本文深入探讨了单向散列函数的概念,包括其特性、实际应用如软件完整性验证、口令加密和数字签名等。重点介绍了SHA-1、SHA-2与SHA-3家族,并警告了MD5和SHA-1的安全风险,推荐使用SHA-2和SHA-3作为更安全的选择。同时,提到了常见的攻击方式如暴力破解和生日攻击,以及单向散列函数的局限性。
摘要由CSDN通过智能技术生成

目录

7.1 本章学习的内容

7.2 什么是单向散列函数

7.2.1 这个文件是不是真的呢

7.2.2 什么是单向散列函数

7.2.3 单向散列函数的性质

7.2.4 关于术语

7.3 单向散列函数的实际应用

7.3.1 检测软件是否被篡改

7.3.2 基于口令的加密

7.3.3 消息认证码

7.3.4 数字签名

7.3.5 伪随机数生成器

7.3.6 一次性口令

7.4 单向散列函数的具体例子

7.4.1 MD4、MD5

7.4.2 SHA-1、SHA-256、SHA-384、SHA-512

7.4.3 RIPEMD-160

7.4.4 AHS(Advanced Hash Standard)与SHA-3

7.5 单向散列函数SHA-1

7.5.1 整体流程

7.5.2 (1) SHA-1:填充

7.5.3 (2) SHA-1:计算W0~W79

7.5.4 (3) SHA-1:分组处理

7.5.5 (4) SHA-1:单步处理

7.6 对单向散列函数的攻击

7.6.1 暴力破解(攻击故事1)

7.6.2 生日攻击(攻击故事2)

7.7 单向散列函数无法解决的问题


单向散列函数是用来确保完整性的。

7.1 本章学习的内容

        单项散列函数的介绍;

        SHA-1、SHA-2、SHA-3;

7.2 什么是单向散列函数      

7.2.2 什么是单向散列函数

        单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值,这里的消息可以是字符串,也可以是图像文件、声音文件等等。

        散列值的长度和消息的长度无关,单向散列函数总是会计算出固定长度的散列值。比如 SHA-1 单向散列函数,它计算出的散列值的长度永远是160比特(20字节)。

       单向散列函数必须确保要找到和该消息具有相同散列值的另外一条消息是非常困难的,这一性质称为弱碰撞性。

7.2.3 单向散列函数的性质

  • 根据任意长度的消息计算出固定长度的散列值。
  • 能够快速计算出散列值。
  • 消息不同,散列值也不同。抗碰撞性
  • 具备单向性。(one-way)

7.2.4 关于术语

        单向散列函数,也称为消息摘要函数、哈希函数或者杂凑函数。

7.3 单向散列函数的实际应用

7.3.1 检测软件是否被篡改

        在镜像网站发布软件,将计算的散列值和原始网站的散列值进行对比。

7.3.2 基于口令的加密

        PBE:将口令和盐(salt,通过伪随机数生成器产生的随机数)混合后计算其散列值。

7.3.3 消息认证码

        将“发送者和接收者之间的共享密钥”和“消息”进行混合后计算出的散列值。在SSL/TLS中得到应用,将在14章详细介绍。

7.3.4 数字签名

        第9章详细介绍。

7.3.5 伪随机数生成器

        可使用单向散列函数构造伪随机数生成器。详见第12章。

7.3.6 一次性口令

        可以使用单向散列函数构造一次性口令。

7.4 单向散列函数的具体例子

  • MD4,MD5
  • SHA-1,SHA-256,SHA-384,SHA-512(SHA-256,SHA-384,SHA-512统称为SHA-2)
  • RIPEMD-160
  • AHS与SHA-3

7.4.1 MD4、MD5

        MD4、MD5的输出散列值都是128比特,MD是Message Digest的缩写。

7.4.2 SHA-1、SHA-256、SHA-384、SHA-512

        SHA-2有6个版本,都是由SHA-256\SHA-512这两个版本衍生出来的。

        注意,SHA-224和SHA-256在实现上采用32x8比特的内部状态,更适合32位的CPU

散列函数名称输出长度(bit)内部状态长度备注
SHA-1/160
SHA-2SHA-22422432x8 = 256将SHA-256的结果截掉32比特。
SHA-25625632x8 = 256
SHA-512/22422464x8 = 512将SHA-512的结果截掉288比特
SHA-51225664x8 = 512将SHA-512的结果截掉256比特
SHA-38438464x8 = 512将SHA-512的结果截掉128比特
SHA-51251264x8 = 512

7.4.3 RIPEMD-160

        RIPEMD的强抗碰撞性已于2004年被攻破,但是RIPEMD-160还尚未被攻破。比特币中使用的就是RIPEMD-169(15.3节)。

       

7.5 单向散列函数SHA-3

        SHA-3(Keccak算法)

7.6 Keccak算法

        暂时跳过,有兴趣的请移步——>详解常用哈希函数(Keccak算法)

7.7 应该使用哪种单向散列函数

        MD5:不安全,不应该使用

        SHA-1:不应该用于新的用途

        SHA-2:可以使用

        SHA-3:可以使用

7.8 对单向散列函数的攻击

  • 暴力破解
  • 生日攻击

7.9 单向散列函数无法解决的问题

        能够识别出“篡改”,无法辨别出“伪装”。

        需要认证:消息认证码、数字签名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值