• 网络安全笔记4——消息认证与杂凑函数


    网络安全笔记4——消息认证与杂凑函数

    参考课程:中国大学MOOC《网络安全》——北京航空航天大学

    消息认证

    认证(authentication)

    • 保密性(confidentiality) → 加密机制
      ➢其他人看不懂消息的内容
    • 真实性(authenticity) → 认证机制
      ➢消息内容的完整性
      ➢消息内容的真实性
      ➢消息来源的真实性
      ➢实体身份的真实性

    认证方式的分类

    • 通信双方相互信任的认证(如企业内部人员之间)
      对称认证( symmetric authentication)
      主要防止来自第三方的攻击
      例如检查文件是否被人修改过

    • 通信双方相互不信任的认证(如商业伙伴之间)
      非对称认证( asymmetric authentication)
      主要防止来自对方的攻击
      例如查验收到的文件是否真实

    杂凑函数

    信息的真实性可以通过验证一个数据的短烙印(imprint) 或Hash值的真实性来确认。

    • Hash函数来源于计算机技术:将任意串压缩成定长的比特串。
    • Hash函数的一些常见称谓:
      中文:杂凑函数、散列函数、哈希函数。
      英文: hash code, hash total, hash result, imprint, checksum, compression, compressed encoding, authenticator, fingerprint, Message Integrity Code, message digest.
    • 常见的hash函数有MD5、SHA、SM3(国产)

    单向杂凑函数

    杂凑(Hash)函数是将任意长的数字串m映射成以个较短定长输出数字串的函数,我们关心的通常是单向杂凑函数

    y = H(x)可将任意长度的x变换成固定长度的y,并满足:

    1. 快速性:任给x,计算y = H(x)容易;
    2. 单向性:任给y,由y = H(x)计算x困难;
    3. 无碰撞:寻找x1≠X2, 满足H(x1) = H(x2)是困难的。

    杂凑函数的性质

    • 变量x可以是任意长度, 而H(x)的结果具有固定的长度n bits (如64b/80b/ 160b等);
    • 抗原象攻击:已知一个杂凑值y,找一个输入串x,使得y= H(x)在计算上不可行;
    • 抗碰撞攻击:找两个输入x1和x2(x1 ≠ x2),使得H(x1) = H(x2)在计算上不可行。

    在这里插入图片描述

    • 算法特点:不定长度输入,固定长度输出(MD5输出为16字节、 SHA-1输出长度为20字节)。
    • 雪崩效应:若输入发生很小的变动,则可引起输出较大变动。
    • 完全单向:已知输出无法推算出输入,已知两个输出的差别无法推算出输入的差别。

    抗碰撞杂凑函数

    强单向杂凑函数 VS 弱单向杂凑函数

    1. 若杂凑函数H(x)是单向的,则称其为单向杂凑函数。
    2. 给定单向杂凑函数H(x),对任意给定M,其杂凑值h = H(M),要找出另外一个M’,使h = H(M’)在计算上不可行,则称H(x)为弱单向杂凑函数
    3. 给定单向杂凑函数H(x),若要找到任意一对输入M1、M2,且M1≠M2,使H(M1) = H(M2)在计算.上不可行,则称H(x)为强单向杂凑函数

    Hash码的分类

    • 校验和CRC: Cyclic Redundancy Check
      即循环冗余校验码,是数据通信中常用的一种差错校验码
    • 消息认证码MAC: Message Authentication Code
      MAC算法是有密钥参与杂凑运算的算法
    • 消息检测码MDC: Message Detection Code
      MDC算法是无密钥参与杂凑运算的算法
    • 无碰撞性Hash函数: Collision-Free Hash Function
      无碰撞的Hash函数是存在的,但在实际中很难找到它们

    消息认证码(MAC)与消息检测码(MDC)

    消息认证码MAC

    MAC也称为密码校验和,它由下述函数产生

    • MAC = H(m||k) (||表示首尾拼接)
    • 其中,m是一个变长的消息,k是收发双方共享的密钥,H(m||k)是定长的认证符

    发送者:
    将消息m和此认证符一起发给接收者:{m, H(m||k)}

    接收者:
    接收者在收到消息m’之后,计算:MAC’ = H(m’||k)
    比较MAC’与MAC是否相等
    若相等,则说明消息未被篡改;
    若不等,则说明消息被改动了。

    • 消息的真实性依赖于共享密钥的真实性和保密性。
    • 任何拥有这一密钥的人均可以验证该消息的真实性。
    • 对消息真实性的保护已经转化成安全地在通信双方之间建立共享密钥的问题。

    消息检测码MDC

    MDC也称为篡改检测码,它由下述函数产生

    • MDC = H(m)
    • 其中,m是一个变长的消息,H(m)是定长的杂凑函数值作为认证符。

    发送者:
    将消息m和此认证符一起发给接收者:{m, H(m)}

    接收者:
    接收者在收到消息m’之后,计算:MDC’ = H(m’)
    比较MDC’与MDC是否相等
    若相等,则说明消息未被篡改;
    若不等,则说明消息被改动了。

    • 如果采用MDC,消息的真实性就转化成检验一个固定长度比特串的真实性(不需共享密钥),即MDC = H(m) ;
    • 需要认证信道传输MDC:发送者需要将MDC通过一特定的信道传送给对方。例如,发送者可以打电话告诉对方MDC值。而这个消息的真实性依赖于电话中对于发送者声音的确认。

    若消息很长,MDC可以用迭代方法构造

    迭代Hash函数

    1. 信息X被分为t个分组: X1,X2,…Xt (如必要,需填充补位padding)
    2. 计算: h0=IV(初始化向量),hi=f(Xi,hi-1),…, H(X)=g(ht)
      H为Hash函数,f为轮函数,g为输出变换
      IV (初始值)和padding(填充)将对安全有重要影响

    杂凑函数的基本应用方式

    1. 既提供保密性,又提供消息认证

    在这里插入图片描述

    • 提供保密性:只有Alice和Bob共享密钥K;
    • 提供认证:H(M)受密码保护。

    2. 仅提供消息认证

    在这里插入图片描述

    • 提供认证:H(M)受密码保护。

    3. 既提供消息认证,又提供数字签名

    在这里插入图片描述

    • 提供数字签名:只有Alice能产生SKsA[H(M)];
    • 提供认证: H(M)受密码保护

    4. 既提供保密性,又提供消息认证和数字签名

    在这里插入图片描述

    • 提供保密性: 只有Alice和Bob共享密钥K;
    • 提供数字签名:只有Alice能产生SKsA[H(M)];
    • 提供认证: H(M)受密码保护

    5. 仅提供消息认证

    在这里插入图片描述

    • 提供认证:只有Alice和Bob共享随机状态S

    6. 既提供保密性,又提供消息认证

    在这里插入图片描述

    • 提供保密性:只有Alice和Bob共享密钥K;
    • 提供认证:只有Alice和Bob共享随机状态S

    常用杂凑函数

    MD系列杂凑函数介绍

    MD(Message-Digest Algorithm)

    Ron Rivest设计的杂凑函数系列

    • MD2[RFC1319],已被Rogier等于1995年攻破;
    • MD4[RFC1320],已被攻破;
    • MD5是MD4的改进型[RFC1321],被王小云攻破。

    • MD5的Hash值长度为128bits;
    • MD5被标准化组织IETF接纳并获得广泛应用;
    • 但是,目前MD5已经过时,不能再使用。

    SHA系列杂凑函数

    SHA(Secure Hash Algorithm)

    • NIST和NSA为配合DSS,设计了安全杂凑标准(SHS),其算法为SHA[FIPS PUB 180],修改的版本被称为SHA-1[FIPS PUB 180-1]。
    • SHA/SHA-1采用了与MD4相似的设计准则,其结构也类似于MD4,但其输出为160bit。
    • Google于2017年2月公布了一个攻破SHA-1算法的实例,因此国内外正转向使用SHA-256和SHA-512算法。

    中国商用密码SM3算法

    2010年,国家密码管理局颁布了中国商用密码杂凑函数SM3。SM3是 一种采用Merkle-Damgard结构的杂凑函数。国家密码管理局公告(第22号) 详细描述SM3密码杂凑算法。

    特点:

    1. 消息分组512比特,输出杂凑值256比特,采用Merkle-Damgard结构。
    2. SM3的压缩函数与SHA-256的压缩函数结构相似,但是SM3更复杂。
    3. SM3算法具有快速扩散能力,能抵抗各种已知攻击,具有很高的安全性。

    SHA与MD4、MD5的比较

    在这里插入图片描述

  • 相关阅读:
    在ubuntu上使用wireshark对some/ip协议进行抓包
    CentOS Install Passenger for ROR
    深兰科技轮腿家用AI机器人荣获“2023年度城市更新科创大奖”
    QT: 串口通信主站阻塞式实现
    IGH码云克隆包
    python 自定义异常/raise关键字抛出异常
    K8s Deployment挂载ConfigMap权限设置
    黑马头条项目环境搭建
    理清Spring事务的核心关键类
    并发-Java中的锁(二)--- 重入锁ReentrantLock,公平锁,非公平锁笔记
  • 原文地址:https://blog.csdn.net/shn111/article/details/126161495