免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2021年上半年 嵌入式系统设计师 上午试卷 综合知识
  第11题      
  知识点:   信息安全基础   加密   数据报
  关键词:   报文   加密   数据报   数据        章/节:   安全性基本概念       

 
通常使用()为IP数据报文进行加密
 
 
  A.  IPSec
 
  B.  PP2P
 
  C.  HTTPS
 
  D.  TLS
 
 
 

  相关试题:安全性基本概念          更多>  
 
  第20题    2020年下半年  
   77%
在RSA算法中,选择两个质数p=11,q=17,加密密钥为e=23,则解密密钥d为(20)。
  第21题    2020年下半年  
   41%
使用数字证书技术发送一份保密文件时,发送方使用(21)对数据进行加密。
  第67题    2010年下半年  
   75%
公钥体系中,私钥用于(66),公钥用于(67)。
   知识点讲解    
   · 信息安全基础    · 加密    · 数据报
 
       信息安全基础
                      数据加密原理
                      数据加密是防止未经授权的用户访问敏感信息的手段,这就是人们通常理解的安全措施,也是其他安全方法的基础。研究数据加密的科学叫做密码学(Cryptography),它又分为设计密码体制的密码编码学和破译密码的密码分析学。
                      一般的保密通信模型如下图所示。在发送端,把明文P用加密算法E和密钥K加密,变换成密文C,即
                      
                      保密通信模型
                      C=E(K,P)
                      在接收端利用解密算法D和密钥KC解密得到明文P,
                      P=D(K,C)
                      这里加/解密函数ED是公开的,而密钥K(加解密函数的参数)是秘密的。在传送过程中,偷听者得到的是无法理解的密文,而且他得不到密钥,这就达到了对第三者保密的目的。
                      不论偷听者获取了多少密文,如果密文中没有足够的信息可以确定出对应的明文,则这种密码体制是无条件安全的,或称为是理论上不可破解的。在无任何限制的条件下,目前几乎所有的密码体制都不是理论上不可破解的。能否破解给定的密码,取决于使用的计算资源。所以密码专家们研究的核心问题就是要设计出在给定计算费用的条件下,计算上(而不是理论上)安全的密码体制。下面分析简要介绍曾经使用过的和目前正在使用的加密方法。
                      数据加密算法
                      常用的加密算法有DES、IDEA、AES、流加密算法和RC4、RSA算法等。
                             DES(Data Encryption Standard)
                             1977年1月,美国NSA(National Security Agency)根据IBM的专利技术Lucifer制定了DES。明文被分成64位的块,对每个块进行19次变换(替代和换位),其中16次变换由56位密钥的不同排列形式控制(IBM使用的是128位的密钥),最后产生64位的密文块,如下图所示。
                             
                             DES加密算法
                             由于NSA减少了密钥,而且对DES的制订过程保密,甚至为此取消了IEEE计划的一次密码学会议。人们怀疑NSA的目的是保护自己的解密技术,因而对DES从一开始就充满了怀疑和争论。
                             1977年,Diffie和Hellman设计了DES解密机。只要知道一小段明文和对应的密文,该机器就可以在一天之内穷试256种不同的密钥(这叫做野蛮攻击)。
                             三重DES(Triple-DES)是DES的改进算法,它使用两个密钥对报文做三次DES加密,效果相当于将DES密钥的长度加倍,克服了DES密钥长度较短的缺点。本来,应该使用3个不同的密钥进行3次加密,这样就可以把密钥的长度加长到3×56=168位。但许多密码设计者认为168位的密钥已经超过了实际需要,所以便在第一层和第三层中使用相同的密钥,产生一个有效长度为112位的密钥。之所以没有直接采用两重DES,是因为第二层DES不是十分安全,它对一种称为“中间可遇”的密码分析攻击极为脆弱,所以最终还是采用了利用两个密钥进行三重DES加密操作。
                             假设两个密钥分别是K1和K2,其算法的步骤如下:
                             (1)用密钥K1进行DES加密。
                             (2)用K2对步骤(1)的结果进行DES解密。
                             (3)对步骤(2)的结果使用密钥K1进行DES加密。
                             这种方法的缺点是要花费原来三倍的时间,但从另一方面来看,三重DES的112位密钥长度是很“强壮”的加密方式。
                             IDEA(International Data Encryption Algorithm,国际数据加密算法)
                             1990年,瑞士联邦技术学院的来学嘉和Massey建议了一种新的加密算法。这种算法使用128位的密钥,把明文分成64位的块,进行8轮迭代加密。IDEA可以用硬件或软件实现,并且比DES快。在苏黎世技术学院用25MHz的VLSI芯片,加密速率是177MB/s。
                             IDEA经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中得到应用,已经成为全球通用的加密标准。
                             AES(Advanced Encryption Standard,高级加密标准)
                             1997年1月,美国国家标准与技术局(NIST)为高级加密标准征集新算法。最初从许多响应者中挑选了15个候选算法,经过世界密码共同体的分析,选出了其中的5个。经过用ANSI C和Java语言对5个算法的加/解密速度、密钥和算法的安装时间,以及对各种攻击的拦截程度等进行了广泛的测试后,2000年10月,NIST宣布Rijndael算法为AES的最佳候选算法,并于2002年5月26日发布为正式的AES加密标准。
                             AES支持128、192和256位3种密钥长度,能够在世界范围内免版税使用,提供的安全级别足以保护未来20~30年内的数据,可以通过软件或硬件实现。
                             流加密算法和RC4
                             所谓流加密,就是将数据流与密钥生成二进制比特流进行异或运算的加密过程。这种算法采用以下两个步骤:
                             (1)利用密钥K生成一个密钥流KS(伪随机序列)。
                             (2)用密钥流KS与明文P进行“异或”运算,产生密文C
                             
                             解密过程则是用密钥流与密文C进行“异或”运算,产生明文P
                             
                             为了安全,对不同的明文必须使用不同的密钥流,否则容易被破解。
                             Ronald L. Rivest是MIT的教授,用他的名字命名的流加密算法有RC2~RC6系列算法,其中RC4是最常用的。
                             RC代表Rivest Cipher或Ron's Cipher,RC4是Rivest在1987年设计的,其密钥长度可选择64位或128位。
                             RC4是RSA公司私有的商业机密,1994年9月被人匿名发布在因特网上,从此得以公开。这个算法非常简单,就是256内的加法、置换和异或运算。由于简单,所以速度极快,加密的速度可达到DES的10倍。
                             RSA(Rivest Shamir and Adleman)算法
                             这是一种公钥加密算法,方法是按照下面的要求选择公钥和密钥:
                             (1)选择两个大素数pq(大于10100)。
                             (2)令n=p*q、z=(p-1)*(q-1)。
                             (3)选择dz互质。
                             (4)选择e,使e*d=1(modz)。
                             明文P被分成k位的块,k是满足2k<n的最大整数,于是有0≤P
                             C=Pe(modn)
                             这样公钥为(en)。解密时计算
                             P=Cd(modn)
                             即私钥为(dn)。
                             用例子说明这个算法,设p=3,q=11,n=33,z=20,d=7,e=3,C=P3(mod 33),P=C7(mod 33)。则有
                             C=23(mod 33)=8(mod 33)=8
                             P=87(mod 33)=2097152(mod 33)=2
                             RSA算法的安全性基于大素数分解的困难性。如果攻击者可以分解已知的n,得到pq,然后可得到z,最后用Euclid算法,由ez得到d。然而要分解200位的数,需要40亿年;分解500位的数,则需要1025年。
                      认证算法
                             报文摘要算法
                             使用最广的报文摘要算法是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运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。
 
       加密
               保密与加密
               保密就是保证敏感信息不被非授权的人知道。加密是指通过将信息进行编码而使得侵入者不能够阅读或理解的方法,目的是保护数据和信息。解密是将加密的过程反过来,即将编码信息转化为原来的形式。古时候的人就已经发明了密码技术,而现今的密码技术已经从外交和军事领域走向了公开,并结合了数学、计算机科学、电子与通信等诸多学科而成为了一门交叉学科。现今的密码技术不仅具有保证信息机密性的信息加密功能,而且还具有数字签名、身份验证、秘密分存、系统安全等功能,来鉴别信息的来源以防止信息被篡改、伪造和假冒,保证信息的完整性和确定性。
               加密与解密机制
               加密的基本过程包括对原来的可读信息(称为明文或平文)进行翻译,译成的代码称为密码或密文,加密算法中使用的参数称为加密密钥。密文经解密算法作用后形成明文,解密算法也有一个密钥,这两个密钥可以相同也可以不相同。信息编码的和解码方法可以很简单也可以很复杂,需要一些加密算法和解密算法来完成。
               从破译者的角度来看,密码分析所面对的问题有三种主要的变型:①“只有密文”问题(仅有密文而无明文);②“已知明文”问题(已有了一批相匹配的明文与密文);③“选择明文”(能够加密自己所选的明文)。如果密码系统仅能经得起第一种类型的攻击,那么它还不能算是真正的安全,因为破译者完全可能从统计学的角度与一般的通信规律中猜测出一部分的明文,而得到一些相匹配的明文与密文,进而全部解密。因此,真正安全的密码机制应使破译者即使拥有了一些匹配的明文与密文也无法破译其他的密文。
               如果加密算法是可能公开的,那么真正的秘密就在于密钥了,密钥长度越长,密钥空间就越大,破译密钥所花的时间就越长,破译的可能性就越小。所以应该采用尽量长的密钥,并对密钥进行保密和实施密钥管理。
               国家明确规定严格禁止直接使用国外的密码算法和安全产品,原因主要有两点:①国外禁止出口密码算法和产品,目前所出口的密码算法都有破译手段,②国外的算法和产品中可能存在“后门”,要防止其在关键时刻危害我国安全。
               密码算法
               密码技术用来进行鉴别和保密,选择一个强壮的加密算法是至关重要的。密码算法一般分为传统密码算法(又称为对称密码算法)和公开密钥密码算法(又称为非对称密码算法)两类,对称密钥密码技术要求加密解密双方拥有相同的密钥。而非对称密钥密码技术是加密解密双方拥有不相同的密钥。
               对称密钥密码体制从加密模式上可分为序列密码和分组密码两大类(这两种体制之间还有许多中间类型)。
               序列密码是军事和外交场合中主要使用的一种密码技术。其主要原理是:通过有限状态机产生性能优良的伪随机序列,使用该序列将信息流逐比特加密从而得到密文序列。可以看出,序列密码算法的安全强度由它产生的伪随机序列的好坏而决定。分组密码的工作方式是将明文分成固定长度的组(如64比特一组),对每一组明文用同一个密钥和同一种算法来加密,输出的密文也是固定长度的。在序列密码体制中,密文不仅与最初给定的密码算法和密钥有关,同时也是被处理的数据段在明文中所处的位置的函数;而在分组密码体制中,经过加密所得到的密文仅与给定的密码算法和密钥有关,而与被处理的明数据段在整个明文中所处的位置无关。
               不同于传统的对称密钥密码体制,非对称密码算法要求密钥成对出现,一个为加密密钥(可以公开),另一个为解密密钥(用户要保护好),并且不可能从其中一个推导出另一个。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。另外,公钥加密也用来对专用密钥进行加密。
               公钥算法不需要联机密钥服务器,只在通信双方之间传送专用密钥,而用专用密钥来对实际传输的数据加密解密。密钥分配协议简单,所以极大简化了密钥管理,但公共密钥方案较保密密钥方案处理速度慢,因此,通常把公共密钥与专用密钥技术结合起来实现最佳性能。
               密钥及密钥管理
               密钥是密码算法中的可变参数。有时候密码算法是公开的,而密钥是保密的,而密码分析者通常通过获得密钥来破译密码体制。也就是说,密码体制的安全性建立在对密钥的依赖上。所以,保守密钥秘密是非常重要的。
               密钥管理一般包括以下8个内容。
               (1)产生密钥:密钥由随机数生成器产生,并且应该有专门的密钥管理部门或授权人员负责密钥的产生和检验。
               (2)分发密钥:密钥的分发可以采取人工、自动或者人工与自动相结合的方式。加密设备应当使用经过认证的密钥分发技术。
               (3)输入和输出密钥:密钥的输入和输出应当经由合法的密钥管理设备进行。人工分发的密钥可以用明文形式输入和输出,并将密钥分段处理;电子形式分发的密钥应以加密的形式输入和输出。输入密钥时不应显示明文密钥。
               (4)更换密钥:密钥的更换可以由人工或自动方式按照密钥输入和密钥输出的要求来实现。
               (5)存储密钥:密钥在加密设备内采用明文形式存储,但是不能被任何外部设备访问。
               (6)保存和备份密钥:密钥应当尽量分段保存,可以分成两部分并且保存在不同的地方,例如一部分存储在保密设备中,另一部分存储在IC卡上。密钥的备份也应当注意安全并且要加密保存。
               (7)密钥的寿命:密钥不可以无限期使用,密钥使用得越久风险也就越大。密钥应当定期更换。
               (8)销毁密钥:加密设备应能对设备内的所有明文密钥和其他没受到保护的重要保护参数清零。
 
       数据报
        对于短报文来说,一个报文分组就足够容纳所传送的数据信息。一般单个报文分组称数据报(Datagram)。数据报的服务以传送单个报文分组为主要目标。原CCITT研究组把数据报定义为,能包含在单个报文分组数据域中的报文,且传送它到目标地址与其他已发送或将要发送的报文分组无关,这样报文分组号可以省略。也就是说,每个分组的传送是被单独处理的,它本身携带有足够的信息。
        数据报的一般格式如下表所示:
        
        数据报格式
        发送数据报与发送信件和邮包一样。在数据报服务控制下,网络接受来自源的单一报文分组,并独立地传到目的点。数据报服务是无连接的服务。
   题号导航      2021年上半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第11题    在手机中做本题