1、一、一个简单的安全协议n 1、协议概述n 2、协议过程一个简单的安全协议n 由于 SSL协议的复杂性,为了更好地理解SSL,引入一个简单的安全协议,该协议适合于交互式应用。n 该协议的主要目标:n 1、保证通信数据的 机密性 ;n 2、保证通信数据的 完整性 ;n 3、确保通信双方 身份的可靠性 ;n 4、不需为每个数据包都动用昂贵的公开密钥操作, 具有较高的效率 。协议过程n 基本步骤(假设通信双方为 Alice、 Bob):n 1、 握手( Handshake)n Alice和 Bob使用他们的证书和私钥来对对方进行身份鉴别并交换共享密钥( MSMaster secret )n 2、 导出
2、密钥( Key derivation)n Alice和 Bob使用他们达成一致的共享密钥( MS)导出一组用于保护将要传输的数据的密钥( Session Key)n 3、 数据传输( Data transfer)n 将要传输的数据分割成一系列的记录,并对每条记录加以保护n 4、 关闭连接( Connection closure)n 使用特殊的、经过保护的关闭消息,安全地关闭连接协议过程 握手n 握手阶段( Handshake)Alice BobHelloCertificate(Bob)Encrypt(Bob,MS)=EMS单向单向 鉴别(结束后双方获得主密钥鉴别(结束后双方获得主密钥 MS)声
3、称的身份( Bob)掌握 Bob的私钥才能解密,从而完成身份证明Alice产生主密钥 MS,并用 Bob公钥加密(挑战)协议过程 握手(续)n 握手阶段( Handshake)Alice BobHello, Certificate (Alice)Certificate (Bob)Sign(Alice,Encrypt(Bob,MS)双向鉴别(结束后双方获得主密钥双向鉴别(结束后双方获得主密钥 MS)Alice产生主密钥 MS,并用 Bob公钥加密(挑战),再用自己私钥签名(证明自己)协议过程 导出密钥n 使用同一个密钥来完成不同类型的加密操作是糟糕的思想n 本协议在每个传输方向上可以采用两个会话
4、密钥,分别用于加密和消息鉴别 ( MAC):n 会话密钥可通过 密钥导出函数( Key Derivation Function, KDF)由 MS 和 nonce 导出;n KDF 一般基于 Hash 算法。n 一种最简单的 KDF 可能如下( 由同一个主密钥 MS生成了四个不同的会话密钥 ):n Ecs=Hash(MS, nonce, ”ECS”) /”ECS”等是一个常量n Mcs=Hash(MS, nonce, ”MCS”) /E是加密密钥, M是 MAC密钥n Esc=Hash(MS, nonce, ”ESC”) /cs和 sc是传输方向n Msc=Hash(MS, nonce, ”M
5、SC”)协议过程 数据传输n 数据记录n 为实现数据传输的灵活性, 必须对数据分块(记录)传输n 数据分块后 MAC 如何处理,放最后吗?n 解决方法:分块后,每个 记录应该自 带 MACn 记录大小n 定长,不经济n 理想的应是变长记录,每个记录要加上长度字段n 记录格式n 长度 Mx + 数据 D + MACn MAC计算n M=MAC(Mx, D)协议过程 数据传输(续)n 序号n 为 对抗重放、删除、重排攻击,需要增加序号Sequencen 序号必须是 MAC 输入的一部分n 可以放在记录中n 在基于 TCP的连接中,也可以使用隐含序号n MAC的计算nM=MAC(Mx, Sequen
6、ce | D)协议过程 关闭连接n 控制信息n 为防止攻击者恶意切断连接,需要有一种机制使得 Alice能告诉Bob(或反之),她已完成数据传送n 两种方法n 1、传送长度为 0 的记录n 2、在记录中增加类型字段n 增加类型字段后的记录格式n 长度 Mx + 序号 Sequence + 类型 Type + 数据 D + MAC类型为 0:普通数据类型为 1:结束记录类型为其他:报告错误信息n MAC的计算n M=MAC(Mx, Sequence | Type | D)协议过程 完整图示Alice BobHelloCertificate,nonceSign(Alice,Encrypt(Bob,MS)Type 0, Seq 1, DataType 0, Seq 2, DataType 0, Seq 1, DataType 0, Seq 3, DataType 1, Seq 4, CloseType 1, Seq 2, Close