Yb
(5)D截获Yb,冒充BA:
Yd
(6)A计算:
K1=(Yd)Xa≡(aXd)Xa≡aXdXamodq
(7)B计算:
K2=(Yd)Xb≡(aXd)Xb≡aXdXbmodq
(8)D计算:
K1=(Ya)Xd≡aXaXdmodq,K2=(Yb)Xd≡aXbXdmodq
答案2:
中间人攻击
假定Alice和Bob希望交换密钥,而Darth是攻击者。
攻击过程如下:
①为了进行攻击,Darth先生成两个随机的私钥XD1和XD2,然后计算相应的公钥YD1和YD2。
②Alice将YA传递给Bob。
③Darth截获了YA,将YD1传给Bob。
Darth同时计算K2=(YA)^XD2modq。
④Bob收到YD1,计算K1=(YD1)^XBmodq。
⑤Bob将YB传给Alice。
⑥Darth截获了YB,将YD2传给Alice。
Darth计算K1=(YB)^Xmmodq。
⑦Alice收到YD2,计算K2=(YD2)^XAmodq。
此时,Bob和Alice想,他们已共享了密钥,但实际上,Bob和Darth共享密钥K1,而Alice和Darth共享密钥K2。
接下来,Bob和Alice之间的通信以下列方式泄密:
①Alice发了一份加了密的消息M:
E(K2,M)。
②Darth截获了该密消息,解密,恢复出M。
③Darth将E(K1,M)或E(K1,M')发给Bob,其中M'是任意的消息。
第一种情况,Darth只
是简单地偷听通信,而不是改变它。
第二种情况,Darth想修改给Bob的消息。
答案三:
10.作为保密通信的一种方式,信息隐藏和数据加密的主要区别是什么?
答:
目标不同:
加密仅仅隐藏了信息的内容;信息隐藏既隐藏了信息内容,还掩盖了信息的存在。
实现方式不同:
加密依靠数学运算;而信息隐藏充分运用载体的冗余空间。
应用场合不同:
加密只关注加密内容的安全,而信息隐藏还关注载体与隐藏信息的关系。
联系:
理论上相互借用,应用上互补。
信息先加密,再隐藏。
三、消息认证技术
11.什么是消息认证?
为什么需要消息认证?
如何实现消息认证(或消息认证函数的实现方式)?
答:
(1)消息认证是验证消息完整性的一种机制,验证所收到的消息确实是来自真正的发送方,且是未被修改的消息。
它能发现对消息的篡改或假冒,也确保发送方声称的身份是真实有效的。
(2)防止网络通信的攻击(4类)
伪装(假冒):
欺诈源向网络中插入一条消息。
内容修改:
对消息内容的修改,包括插入、删除、转换和修改
顺序修改:
对通信双方消息顺序的修改,包括插入、删除和重新排序
计时修改:
对消息的延时和重播。
窃听:
流量分析
发送方抵赖(拒绝承认曾发出过某消息)
接收方抵赖
(3)如何实现消息认证
散列函数(Hash):
它是将任意长的消息映射为定长的Hash值的函数,以该Hash值作为认证符。
消息加密:
将整个消息加密后的密文作为认证符。
对称加密
公钥加密
消息认证码(MAC):
它是消息和密钥的函数,它产生定长得值,以该值作为认证符。
12.散列函数可被应用于哪些方面?
密码学散列函数需哪些安全性需求?
常见的散列函数有哪些?
基本参数(输入、输出长度、安全性等)?
答:
(1)消息认证、数字签名、其他应用(产生单向口令文件、入侵检测和病毒检测、构建随机函数(PRF)或用作伪随机数发生器(PRNG))。
(2)
输入长度可变函数H可应用与任意大小的数据块//红色下划线为实际应用的需求
输出长度固定H产生定长的输出
效率:
对任意给定的x,计算H(x)比较容易,用硬件和软件均可实现。
抗原像攻击(单向性):
已知h=H(y),但是根据h找不到Y,即对任意给定的Hash码h,找到满足H(y)的y在计算上是不可行的
抗第二原像攻击(抗弱碰撞性):
找不到在x!
=y时,H(x)=H(y)的情况,即:
对任何给定的分块x,找到满足y!
=x且H(x)=H(y)的y在计算上是不可行的
抗碰撞攻击(抗强碰撞性):
找不到满足H(x)=H(y)时的偶对(x,y)
即:
找到任何满足H(x)=H(y)的偶对(x,y)在计算上是不可行的
伪随机性:
H的输出满足伪随机性测试的标准
满足前五个称为弱哈希函数
(3)常见的散列函数
MD5(MessageDigestAlgorithm5):
是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;
SHA(SecureHashAlgorithm):
这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;有SHA-512,SHA-3等
MAC(MessageAuthenticationCode):
消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。
HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。
CRC(CyclicRedundancyCheck):
循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。
占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。
(4)基本参数:
SHA的参数:
IV是abcdefgh缓冲区的初始值
N是消息中的分组数
SUM64是对输入对中的每个字进行独立的模2的64次幂加。
MD为最后的消息摘要值
CV=链接值
Yi=第i个输入数据块
f=压缩算法
n=Hash码的长度
b=输入块的长度
13.消息认证码的实现方式有哪两种?
常见的算法有哪些?
答:
(1)消息认证码的实现方式:
基于Hash函数的MAC、基于分组密码的MAC
(2)常见的算法:
基于Hash函数的MAC:
HMAC算法
基于分组密码的MAC:
DAA(数据认证算法)和CMAC(基于密码的消息认证码)
14.消息认证和加密的关系(同时提供认证和加密的通用方案有哪些)
加密和认证的独立
答:
认证加密(AE)是指在通信中同时提供保密性和认证(完整性)的加密系统。
许多应用和协议中都同时需要这两种形式的安全性保证。
消息认证是验证消息完整性的一种机制,能发现对消息的篡改或假冒。
在非对称加密中,使用私钥对明文进行加密,能确保发送方声称的消息是真实有效的。
加密是指对数据进行操作后,没有密码无法打开数据或解密数据。
在简单的对称加密中,同一个密钥被用于加密和解密。
在非对称加密中,可以使用用户的公钥对信息进行加密,只有拥有对应私钥的人才能解密它。
(1)加密本身不能实现认证功能
认证和加密的分离带来灵活性
只要认证而不需保密,如公文,软件完整性鉴别(防病毒)、网络管理广播报文(如SNMP)等
不能加密的场合(如法规限制)
存档期间的保护(而不仅是传输期间)
(2)同时提供认证和加密的通用方案
1)HtE:
先hash再加密
2)MtE:
先MAC再加密
3)EtM:
先加密再MAC
4)E&M:
加密并且MAC
四、数字签名技术
15.什么是数字签名?
数字签名的作用是什么?
常见的数字签名算法有哪些?
如何理解RSA私钥加密实现数字签名?
答:
(1)数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
(2)数字签名的作用:
数字签名可以提供其他方法难以实现的安全性---抗抵赖的认证技术。
1>能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
2>是数字签名能确定消息的完整性。
因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。
不同的文件将得到不同的数字摘要。
一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。
(3)普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。
常用的有:
RSA,DSA,ECDSA,DSS,HASH算法
特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等
(4)如何理解RSA私钥加密实现数字签名?
发送方使用私钥加密后,接收方用公钥解密得到信息,能用发送方的公钥解密必定是用的发送方的私钥加密,便可以进行身份确认实现数字签名。
根本含义就是:
私钥加密当作签名。
当接收方解密时,就能知道你是谁了。
(备注)
五、密钥分配和管理技术
16.对称密钥的分发方式有哪些(如何实现)?
答:
(1)A向KDC(密钥分发中心)发送包请求一个会话密钥来保护到B的逻辑连接安全,其中包括A、B的身份和该次传输的唯一标识N1,称为临时交互号
(2)KDC返回的信息是用Ka加密的,因此只有A能读取该信息,并且A知道该信息是由KDC发来的。
该信息中包括一次性回话密钥Ks和之前请求的消息、包括临时交互号。
A可以知道该信息是否被更改过。
后面这两个消息由密钥Kb加密,发送给B以达到建立连接和检验A的身份。
(3)A保存会话的密钥Ks,将E(Kb,[Ks||Ida])发送给B。
(4)B使用全新的会话密钥Ks加密临时交互号N2并将结果发送给A
(5)同样,A使用Ks加密f(N2)后发送给B,其中f是一个执行N2转换的函数
注:
实际的密钥分发方案只包括
(1)到(3),(3)到(5)是执行认证功能
答案二:
1、基于非对称加密的对称密钥分发SimpleSecretKeyDistribution
A->BPUa||IDA
B->AE(PUa,Ks)
2、基于非对称加密的对称密钥分发带有保密和认证
答案三:
(1)A选择一个密钥后以物理的方式传递给B
(2)第三方选择密钥后物理地传递给A和B
(3)如果A和B先前或最近使用过一个密钥,则一方可以将新密钥用旧密钥加密后发送给另一方
(4)如果A和B到第三方C有加密连接,C可以在加密连接上传送密钥给A和B
实现方法:
(1)A向KDC(密钥分发中心)发送包请求一个会话密钥来保护到B的逻辑连接安全,其中包括A、B的身份和该次传输的唯一标识N1,称为临时交互号
(2)KDC返回的信息是用Ka加密的,因此只有A能读取该信息,并且A知道该信息是由KDC发来的。
该信息中包括一次性回话密钥Ks和临时交互号。
A可以知道该信息是否被更改过。
还包括一次性会话密钥Ks和A的标识Ida。
后面这两个消息由密钥Kb加密,发送给B以达到建立连接和检验A的身份。
(3)A保存会话的密钥Ks,将E(Kb,[Ks||Ida])发送给B。
(4)B使用全新的会话密钥Ks加密临时交互号N2并将结果发送给A
(5)同样,A使用Ks加密f(N2)后发送给B,其中f是一个执行N2转换的函数
注:
实际的密钥分发方案只包括
(1)到(3),(3)到(5)是执行认证功能
17.什么是公钥证书?
如何生成?
CA的作用包括哪些?
PKI包括哪些关键元素?
答:
(1)公钥证书,通常简称为证书,是一种数字签名的声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务的身份。
通信双方使用证书来交换密钥,证书包含公钥和公钥拥有者的标识,整个数据块由可信任的第三方签名。
(2)公钥证书如何生成:
一个用户把它的公钥交给管理员,从而获得一个证书,接着用户就可以公开证书,任何需要知道该用户公钥的人都可以获得证书。
1>对于未签名证书(包含发送方ID、公钥、CA信息),通过使用Hash函数产生未签名证书的Hash码,用CA的私钥加密Hash码以形成签名。
2>已经签名的证书用CA的公钥解密签名以恢复出Hash码。
3>比较未签名证书的Hash码和解密出来的Hash码是否一致,可验证签名。
过程为:
PKIinwindows
配置证书服务器:
加载证书服务组件即可
发放用户证书
SSL证书
邮件服务证书
(3)CA是证书的签证机构,它是PKI的核心。
CA是负责签发证书、认证证书、管理已颁发证书的机关。
它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。
(补充:
保密性-只有收件人才能阅读信息。
认证性-确认信息发送者的身份。
完整性-信息在传递过程中不会被篡改。
不可抵赖性-发送者不能否认已发送的信息。
保证请求者与服务者的数据交换的安全性)
(4)PKI包括哪些关键元素:
端实体:
是必备的元素,它可以是一个终端用户、设备,或是其他可以在一个公钥数字证书作用范围中被认证的实体。
终端实体支持PKI相关的设备。
签证机构(CA):
是证书和证书撤销列表(CRL)的发行人,常常在其上运行着一个或多个注册机构(RA),同时它还承担一些管理任务。
注册机构(RA):
是可选的元素,可以承担一些签证机构(CA)的管理任务,一般来说都是和端实体的注册进程相关的任务,也可以支持一些其他的管理任务。
证书撤销列表(CRL)发布点:
是可选的元素,签证机构可以通过它来发布证书撤销列表(CRL)。
证书存取库:
是必备的元素,它提供了存取数字证书和证书撤销列表(CRL)的方法,可以被终端用户检索。
六、身份认证技术
17.什么是身份认证?
身份认证的原理是什么?
身份认证的常用工具有哪四种?
答:
(1)身份认证:
用户向计算机系统以一种安全的方式提交自己的身份证明,然后由系统确认用户的身份是否属实,最终拒绝用户或者赋予用户一定的权限。
(2)认证原理:
认证阶段:
给安全系统提供身份标识(是其他安全服务的基础,如访问控制)
核实阶段:
提供或者产生可以证实实体和标识之间对应关系的认证信息
(3)认证身份的四个常用工具
知道什么:
口令、pin码或者之前准备问题的答案
拥有什么:
加密密钥、电子密钥卡、智能卡或物理密钥,这种类型的认证信息称为令牌
静态生物特征:
如指纹、视网膜和脸
动态生物特征:
如声音模式、手写特征和打字节奏
18.认证中如何抗重放?
(1)时间戳:
只有当消息中包含时间戳时,A才接收该消息。
该时间戳由A来判断,要接近于A所知的当前时间。
该方法要求不同参与者之间的时钟是同步的。
需同步时钟
网络延迟的多变性和不可预测性
不适用于面向连接的应用
(2)挑战-应答:
A想要一个来自B的新消息,首先发给B一个临时交互号(询问),并要求后面从B收到的消息(回复)包含正确的临时交互号值,相当于双方先握手,但是此认证方式不适用于无连接类型的应用。
19.简述基于挑战应答的身份认证方式?
答:
A想要一个来自B的新消息,首先发给B一个临时交互号(询问),并要求后面从B收到的消息(回复)包含正确的临时交互号值。
相当于双方先握手
不适用于无连接类型的应用。
答案二:
每次认证时认证服务器端都给客户端发送一个不同的"挑战"字串,客户端程序收到这个"挑战"字串后,做出相应的"应答",以此机制而研制的系统.认证过程为:
1)客户向认证服务器发出请求,要求进行身份认证;
2)认证服务器从用户数据库中查询用户是否是合法的用户,若不是,则不做进一步处理;
3)认证服务器内部产生一个随机数,作为"提问",发送给客户;
4)客户将用户名字和随机数合并,使用单向Hash函数(例如MD5算法)生成一个字节串作为应答;
5)认证服务器将应答串与自己的计算结果比较,若二者相同,则通过一次认证;否则,认证失败;
6)认证服务器通知客户认证成功或失败。
以后的认证由客户不定时地发起,过程中没有了客户认证请求一步。
两次认证的时间间的密钥隔不能太短,否则就给网络、客户和认证服务器带来太大的开销;也不能太长,否则不能保证用户不被他人盗用IP地址,一般定为1-2分钟。
20.Kerberosv4认证系统是如何实现的?
CAS:
IDc||IDtgs||TS1
ASC:
E(Kc,[Kc,tgs||IDtgs||TS2||Lifetime2||Tickettgs])
CTGS:
IDV||Tickettgs||Authenticatorc
TGSC:
E(Kc,tgs||[Kc,v||IDv||Ti