信息安全概论:Hash函数概念与性质

信息安全除了要保障信息的机密性外,还要保障信息在存储、使用、传输过程中不被非法篡改,即信息的完整性。 Hash函数可以将“任意长度“的输入经过变换以后得到固定长度的输出,也称为消息摘要。 消息摘要能有用于完成消息的认证功能,消息认证是保证信息完整性的重要措施。 Hash函数也成散列函数、哈希函数、杂凑函数等,是密码学的一个重要分支,Hash函数可以看做是一种单向密码体制,即它是从一个明文到密文的不可逆映射,即只有加密过程,不能解密。

Hash函数的基本概念 Hash函数的单向特征和输出数据长度固定的特征使得它可以生成消息或其他数据块的“数据指纹”(消息摘要或hash值),用于消息认证和数字签名等区域。 hash值的生成过程可以表示为h=H(M),其中M是“任意”长度的消息,H是hash函数,h是固定长度的hash值。

    H可以用于“任意”长度的消息,“任意”是指实际存在的 H产生的hash值是固定长度的,这是hash函数的基本性质 对于任意给定的消息M,容易计算H(M)值,这是要求hash函数的可用性。

Hash函数的性质

    抗第一原像(单向性):对于给定的hash值h,要找到M使得H(M)=h在计算上是不可行的 抗第二原像(抗弱碰撞性):对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的 抗强碰撞性:找任意一对不同消息M1、M2,使H(M1)=H(M2)在计算上是不可行的

hash函数结构 hash函数的设计主要分为两类:

    基于加密体制实现,例如使用对称分组密码算法的CBC模式来产生hash值 直接构造复杂的非线性关系实现单向性,是目前使用较多的设计方法

典型的hash算法中著名的是MD系列和SHA系列

消息认证技术

消息认证码的实现过程

由于消息在发送过程中是明文形式,所以只提供认证性而未提供保密性 提供保密性可在生成MAC之后或之前进行一次加密,而且加密密钥也需被收发双方共享 通常希望直接对明文进行认证,因此先计算MAC再加密的使用方式更为常用 MAC算法与加密算法类似,不同之处是MAC不必是可逆的,因此与加密算法相比更不易被攻破

生成消息认证码的方法主要包括:基于加密函数的认证码和基于hash的认证码

经验分享 程序员 微信小程序 职场和发展