1.认证
2.报文的完整性
1.认证
csharp
1).认证的目的: "验证通信双方的真实性"
2).认证示例(bob需要alice证明她的身份)
a.alice直接对bob说 "i am alice"

csharp
b.alice说 "i am alice", 在她发送的ip数据包中包括了她的ip地址

csharp
c.alice说 "i am alice", 在她发送的ip数据包中包括了她的密码, 而且传送她的密码来证明

csharp
重放攻击就像用录音开门, 攻击者虽然不知道你的钥匙(密码)是什么, 但他把你开门时说的芝麻开门这句话(有效的认证数据
包)完整地录下来, 然后在你离开后, 对着门重新播放这段录音, 门(系统)一听:哦, 是有效的口令, 于是就打开了
csharp
d.为了避免重放攻击, 采用"挑战应答"(nonce: 一生只有一次的整数)
为了证明alice的活跃性, bob发送给alice一个nonce, alice必须返回加密之后的R, 使用双方约定好的key对R进行加密
"双方共享一个对称式的密钥"

csharp
e.采用公开密钥加密技术

csharp
公开密钥加密技术引出一个新的问题: "中间人攻击"

csharp
上述图中Trudy得知alice和bob对话的全部内容
2.报文的完整性
csharp
a.报文的完整性是"确保发送方发出报文后, 报文没有被修改"
b.通过"数字签名验证报文的完整性"
b.数字签名类比于手写签名, "数字签名将报文的创建者和报文建立了关系, 报文属于该对象"
c.数字签名有三个特性
- 可验证性, 对于接收方来说, 可以通过数字签名验证是"真实的发送方"发出的
- 不可伪造性, 数字签名是通过发送方的私钥加密的, 伪造者一般情况下不知道发送方的私钥
- 不可抵赖性, 第三方可以验证签名

csharp
a.对长报文进行公开密钥加密, 算法的实施需要耗费大量的时间, 因此只对报文的摘要进行加密
b.数字签名是"对报文的摘要进行加密得出的内容"
