第一部分 内容提要
1 引论
OSI:开发系统互联中的安全结构,提供了定义安全攻击、安全机制和安全服务的框架;
安全攻击:主动和被动攻击。被动攻击包括非授权阅读消息、文件以及流量分析;主动攻击包括对消息或文件的修改以及拒绝服务。
安全机制:一种处理过程,用来检测、阻止攻击或从被攻击的状态中恢复的机制。包括:加密算法、签名算法和认证协议。
安全服务:包括认证、访问控制、数据保密性、数据完整性、不可否认新以及可用性。 分析一个信息系统的安全问题:
注脚:对任何一个信息系统,系统安全方面的分析思路是:设定系统的安全需求,分析可能的攻击,配置相应的安全服务以满足需求,根据安全机制开发设计或者集成构建安全服务。
2 传统密码
对称密码是一种加密和解密使用相同密钥的体制,也称为传统密码。
对称密码利用密钥和加密算法将明文变为密文。运用相同的密钥将密文恢复成明文。
对密码的两种攻击方法:对密钥的穷举攻击(要求明文有结构和意义);对加密算法的密码分析,发现其缺陷降低i密钥攻击和难度。
传统对称密码:采用代换和置换技术。代换将明文元素映射为密文元素。置换将明文元素的位置进行系统的置换。转轮机是计算机出现前使用代换技术的复杂密码设备。
注脚:置换和代换是两种最基本的数据变换方法,保证其可逆就可以设计相应的密码算法。加密其实很简单:改掉原来的值,改掉原来值放的位置,但
是记住你还要能改回来才行。
3 分组密码和DES
分组密码是一种将输入的明文以分组的方式处理的加密技术。
Feistel结构 是一种常用的分组密码结构,它由许多轮构成,每轮中将分组的一半进行代换,然后和另外一半交换位置进行置换。
DES是最广泛应用的加密算法,它采用了Feistel结构,简单高效,而且能进一步扩展到2DES和3DES。
注脚:Feistel是一种美妙的置换和代换网络,其美妙之处是他是那么简单而且遵从对称的原则,可以让加密和解密共用同一段代码。
4 数学基础——有限域
域是定义了加和乘算术运算的元素的集合。
模算术是一种整数算术,它将所有的整数约减为固定的集合,以保证计算的封闭性。
有限域在密码的若干领域有重要的应用。一个有限域就是有有限个元素构成的域。可以证明有限域的阶可以写成素数的幂形式。 阶为p的域可由模p的算术定义 阶为pn的域可由多项式算术来定义
注脚:基础代数的很多概念很颠覆我们习以为常了的小学算术,接触过这段内容,你起码留下这样的印象:原来四则运算是这样来的。
5 AES
AES是一种分组密码,以取代DES,分组长度为128位,密钥长度为128,192,256 AES没有使用Feistel结构,每轮由四个单独的运算组成:字节代换,置换,有限于上的算术运算,以及密钥的异或。
6对称密码应用方面的其他内容
分组密码的工作模式可分为:电码本、密文分组连接、密码反馈模式、输出反馈模式和计数器模式,五种。
流密码使用很广泛,其输出密文由明文逐位或逐字节产生。流密码可以用块密码来产生。
常用链路加密和端端加密的方法保护通信数据,即面向信息和和面向传输的。
即使数据的机密性得到了保护,攻击者依然可实施通量分析攻击,因此有必要进行传输的填充。 密钥分配是密码应用的最重要的环节,密钥分配常涉及主密钥和会话密钥的使用。随机或伪随机数发生器是许多密码函数在实际应用中必备的功能。其原则是产生的随机数不能被预测。
注脚:仅仅知道密码算法依然没法
7 数学——数论
素数是一种特殊的整数,是构成其他所有整数的基础。
在公钥密码里最重要的两个定理是费马定理和欧拉定理。
离散对数是许多公钥算法的基础,离散对数和普通对数类似,不过是在模算术上进行运算。
8 公钥密码学和RSA
公钥密码是一种密码体制,其加密和解密算法使用不同密钥:一个是公钥一个是私钥。 非对称密码可用来加密、认证、签名等。 RSA是应用最广泛的公钥密码体制,其攻击难度相当于寻找大合数的素因子。
9 密钥管理和其他公钥体制
公钥密码方案是安全的,仅当公钥的真实性能够得到保证。公钥证书的方案提供了必要的安全性。 一个简单的公钥算法是Diffie-Hellman密钥交换协议。
注脚:密码系统的安全在于密钥的安全,因此任何一个安全的信息系统必然涉及到密钥管理的问题。
10 消息认证和安全散列函数
消息认证是用来验证消息完整性的一种机制或服务。
用于消息认证的最常见的密码技术是消息认证码MAC和安全散列函数HASH。
MAC是一种需要使用密钥的算法,使用安全散列算法和使用对称分组密码。HMAC和CMAC 散列函数将可变长的消息映射为固定长度的散列值,安全散列函数里用到的压缩函数可以分为两类:专门为散列函数涉及的函数和对称分组密码。SHA和Whirlpool是这两种方法的例子。
注脚: MAC和HASH提供消息的摘要,并通过重生成摘要和对比来辨别消息的完整性和真实性。
11 数字签名和认证协议
数字签名是一种机制,它使得消息的产生者可以添加一个起签名作用的码字。签名保证了消息的来源真实性和消息内容的完整性。
认证协议使得通信的各方确定通信的实体的可靠性并通过交换会话密钥进行保密通信。
数字签名标准DSS是NIST标准,它是一种公钥密钥算法。
注脚: 数字签名用于代替真实签名在数字通信工程中提供对通信实体身份的确认,以及对消息内容完整性的验证。
第二部分 复习题
类型一:问答题
1 什么是安全服务,它包含哪些种类?
答:安全服务是加强数据处理系统和信息传输的安全性的一种处理过程或通信服务,其目的在于利用一种或多种安全机制进行反攻击。安全服务包括:同等实体认证、数据源认证、访问控制、保密性、流量保密性数据完整性、不可否认性和可用性等。
2 什么是安全机制,它包含哪些种类?
答:安全机制是用来检测、阻止攻击或者从攻击状态恢复到正常状态的过程,或者实现该过程的设备,按照X.800的定义安全机制可分为特定安全机制和普遍安全机制,特定安全机制包括:加密、数字签名、访问控制。数据完整性、认证交换、流量填充、路由控制和公证等;普遍的安全机制包括:可信功能、安全标签、事件检测、安全审计跟踪和安全恢复等。
3 “一次一密”在实现上的困难是什么?
答:(a) 产生大规模随机密钥有实际困难;(b) 对每一条发送的信息都需要提供发送方和接收方之间的密钥,因此带来庞大的密钥分配问题。
4 根据Shannon的通信安全理论,怎么样的系统是真正安全的,在实际应用中应该怎么做?
答:根据信息安全的理论,真正的安全只能通过“一次一密”完成,即每次通信采用一个独立的密钥,具体应用中需要密钥和明文一样长,因此无法实用化。
5 什么是代换密码和置换密码,它们的本质区别是什么?
答:代换密码是见明文字母替换成其他字母,数字或者符号的密码方法,置换密码是通过调整字母的位置来实现加密的方法。
6 Shannon认为的密码系统的两个基本构件是什么?它们的具体含义是指?
答:Shannon认为的密码系统的基本构件是扩散和混淆。
扩散是指使明文统计特性消散在密文中,即让明文尽可能地影响密文的操作。
混淆是尽可能让密文和密钥之间的统计关系更加复杂的操作。
7 会话密钥和主密钥的区别是什么?
答:主密钥一般用于密钥协商和交换,会话密钥用于一次或多次通信的信息加密。
8 请画出Feistel密码单轮加解密的一般结构
加密结构 解密结构 9 请用程序C语言简述AES的密钥扩展算法? 答:AES的密钥扩展算的输入值是16个字节,输出值是44个字以保证初始轮密钥加阶段和其他10轮中的轮密钥。
keyExpansion(byte key[16], word w[44]) { Word temp;
for(i=0;i<4,i++) w[i]=(key[4*i],key[4*i+1], key[4*i+2], key[4*i+3]);
for(i=4;i<44;i++) temp=w[i-1];
if ( i mod 4=0) temp=Sbox(RotWord(temp)) XOR Rcon[i/4] w[i]=w[i-4] xor temp;
}
10 请描述电码本、密文分组连接、密文反馈、输出反馈、计数器等五种分组密码的加密工作模式。 13 在具有N个用户的对称密码系统中,在有KDC和没有KDC的情况下要保证任意两个人之间的通信需要多少个会话密钥? 答:在对称密码体制下,若实现N个用户的互通信,
答:ECB:用相同的密钥对明文分组进行加密; CBC:加密算法的输入是上一个密文组和下一个明文组的异或; CFB:一次处理s位,加密输出中的s位和明文s位异或作为密文并移入下一个加密算法的输入s位。 OFB:一次处理s位,加密输出中的s位和明文s位异或作为密文,加密输出的s位移入下一个加密算法的输入s位中。 CTR:每个明文分组都与一个加密计数器相异或。对每个后续分组计数器递增。
11 什么是传输填充?其作用是什么?
答:传输填充通过不断产生随机数流来填充通信信道,随机数流可认为是可持续的密文,可避免对通信的传输分析攻击。
12 链路加密和端对端加密的区别是什么? 答:可从三个方面区分链路加密和端端加密。 a. 末端系统和中间系统的安全性:
链路加密:消息在主机是明文,中间节点是明文
端端加密:消息在主机是密文,中间节点是密文
b. 用户的角色
链路加密:与主机交互,加密过程对用户透明,主还包含加密设备,所有用户使用一个加密设备,可以硬件实现。
端端加密:与发送过程交换,用户自己觉得是否使用加密、加密算法和加密机制,一般软件实现
c. 实现时注意的问题
链路加密:每个中间主机节点和每两个中间主机节点需要一个密钥
端端加密:每对用户需要一个密钥
在没有KDC和主密钥+会话密钥的情况下,需要的密钥规模是N(N-1)/2,在有KDC的情况下,所有的人都与KDC之间具有主密钥,会话密钥可以临时生成,因此密钥的规模是N。
14 公钥密码体制的三种应用是什么?分别列决RSA、DH和DSS所具有的应用范围
答:公钥体制的三种应用是:加解密、数字签名、密钥交换。
RSA可用于加解密、数字签名、密钥交换; DH只用于密钥交换 DSS只用于数字签名
15 什么是单向陷门函数,单向陷门函数和公钥密码之间的关系是什么?
答:满足下列条件的一类不可逆的函数fk为单向陷门函数
若已知k和X,容易计算Y?fk(X) 若已知k和Y,容易计算X?f?1k(Y)
若Y已知,而k未知,计算X?f?1k(Y)是不可行的
公钥密钥的核心是寻找单向陷门函数,RSA的单向
陷门是大素数的分解; DH和DSS的单向陷门是离散对数求解。
16 简要介绍一下Diffie-Hellman密钥交换的方法 答:DH的全局公开量是素数q和它的本原根a。 用户A的密钥的产生:选择XA< q 计算公开密钥:YA YAA?aXmodq
用户B的密钥的产生:选择选择XB< q 计算公开密钥:YB YBB?aXmodq
用户A的密钥的计算:K?YXABmodq
用户B的密钥的计算:K?YXBAmodq
17 安全散列函数需要哪些特性? 答:安全散列函数需要满足如下性质
H可用于任意长度大小的数据块 H可产生定长的输出
对任意给定的x,计算H(x)容易
对任意给定的h,找到x,满足H(x)=h很难 (单向性)
对任意给定的x,找到y,满足H(x)=H(y)很难(弱碰撞性)
找到任何满足 H(x)=H(y)的分组对(x,y)很难(强碰撞性)
16 请简叙HMAC(基于Hash的MAC)的过程?答:其过程如图
过程:
(1) 在K左边填充0,得到b位的K+
(2) K+
与ipad进行异或产生b位的分组Si (3) 将M附于Si后
(4) 利用hash计算H(Si||M)
(4) K+
与opad进行异或产生b位的分组So (5) 将4的结构附在So后
(4) 利用hash计算H(So||H(Si||M)),输出散列码
18 直接数字签名和仲裁数字签名之间的区别是什么?
答:直接数字签名只用于通信双方,它的弱点是完全依赖于发送方私钥的安全性。仲裁签名技术引入可信第三方,其一般过程是:发送者X将签名的消息发给A,A对消息的签名进行检查验证消息源和内容,然后给消息加上日期发给Y,同时指明该消息已经通过仲裁的检验。仲裁签名解决了发送方否认的问题。
19 重放攻击有那些类型,请列出对付重放攻击的三种通用的方法。
答:简单重放:攻击者只是简单的复制消息并在以后重放消息;可检测的重放:攻击者在有限的时间内重放有时间戳的消息;不可检测的重放:由于原始消息被阻断,只有重放消息达到了接收方;不加修改的逆向重放:向消息发送端重放。如果使用对称密码,且发送方无法根据内容来区分发出和接收的消息,那么可能存在这类重放。
对付重放攻击的三种通用方法是:附件序列号、时间戳、基于临时交互号的挑战/应答
20 设H(m)是一个抗碰撞的散列函数,将长N的消息映射为定长的n比特的散列值。对于所有的消息x,x',x?x',是否都有H(x)?H(x')?原因是什么?
答案1:不一定都有H(x)?H(x'),因为消息的集合比消息摘要的集合大的多,永远存在很多对消息m1和m2满足H(m1)和H(m2),即抗碰撞也要分强抗碰撞和弱抗碰撞的。
答案2:否,有一定的概率。