免费智能真题库 > 历年试卷 > 系统分析师 > 2016年上半年 系统分析师 上午试卷 综合知识
  第9题      
  知识点:   安全杂凑算法   认证   认证算法
  关键词:   报文   算法        章/节:   数据安全和保密,加密与解密机制       

 
下列不属于报文认证算法的是(9)。
 
 
  A.  MD5
 
  B.  SHA-1
 
  C.  RC4
 
  D.  HMAC
 
 
 

 
  第7题    2011年上半年  
   59%
某数字签名系统如下图所示。网上传送的报文是(7),如果A否认发送,作为证据的是(8)。

  第8题    2017年上半年  
   58%
假定用户A、B 分别在I1和I2两个CA处取得了各自的证书,( )是A、B互信的必要条件。
  第67题    2011年上半年  
   40%
下列选项中,同属于报文摘要算法的是(67)。
   知识点讲解    
   · 安全杂凑算法    · 认证    · 认证算法
 
       安全杂凑算法
        所谓杂凑算法,就是用散列(Hash)函数(哈希函数、杂凑函数)进行数据的加密。单向Hash函数提供了这样一种计算过程:输入一个长度不固定的字符串,返回一串定长的字符串,这个返回的字符串称为消息摘要(Message Digest, MD),也称为Hash值或散列值。Hash函数主要可以解决以下两个问题:在某一特定的时间内,无法查找经Hash操作后生成特定Hash值的原报文;也无法查找两个经Hash操作后生成相同Hash值的不同报文。这样在数字签名中就可以解决验证签名和用户身份验证、不可抵赖性的问题。
               消息摘要算法
               消息摘要算法(Message Digest algorithm 5, MD5),用于确保信息传输完整一致,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的消息摘要。
               对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
               安全散列算法
               安全散列算法(Secure Hash Algorithm, SHA)能计算出一个数字信息所对应到的,长度固定的字符串(消息摘要),其对长度不超过264位的消息产生160位的消息摘要。SHA是FIPS所认证的五种安全杂凑算法之一。这些算法之所以称作“安全”是基于以下两点:由消息摘要反推原输入信息,从计算理论上来说是很困难的;想要找到两组不同的信息对应到相同的消息摘要,从计算理论上来说也是很困难的;任何对输入信息的变动,都有很高的概率导致其产生的消息摘要不同。
               SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,由美国国家安全局所设计,并由美国国家标准与技术研究院发布,是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协议中广为使用,包括TLS(Transport Layer Security,传输层安全协议)和SSL(Secure Sockets Layer,安全套接字层)、PGP(Pretty Good Privacy)、SSH(Secure Shell,安全外壳)、S/MIME(Secure/Multipurpose Internet Mail Extensions,安全/多功能Internet邮件扩展)和IPSec(Internet Protocol Security,IP协议安全性)等,曾被视为是MD5的后继者。
               MD5和SHA-1算法都已经被我国山东大学王小云教授的研究小组破解。
 
       认证
        认证又分为实体认证和消息认证两种。实体认证是识别通信对方的身份,防止假冒,可以使用数字签名的方法。消息认证是验证消息在传送或存储过程中有没有被篡改,通常使用报文摘要的方法。
               基于共享密钥的认证
               如果通信双方有一个共享的密钥,则可以确认对方的真实身份。这种算法依赖于一个双方都信赖的密钥分发中心(Key Distribution Center,KDC),如下图所示,其中的A和B分别代表发送者和接收者,KAKB分别表示A、B与KDC之间的共享密钥。
               
               基于共享密钥的认证协议
               认证过程如下:A向KDC发出消息{A,KA(B,KS)},说明自己要与B通信,并指定了与B会话的密钥KS。注意,这个消息中的一部分(B,KS)是用KA加密的,所以第三者不能了解消息的内容。KDC知道了A的意图后就构造了一个消息{KB(A,KS)}发给B。B用KB解密后就得到了A和KS,然后就可以与A用KS会话了。
               然而,主动攻击者对这种认证方式可能进行重放攻击。例如A代表雇主,B代表银行。第三者C为A工作,通过银行转账取得报酬。如果C为A工作了一次,得到了一次报酬,并偷听和复制了A和B之间就转账问题交换的报文,那么贪婪的C就可以按照原来的次序向银行重发报文2,冒充A与B之间的会话,以便得到第二次、第三次……报酬。在重放攻击中攻击者不需要知道会话密钥KS,只要能猜测密文的内容对自己有利或是无利就可以达到攻击的目的。
               基于公钥的认证
               这种认证协议如下图所示。A向B发出EB(A,RA),该报文用B的公钥加密。B返回EARARBKS),用A的公钥加密。这两个报文中分别有A和B指定的随机数RARB,因此能排除重放的可能性。通信双方都用对方的公钥加密,用各自的私钥解密,所以应答比较简单。其中的KS是B指定的会话键。这个协议的缺陷是假定双方都知道对方的公钥。
               
               基于公钥的认证协议
 
       认证算法
               报文摘要算法
               使用最广的报文摘要算法是MD5,这是Ronald L. Rivest设计的一系列Hash函数中的第5个。其基本思想就是用足够复杂的方法把报文位充分“弄乱”,使得每一个输出位都受到每一个输入位的影响。具体的操作分成下列几个步骤:
               (1)分组和填充。把明文报文按512位分组,最后要填充一定长度的“1000....”,使得
               报文长度=448(mod 512)
               (2)附加。最后加上64位的报文长度字段,整个明文恰好为512的整数倍。
               (3)初始化。置4个32位长的缓冲区ABCD分别为:
               A=01234567B=89ABCDEFC=FEDCBA98D=76543210
               (4)处理。用4个不同的基本逻辑函数(F,G,H,I)进行4轮处理,每一轮以ABCD和当前512位的块为输入,处理后送入ABCD(128位),产生128位的报文摘要,如下图所示。
               
               MD5的处理过程
               关于MD5的安全性可以解释如下:由于算法的单向性,因此要找出具有相同Hash值的两个不同报文是不可计算的。如果采用野蛮攻击,寻找具有给定Hash值的报文的计算复杂性为2128,若每秒试验10亿个报文,需要1.07×1022年。采用生日攻击法,寻找有相同Hash值的两个报文的计算复杂性为264,用同样的计算机需要585年。从实用性考虑,MD5用32位软件可高速实现,所以有广泛应用。
               安全散列算法
               安全散列算法(The Secure Hash Algorithm,SHA)由美国国家标准和技术协会于1993年提出,并被定义为安全散列标准(Secure Hash Standard,SHS)。SHA-1是1994年修订的版本,纠正了SHA一个未公布的缺陷。这种算法接收的输入报文小于264位,产生160位的报文摘要。该算法设计的目标是使得找出一个能够匹配给定的散列值的文本实际是不可能计算的。也就是说,如果对文档A已经计算出了散列值H(A),那么很难找到一个文档B,使其散列值HB)=HA),尤其困难的是无法找到满足上述条件的,而且又是指定内容的文档B。SHA算法的缺点是速度比MD5慢,但是SHA的报文摘更长,更有利于对抗野蛮攻击。
               散列式报文认证码
               散列式报文认证码(Hashed Message Authentication Code,HMAC)是利用对称密钥生成报文认证码的散列算法,可以提供数据完整性数据源身份认证。为了说明HMAC的原理,假设H是一种散列函数(例如MD5或SHA-1),H把任意长度的文本作为输入,产生长度为L位的输出(对于MD5,L=128;对于SHA-1,L=160),并且假设K是由发送方和接收方共享的报文认证密钥,长度不大于64字节,如果小于64字节,后面加0,补够64字节。假定有下面两个64字节的串ipad(输入串)和opad(输出串)。处理过程如下:
               ipad=0×36,重复64次;
               opad=0×5C,重复64次。
               函数HMAC把K和Text作为输入,产生HMACK(Text)=H作为输出,即:
               (1)在K后附加0,生成64字节的串。
               (2)将第(1)步产生的串与ipad按位异或。
               (3)把Text附加在第(2)步产生的结果后面。
               (4)对第(3)步产生的结果应用函数H
               (5)将第(1)步产生的串与opad按位异或。
               (6)把第(4)步产生的结果附加在第(5)步结果的后面。
               (7)对第(6)步产生的结果引用函数H,并输出计算结果。
               HMAC的密钥长度至少为L位,更长的密钥并不能增强函数的安全性。HMAC允许把最后的输出截短到80位,这样更简单有效,且不损失安全强度。认证一个数据流(Text)的总费用接近于对该数据流进行散列的费用,对很长的数据流更是如此。
               HMAC使用现有的散列函数H而不用修改H的代码,这样可以使用已有的H代码库,而且可以随时用一个散列函数代替另一个散列函数。HMAC-MD5已经被IETF指定为Internet安全协议IPsec的验证机制,提供数据源认证和数据完整性保护。
               HMAC的一个典型应用是用在“提问/响应(Challenge/Response)”式身份认证中,认证流程如下:
               (1)先由客户端向服务器发出一个认证请求。
               (2)服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为提问)。
               (3)客户端将收到的随机数提供给ePass(数字证书的存储介质),由ePass使用该随机数与存储的密钥进行HMAC-MD5运算,并得到一个结果作为证据传给服务器(此为响应)。
               (4)与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行HMAC-MD5运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。
   题号导航      2016年上半年 系统分析师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第9题    在手机中做本题