杂项|新编密码学——Hash函数


文章目录

  • 一、Hash函数概述
    • 1.1、什么是Hash函数?
    • 1.2、Hash函数分类
    • 1.3、Hash函数应满足的条件(重点):
    • 1.4、对称MAC的一种Hash函数的一般结构
  • 二、MD5(Message Digest,消息摘要)
    • 2.1、特点:
    • 2.2、产生散列值的过程
  • 三、SHA1(Security Hash Algorithm,安全Hash算法)
    • 3.1、参数信息及MD5比较(重点)
    • 3.2、产生报文摘要的过程
  • 四、MAC
    • 4.1、**消息认证码(MAC)是如何实现消息认证的?**
    • 4.2、常见的三种MAC构造方式

一、Hash函数概述 1.1、什么是Hash函数? Hash函数(也称散列函数)是一个将 任意长度的消息x序列映射为较短的、 固定长度的一个值y的函数。
1.2、Hash函数分类
  • 带密钥的Hash函数:可将y和消息x一起在不安全的信道中传输
  • 不带密钥的Hash函数:y必须安全存放,确保y不被篡改
1.3、Hash函数应满足的条件(重点):
  • 从实用的角度:
    • 已知x,求H(x)较为容易, 并可用硬件或软件快速实现
    • 输入的消息可以任意长;输出的“指纹”固定长
  • 从安全的角度**(重点)**:
    • 原像问题:给定H(x),恢复x在计算上是不可行的;
    • 第二原像问题:给定 (x, H(x)),找到一个x1(x != x1
      ),使得H(x1) = H(x) 在计算上不可行
    • 碰撞问题:找到两个有意义的消息x1和x2,使得H(x1)=H(x2)几乎是不可能的。
1.4、对称MAC的一种Hash函数的一般结构 杂项|新编密码学——Hash函数
文章图片

二、MD5(Message Digest,消息摘要) MD5是由密码学家 Rivest在1992年公布的单向散列函数;
2.1、特点:
  • MD5采用了Merkle提出的迭代模型;
  • 输入消息可以任意长;
  • 每一次迭代处理512bit的消息分组;
  • 最终输出散列值为128bit
2.2、产生散列值的过程 【杂项|新编密码学——Hash函数】杂项|新编密码学——Hash函数
文章图片

杂项|新编密码学——Hash函数
文章图片

三、SHA1(Security Hash Algorithm,安全Hash算法) 3.1、参数信息及MD5比较(重点)
SHA-1 MD5
最大消息长度 < 2^64 不限
消息分组长度 512 512
结构 MerKle迭代 MerKle迭代
链接变量长度 160 128
散列值长度 160 128
3.2、产生报文摘要的过程 杂项|新编密码学——Hash函数
文章图片

四、MAC
  • 消息认证码(MAC):一种确认完整性并进行认证的技术
  • MAC是一种带密钥的函数h = MAC k(X)
    • 两个输入:消息x和共享密钥K
    • 输出:固定长度的数组,称之为MAC值或认证码
4.1、消息认证码(MAC)是如何实现消息认证的? 杂项|新编密码学——Hash函数
文章图片

4.2、常见的三种MAC构造方式
  • 基于分组密码的MAC
    • CBC-MAC : 认证码的长度 = 分组密码的密文长度
  • 基于序列的MAC
    • ZUC算法:密钥长度可选128,256 (两个算法只在密钥加载 方式及常数设置上有一些的差别)
  • 基于密码hash函数的MAC——HMAC
    • HMAC-MD5
    • HMAC-SHA-1

    推荐阅读