《应用密码学》胡向东版习题和思考题答案

(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 什么是认证协议?举例说明单向认证和双向认证。

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

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

第8章 数字签名

8-1 数字签名有什么特殊性?

答:电子文档的物理载体表现为电磁信号、所携带的文字符号以二进制编码的逻辑形式存在,可以任意分割、复制而不被察觉,且数字信息本身没有个性特征,如果按照传统方式进行电子文档的签名,签名本身将很容易被伪造和重用,完全达不到签名的目的。 8-2 数字签名的性质是什么?

答:数字签名应该具有以下性质:

(1)签名是对文档的一种映射,不同的文档内容所得到的映射结果是不一样的,即签名与文档具有一一对应关系;(精确性)

(2)签名应基于签名者的唯一性特征(如私钥),从而确定签名的不可伪造性和不可否认性;(唯一性)

(3)签名应该具有时间特征,防止签名的重复使用。(时效性) 8-3 对数字签名的要求是什么? 答:数字签名的设计要求:

(1)签名必须是依赖于被签名信息的一个位串模板,即签名必须以被签名的消息为输入,与其绑定;

(2)签名必须使用某些对发送者是唯一的信息。对发送者唯一就可以防止发送方以外的人伪造签名,也防止发送方事后否认;

(3)必须相对容易地生成该数字签名,即签名容易生成; (4)必须相对容易地识别和验证该数字签名;

(5)伪造数字签名在计算复杂性意义上具有不可行性,既包括对一个已有的数字签名构造新的消息,也包括对一个给定消息伪造一个数字签名; (6)在存储器中保存一个数字签名副本是现实可行的。 8-4 数字签名的基本原理什么?

答:一个数字签名方案由两部分组成:带有陷门的公开签名算法和验证算法。公开签名算法是一个由密钥控制的函数。对任意一个消息x,一个密钥k,签名算法产生一个签名

y?sigk(x),算法是公开的,但密钥是保密的,这样,不知道密钥的人不可能产生正确的

签名,从而不能伪造签名。验证算法ver(x,y)也是公开的,它通过ver(x,y)?true或false来验证签名。

8-5 分类说明数字签名的实现方法及其特点。

答:最基本的数字签名有基于对称密钥密码算法和基于公开密钥密码算法两种。 (1)基于对称密钥密码算法的数字签名方法

这种方法的本质是共享密钥的验证。基本形式是:用户A与B共享对称密钥密码体制的密钥k,要签名的消息为m。则签名算法就是加密算法:

y?sigk(m)?Ek(m)

发送方向验证方发送(m,y)。 验证算法就是解密算法:

ver(m,y)?true?m?Dk(y)

或加密算法:

ver(m,y)?true?y?Ek(m)

这个方法隐含着用户A、B都知道k和m,才能验证消息。这种方法不具有“唯一性”特征,不是严格意义上的数字签名。这种签名算法主要用于防止通信双方A、B之外的人进行伪造,但对A、B间的欺骗(如伪造签名)将无能为力,因为他们共享了密钥k。 (2)基于公钥密码算法的数字签名方法

基于公钥密码算法的数字签名方法本质上是公钥密码加密算法的逆应用。此时发送方用自己的私钥对消息进行加密,接收方收到消息后用发送方的公钥进行解密,由于私钥由发送方自己保管且只有他本人知道,入侵者只知道发送者的公钥,不可能伪造签名,从而起到签名的效果。公正的第三方可以用发送方的公钥对签名的消息进行解密,从而证实消息确实来自于该发送者。

使用公钥密码体制:用户A选定私钥KRa、公钥KUa,加解密算法分别为E,D,将KRa保密,称为签名密钥;将KUa公开,称为验证密钥,则签名和验证过程为:

设用户A要向用户B发送消息m,用户A用自己的私钥加密(签名)消息m:

y?EKRa(m),向B发送(m,y);用户B用A的公钥解密 (验证)签名:

ver(m,y)?True?m?EKUa(y)

8-6 直接数字签名和可仲裁数字签名的区别是什么?

答:直接数字签名是只涉及到通信双方的数字签名。为了提供鉴别功能,直接数字签名一般使用公钥密码体制。

可仲裁数字签名在通信双方的基础上引入了仲裁者的参与。通常的做法是所有从发送方X到接收方Y的签名消息首先送到仲裁者A,A将消息及其签名进行一系列测试,以检查其来源和内容,然后将消息加上日期(时间戳由仲裁者加上),并与已被仲裁者验证通过的签名一起发给Y。仲裁者在这一类签名模式中扮演裁判的角色。前提条件:所有的参与者必须绝对相信这一仲裁机制工作正常。

8-7 当需要对消息同时进行签名和保密时,它们应以何种顺序作用于消息?为什么? 答:应先签名后加密。否则,攻击者可能伪造签名。(参考第6.3节RSA签名部分)。 8-8 DSA中,如果签名产生过程中出现s?0,则必须产生新的k并重新计算签名,为什么?

答:0元素没有逆,不能按照DSA签名算法完成签名。 8-9 举例说明DSA的签名和验证过程。 略。

8-10 编写程序实现DSA。 略。

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

第9章 密钥管理

9-1 为什么要进行密钥管理?

答:密码学中密钥作为密码变换的参数,通过加密变换操作,可以将明文变换为密文,或者通过解密变换操作,将密文恢复为明文。密钥管理就是在授权各方之间实现密钥关系的建立和维护的一整套技术和程序。密钥管理负责密钥从产生到最终销毁的整个过程,包括密钥的生成、存储、分配、使用、备份/恢复、更新、撤销和销毁等。密钥管理作为提供机密性、实体认证、数据源认证、数据完整性和数字签名等安全密码技术的基础,在整个密码学中占有重要的地位。

9-2 密钥的种类有哪些?

答:按照所加密内容的不同,密钥可以分为用于一般数据加密的密钥(即会话密钥)和用于密钥加密的密钥,密钥加密密钥又可分为一般密钥加密密钥和主密钥。 9-3 为什么在密钥管理中要引入层次式结构?

答:层次化的密钥结构意味着以少量上层密钥来保护大量下层密钥或明文数据,这样,可保证除了主密钥可以以明文的形式基于严格的管理受到严密保护外(不排除受到某种变换的保护),其他密钥则以加密后的密文形式存储,改善了密钥的安全性。层次化的密钥结构具有安全性强、可实现密钥管理的自动化的优点。

联系客服:779662525#qq.com(#替换为@)