参考答案:
【问题1】
攻击用户C可以通过以下手段获取报文 m:
1. 用户C截获消息:(EPKB(m), A)
2. 用户C篡改消息:(EPKB(m), C)
3. 用户B返回消息:(EPKC(m), B)
4. 用户C成功解密,最后得到明文m。
【问题2】
安全性提高了,能实现加密和认证的双重任务。但会存在重放攻击。
第一步,A 发给 B 消息是 A 首先用自己的秘密钥 SKA对消息 m 加密,用于提供数字签名,再用接收方的公开钥 PKB第 2 次加密,密文中包括明文的信息和 A 的身份信息。
第二步,接收方 B 收到密文,用自己的私钥先解密,再用对方的公钥验证发送方的身份是 A,实现了 B 对 A 的认证,并获取了明文。
第三步,B 发给 A 消息是 B 首先用自己的私钥 SKB对消息 m 加密并签名,再用 A 的公开钥 PKA第 2 次加密,密文中包括明文的信息和 A 的身份信息,还有 B 对接收的 m 的签名密文。
第四步,只有 A 才能用自己的私钥打开 B 送过来的密文,并且验证是 B 的签名,实现了 A 对 B的认证,当 A 看见原样返回的 m,就知道 B 收到了 A 发送的明文 m 了。
详细解析:
【问题 1】:
1. 用户C首先截获消息:(EPKB(m),A)
2. 然后将用户标识信息改为C自己的标识信息,让用户B以为这条消息就是C发过来的。即: C(“B” ) --->B:(EPKB(m),C)
3. 用户B将自己的身份标识及用C的公钥加密的信息一起发送给用户C。即:B--->C:(EPKC(m),B)
4. 用户C用私钥成功解密,最后得到明文m。
【问题 2】:
安全性提高了,利用公钥的数字签名机制能实现加密和认证的双重任务。但会存在重放攻击。
第一步,A发给B消息是A首先用自己的秘密钥SKA对消息m加密,用于提供数字签名,再用接收方的公开钥 PKB第 2 次加密,密文中包括明文的信息和A的身份信息。
第二步,接收方B收到密文,用自己的私钥先解密,再用对方的公钥验证发送方的身份是A,实现了 B 对 A 的认证,并获取了明文。
第三步,B 发给A消息是 B 首先用自己的秘密钥 SKB对消息 m 加密并签名,再用A的公开钥PKA第 2 次加密, 密文中包括明文的信息和 A的身份信息, 还有 B 对接收的m的签名密文。
第四步,只有A才能用自己的私钥打开B送过来的密文,并且验证是B的签名,实现了A对 B的认证,当A看见原样返回的 m,就知道 B 收到了A发送的明文 m了。