密码学复习-4 认证、数字签名
哈希函数:h=H(M)
其中M是变长的消息,h是定长的哈希值
Hash函数的目的是为文件、消息、其他分组数据产生指纹。
Hash函数用于消息认证时,Hash函数值通常称为消息摘要。
消息认证:就是验证消息的完整性。它包含两层含义:验证消息的发送者是真正的而不是冒充的;验证消息在传送过程中未被篡改、重放、延迟。
消息认证码(带秘钥的hash函数):MAC,也称为密码检验和,由如下形式的函数C生成
MAC=CK(M),其中M是变长的消息,K是收发双方共享的密钥,CK(M)是定长的认证码
Hash函数:H将可变长度的数据块作为输入,产生固定长度的Hash值:h=H(M)
抗弱碰撞:对于给定的任何分组X,寻找X不等于Y,使得H(X)=H(Y)在计算上是不可行的。
抗强碰撞:对于任何的(X,Y)偶对,寻找H(X)=H(Y)在计算上是不可行的。
如果一个Hash函数是抗强碰撞的,那么也是抗弱碰撞的。
对一个长度为n的hash码
单向
弱抗碰撞
强抗碰撞
消息认证是为了对付哪些类型的攻击?
重复、重组、冒充、篡改。
生成消息认证的方法有哪些?
对报文进行加密,对整个报文消息作为鉴别符。
消息认证码
hash函数
设H(M)是一个抗弱碰撞的Hash函数,将任意长度消息映射为定长的n位Hash值。对于所有的消息x,x’≠x,都有H(x)≠H(x’)。
上述说法是否正确?
这是错误的,这样的函数不是1对1的,因为函数的输入数量是任意的,但是函数的输出的数量是,因此有多个输入映射到相同的输出。
利用加密算法RSA构造Hash函数 给定两个分组消息B1和B2,其Hash码为RSAH(B1,B2)=RSA(RSA(B1)⊕B2)。
试分析该Hash函数是否满足抗弱碰撞性?
C2=RSA(C1)⊕RSA(B1)⊕B2
RSAH(C1,C2)=RSA(RSA(C1)⊕RSA(C1)⊕RSA(B1)⊕B2)=RSA(RSA(B1)⊕B2)=RSAH(B1,B2 ),所以不满足抗弱碰撞性。
Hash算法:MD5、SHA1
MD5:输入是按512 bit的分组进行处理的,产生一个128 bit的消息摘要作为输出。
SHA1:输入是按512 bit的分组进行处理的,最后产生的输出是一个160 bit的消息摘要。
网络环境下面临的安全威胁:
1. 泄露
2. 通信量分析
3. 伪装
4. 内容篡改
5. 序号篡改
6. 计时篡改
7. 抵赖
MAC算法的攻击路线:
攻击密钥空间—确定MAC密钥
攻击强度—如果密钥的长度为k bit,则约为
攻击MAC值—对给定的消息产生有效的MAC值或找到与给定MAC值匹配的消息
攻击强度—如果MAC的长度为n bit,则约为
总结:对MAC算法强行攻击的有效级可以表示为(,)中的最小值。
数字签名:只有信息的发送者才可以产生的别人无法伪造的一段数字串。
发送方用自己的私钥进行数字签名
接收方用发送方的公钥验证数字签名
签名是基于消息摘要实施的
数字签名应满足以下三个条件:
签名者事后不能抵赖自己的签名
任何其他人不能伪造签名
能由第三方仲裁以解决争执
时间戳:产生数字签名的时间。
列出消息认证中出现的两种争议。
接收方可以伪造一条信息说是发送方发送的;发送方也可以否认发送过信息。
数字签名应具有哪些性质?
- 它必须能够在签名时对内容进行身份验证。
- 必须能被第三方核查,以解决争议。