网络安全基础(八)

    技术2025-12-03  15

    1.一种最简单散列函数的每一个数据块都按比特异或。为什么对于这种散列函数的有效性为1-2-n(数据出错却不改变散列值的概率是 2−n)? 正确答案:

    答:因为每个 n 比特的散列值都有相同的出错概率1/2,所以数据出错却不改变散列值的概率是 2−n,,因此判断消息完整性正确的概率(即有效的概率)为1-2-n。

    2.一种最简单散列函数的每一个数据块都按比特异或。为什么对于这种散列函数随着可预测的格式化数据增多,函数的有效性越来越差? 正确答案:

    答:如:在大多数标准的文本文件中,每个 8 位字节的高阶比特总是0。如果使用 128 比特的散列值,则作用于该类型数据块的散列函数的有效(数据出错却不改变散列值)概率为1-2-112而不是1-2-128。

    3.消息认证码常见的构建方法有哪些? 正确答案:

    这里是引用 答:两种方法: 1)散列函数+密钥(加密密钥或当作秘密值) 2)直接用分组加密算法

    4.散列函数加上密钥来构建MAC有以哪些优势? 正确答案:

    答:散列函数(如SHA-1)加上密钥开发MAC有以下优势: 采用软件实现时,加密散列函数执行速度比传统密码算法(如DES)快。 有许多共享的密码学Hash函数代码库。

    5.HMAC中为什么要把散列函数当成一个“黑盒”? 正确答案:

    答:HMAC把散列函数当成一个“黑盒”。两个优点: 实现HMAC时现有的散列函数可以用作一个模块。这样,已经预先封装的大量HMAC代码可以不加修改地使用。 如果想替换一个HMAC实现中的特定散列函数,所需做的只是除去现有的散列函数模块,放入新模块。如果需要更快的散列函数时就可以这样操作。更为重要的是,如果嵌入式散列函数的安全性受到威胁,可通过简单地用更加安全的模块取代嵌入式散列函数,从而保证了HMAC的安全。

    6.请说明HMAC对消息的分组方案及安全性。 正确答案:

    答:HMAC对消息的分组方案取决于嵌入其中的散列函数的分组方案。 其安全性也取决于嵌入其中的散列函数的安全性,如果能提供有一定合理性的抗密码分析强度的嵌入式散列函数,就能够证明HMAC是安全的。

    7.HMAC 正确答案:

    把密钥合并到现有的散列算法中形成消息认证码。具体方法是:不必修改而直接将现有的散列函数嵌入到此算法中(把散列函数当成一个“黑盒”)。特别是很容易免费得到软件上执行速度较快的散列函数及其代码。

    8.MD5 正确答案:

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

    9.安全散列函数 正确答案:

    安全散列函数SHA是基于散列函数MD4,并且其构架跟 MD4高度相仿。截止到2005年,SHA或许是最后仅存的标准散列算法。

    10.SHA-1 正确答案:

    SHA由NIST开发,并在1993年公布成为FIPS。当人们发现SHA中也存在缺陷之后,FIPS 180的修订版本FIPS180-1于1995年公布出来,通常称为SHA-1。现行的标准文献被命名为“安全散列标准”。RFC3174中也列出了SHA-1,但它实质上是FIPS 180-1的复制品,只是增加了C语言代码实现。SHA-1生成的160比特的散列值。

    11.一种最简单散列函数的每一个数据块都按比特异或。对这种散列算法的改进方法是:在每个数据块处理后,对散列值循环移动或翻转1比特。改进后再用加密算法加密散列值,但当加密散列码和明文消息一起使用时,仍然很容易篡改消息内容而不会被发现。请说明这种攻击的原理。 正确答案:

    答:给定消息,很容易生成新的具有相同散列码的消息,具体方法:简单地准备希望替换的消息,然后附加上n比特的数据块,根据消息每组中相同位累计篡改的次数,如果呈奇数,则这n比特的数据块的相应位为1,否则为0,这样就迫使新消息连同该数据块生成原消息的散列码。当然验证时是不会被发现的。

    12.一种最简单散列函数的每一个数据块都按比特异或。如果连同散列码一起加密消息,是否可以达到很好的认证效果? 正确答案:

    答:仍有篡改消息密文而不会被散列码检测到的方法。例如,根据CBC定义,有: X1=IV⊕D(K,Y1) Xi=Ci-1⊕D(K,Yi) XN+1=CN⊕D(K,YN+1) 但散列码XN+1: XN+1=P1⊕P2 ⊕ … ⊕ Pn =[IV⊕D(K,Y1)]⊕[Y1⊕D(K,Y2)]⊕…⊕[YN-1⊕D(K,YN)] 因为上述等式中的项可以按任意顺序进行异或,所以如果对密文分组进行置换则散列码不变。 如:将第1组与第2组密文置换 [IV⊕D(K,Y1)]⊕[Y1⊕D(K,Y2)]⊕…⊕[YN-1⊕D(K,YN)] =[IV⊕D(K,Y2)]⊕[Y1⊕D(K,Y1)]⊕…⊕[YN-1⊕D(K,YN)]

    13.试用代数式表示HMAC算法,并用文字加以说明 正确答案:

    HMAC可用下式表示: HMAC(K, M)=H[(K+⊕opad)ǁH[(K+⊕ipad) ǁM]] 该算法描述如下: (1)在K的左端追加0构成b比特的字符串K+(如K的长度为160比特,b=512, K 将被追加44个0字节0x00)。 (2)ipad与K+进行XOR生成b比特的分组Si。 (3) 将M追加在Si上。 (4) 将H应用于步骤(3)所产生的数据流。 (5) opad与K+进行XOR生成b比特的分组S0。 (6) 将步骤(4)产生的散列结果追加在S0上。 (7)将H应用于步骤(6)产生的数据流,输出结果。

    14.考虑将32比特的散列函数定义为两个16比特散列函数的串接:XOR和RXOR简单的散列函数(这种简单散列函数定义为:每一个数据块都按比特异或)。 a. 这种校验和能检测到所有奇数个错误比特所造成的错误吗?请解释。 b. 这种校验和能检测到所有偶数个错误比特所造成的错误吗?如果不能,说明造成校验和失败的错误特征。 c.评价这种函数用作散列函数进行认证的效率。 正确答案:

    答:a. 是的。 XOR函数是垂直奇偶校验。 如果有奇数个错误,那么必须至少有一个列包含奇数个错误,以及奇偶校验位数据。 如果有奇数个错误,那么必须至少有一个螺旋包含奇数个错误,该螺旋的奇偶校验位将检测到该错误。 b. 不。当XOR和RXOR函数都失败时,校验和将无法检测到偶数错误。 为了使两者都失败,错误位的模式必须位于两者之间的交点 奇偶螺旋和奇偶列,使得每个奇偶列中有偶数个错误位,每个螺旋中有偶数个错误位。 c.它太简单,不能用作安全哈希函数;找到具有相同哈希函数的多个消息将太容易。

    15.当消息的长度分别为以下值的时候,计算在SHA-512中填充域的值: a.1919比特 b. 1920比特 c. 1921比特 正确答案:

    答:a.1bit b. 1024 bits c. 1023 bits

    16.当消息的长度分别为以下值的时候,计算在SH A-512中长度域的值; a.1919比特 b.1920比特 c.1921比特 正确答案:

    答:a. 1919 b. 1920 c. 1921

    17.a.考虑下面的散列函数。消息是一列十进制数字:M=(a1,a2,…,at)。对于某一预先定义的值n,计算散列值 。该散列函数能满足3.4节列出的关于散列函数的一些要求吗?请解释你自己的回答。 b.当散列函数 时,重做(a)。 c.当M=(189,632,900,722,349)和n=989时,计算(b)的散列函数。

    正确答案:

    答:a. 它满足性质I通过3,但不满足剩余性质。 例如,对于属性4,由值h组成的消息满足H(h)-。 h.对于属性5,请接受任何消息M和a 将十进制数字“0”转换为序列;它将具有相同的哈希值。 b. 它满足性质I到3。如果n是一个大的复合数,则性质4也是满足的,因为取平方根模这样的整数n被认为是不可行的。 属性 不满足5和6,因为-M将具有与M相同的值。 c.955.

    Processed: 0.019, SQL: 9