报文完整性
- 确保报文在传输中不被篡改
- 确定发送者的身份
报文鉴别码–确保报文在传输中不被篡改
- 收发双方共同持有一个鉴别密钥(Authentication Key) s
- 发送报文m时,用s级联m生成m+s,计算散列(HMAC、MD5、SHA-1…)值 H(m + s)。H(m+s)即为报文鉴别码(Message Authentication Code, MAC)
- 将H(m+s)附加到报文上,生成拓展报文(m, H(m+s)),发送给对方。
- 对方受到(m, h)后,使用相同的散列函数计算 H(m+s)。若H(m+s)=h,则认为未被篡改。
数字签名
发布者签署报文/文件
- 为了签名m,计算其散列 H(m)
- 使用私钥加密 H(m) 得到数字签名
验证发布者身份
- 使用同样的散列函数计算 H(m)
- 使用发布者的公钥对数字签名进行解密得到h
- 若h = H(m)则可确认发布者身份的正确
认证中心
认证中心(Certification Authority, CA) 实现将公钥与特定实体绑定。确定公钥的所有者。
- CA验证某个实体的身份后,将其身份标识和其公钥绑定,生成证书
- 认证中心使用其私钥对证书进行签名
- 发送者发布其签名的报文时,同时发送CA签发的证书
- 接收者通过CA签发的证书,确认发送者身份和公钥
- 再用从证书中取到的公钥进行验证
*
SSL
安全套接字层(Secure Socket Layer, SSL)
-
SSL运行在应用层上
-
SSL握手:
- 先进行TCP三次握手,建立连接
- 再生成一系列密钥
- 不重数(nonce):使得每次的密钥不同,防止连续重放攻击
-
从主密钥分割出4个密钥用于:
- 客服端向服务器发送报文时,生成报文鉴别码(Message Authentication Code, MAC) (计算整个SSL记录)
- 客服端向服务器发送报文时,加密数据和MAC
- 服务器向客户端发送报文时,生成报文鉴别码(Message Authentication Code, MAC)(计算整个SSL记录)
- 服务器向客户端发送报文时,加密数据和MAC
-
数据传输:以SSL记录为单位传输
- 断开连接:将SSL记录的Type标记为关闭连接。