应用密码学习题答案7

  • 格式:doc
  • 大小:244.50 KB
  • 文档页数:2

《应用密码学》习题和思考题答案

第7章 HASH函数和消息认证

7-1 什么是HASH函数?对HASH函数的基本要求和安全性要求分别是什么?

答:HASH函数是一种单向密码体制,即它是一个从明文到密文的不可逆映射,只有加密过程,不能解密。HASH函数可以将任意长度的输入经过变换以后得到固定长度的输出。

HASH函数的基本要求:①算法公开,不需要密钥。②有数据压缩功能,能将任意长度的输入转换成一个固定长度的输出。③容易计算。即给出消息M,要计算出该消息的散列值hM是容易的。

HASH函数的安全性要求:①给定消息的散列值hM,要求出M是计算上不可行的。

②给定消息M和其散列值hM,要找到另一个与M不同的消息M,使得它们的散列值相同是不可能的(即抗弱碰撞性)。

③对于任意两个不同的消息M和M,它们的散列值不可能相同(即抗强碰撞性)。

7-2 安全HASH函数的一般结构是什么?

答:安全HASH函数的一般结构如下图所示。

图7-1 安全散列函数的一般结构压缩函数输出变换填充,附加位长度等fftM1M2M1H2HhMgtH„„„„消息MIV0H即

7-3 为什么要进行HASH填充?

答:HASH函数的处理是以分组为单位,在生成散列值之前,在对输入消息进行分组时,如果最后一块报文不足r位,就要进行填充。

7-4 HASH函数的主要应用有哪些?

答:HASH函数的主要应用有:数字签名、生成程序或文档的“数字指纹”、用于安全存储口令。

7-5 简述散列算法的设计方法及其分类。

答:散列算法的设计主要可分为三大类: (1)基于模数运算

这种设计方法是使用公开密钥算法来设计单向散列函数。通常可以使用CBC模式基于公开密钥算法对消息进行加密,并输出最后一个密文分组作为散列值。如果丢弃用户的密钥,这时的散列值将无法解密,也就是说,它满足了散列函数的单向性要求。一般情况下它的计算速度十分的慢,实用性差。

(2)基于分组加密

就是用对称分组算法设计单向散列函数。同样可以使用对称分组算法的CBC模式或CFB模式来产生散列值。它将使用一个固定的密钥及IV加密消息,并将最后的密文分组作为散列值输出。这类设计已经提出了一些方案,如MDC-2和MDC-4等。

(3)定制的

这类单向散列函数并不基于任何假设和密码体制,而是通过直接构造复杂的非线性关系达到单向要求,设计单向散列函数。这类算法典型的有:MD2、MD4 、MD5、SHA-1、PIPEMD-160等算法。

7-6 编写程序实现SHA-1?

略。

7-7 什么是消息认证?为什么要进行消息认证?消息认证的实现方法有哪些?

答:消息认证是使目标消息接收者能够检验收到的消息是否真实的认证方法。

消息认证的目的主要有两个:第一,验证信息的来源是真实的,而不是伪造的,此为信息源认证;第二,验证信息的完整性,即验证信息在传送或存储过程中未被篡改、重放或延迟等。

任何认证系统在功能上划分为两个层次:底层的认证函数产生一个用来认证消息的认证标识,上层的认证协议基于认证标识提供了一种能使接收方验证消息真实性的机制。认证函数分为三类:

(1) 消息加密函数:用整个消息的密文作为对消息进行认证的认证标识。

(2) 消息认证码MAC:是以消息和密钥作为输入的公开函数,产生定长的输出,并以此输出值作为认证标识。

(3) 散列函数:是一个不需要密钥的公开函数,它将任意长度的输入消息映射成一个固定长度的输出值,并以此值作为认证标识。

7-8 什么是认证协议?举例说明单向认证和双向认证。

答:认证协议就是能使通信各方证实对方身份或消息来源的通信协议。

例略。