第16章 · 播客 第6集

安全性和保密性设计 · SSL:位置、三条基本安全性与两个字节上限

🎙️ 本集播客第6集:SSL 建在传输层之上、应用层之下;通道保密、被认证、可靠三个基本安全性;服务器端总是被认证而客户端可选;MAC 用 16 字节 MD5;记录头 2 字节对应 32767、3 字节对应 16383;握手同时用对称和公钥两种算法——以及它不能保证不可否认性这条必考短板。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
🎙️ 第16章播客 第6集
⬇ 下载本集 点击播放
阿明
SSL 我天天听「HTTPS 加锁」,协议本体是什么?
小雅
SSL 是用于安全传输数据的一种通信协议,采用公钥加密技术、对称密钥加密技术等保护两个应用之间的信息传输的机密性和完整性。它包括服务器认证、客户认证、SSL 链路上的数据完整性、SSL 链路上的数据保密性等几个方面,通过在浏览器和 Web 服务器之间建立一条安全的通道来保证 Internet 数据传递的安全性。目前,利用公钥加密的 SSL 技术已经成为 Internet 上进行保密通信的工业标准,常用于增强 Web 服务的安全性。
小雅
位置是第一道必考题:在 TCP/IP 协议中,SSL 协议建立在传输层即 TCP 之上、应用层之下。突出优点是与应用层协议相独立,高层应用层协议如 HTTP 等可以透明地建立在 SSL 协议之上进行工作。选「网络层之上」「应用层之上」都是坑,标准答法是「传输层 TCP 之上、应用层之下」。
阿明
那先把它那条著名的短板说了吧——不可否认?
小雅
原文在 SSL 的介绍里就点名:SSL 也有一个不足,就是它本身不能保证传输信息的不可否认性。四个选项里「SSL 能保证传输信息的不可否认性」就是那个错项,其余描述正确的都容易配对进来。这条必须条件反射。
小雅
通过 SSL 建立的传输通道有三条基本安全性,逐条背。第一,通道是保密的:经过握手确定密钥之后,所有的消息被加密;SSL 在应用层协议工作之前就已经完成了加密算法、密钥的协商、服务器认证等工作,此后所有应用层传送的数据都是加密的,因此具有很好的保密性。
小雅
第二,通道是被认证的:通信中的服务器端总是被认证,客户端可选认证。在基于 SSL 的通信过程中,服务器端认证是必须进行的,所以即使一次会话过程中不进行客户端认证,该会话的确认性也能够有很好的保证。「服务器必认证、客户端可选」,两边别记反。
小雅
第三,通道是可靠的:用 MAC 对传送的消息进行完整性检查,保证通道上数据的完整性。因为传递的消息中包括消息完整性检查数据即 MAC 数据,因此可以保证该通信是可靠的。
阿明
保密、被认证、可靠三条齐了。SSL 内部由什么组成?
小雅
四个部分:SSL 记录协议、SSL 握手协议、SSL 密码变更说明协议、SSL 警告协议。其中记录协议管封装:所有要传输的数据都被封装在记录中,记录由记录头和长度不为 0 的记录数据组成;所有的 SSL 通信,包括握手消息、安全空白记录、应用数据等都需要使用 SSL 记录。
阿明
「安全空白记录」这个词有点怪。
小雅
先挂着,讲完记录头格式你就能对上。SSL 协议记录头包括的数据有:记录头长度、记录数据长度、记录数据中是否有粘贴数据。记录头长度既可以是 2 字节、也可以是 3 字节,判据是最高位。
小雅
当记录头的最高位为 1 时,表示不含有粘贴数据,记录头长度为 2 字节,记录数据最大长度为 32767 字节;当记录头的最高位为 0 时,则含有粘贴数据,记录头长度为 3 字节,记录数据最大长度为 16383 字节。两对数字配对记:最高位 1 配 2 字节配 32767,最高位 0 配 3 字节配 16383。
阿明
数字大的反而头短?32767 配 2 字节,16383 配 3 字节——因为腾出一位来标记粘贴数据,所以数据上限砍半。
小雅
理解得对。而且当最高位为 0 时,次高位有特殊含义:次高位为 1 表示所传输的记录是普通记录,次高位为 0 表示所传输的记录是安全空白记录——刚才那个词就在这儿。另有细节:记录头中数据长度编码不包括数据头所占用的字节长度,粘贴数据的长度为传输的第三个字节。
小雅
SSL 记录数据包含三个部分:MAC 数据、实际数据和粘贴数据。MAC 数据用于数据完整性检查,计算 MAC 所用的散列函数由握手协议中的消息确定;若使用 MD5 算法,则 MAC 数据长度是 16 字节。MD5 的散列码 128 位、128 除以 8 正好 16 字节,两处数字能互推,但考试直接背「MD5 时 MAC 是 16 字节」。
小雅
MAC 的产生方式原文给了式子:MAC 数据等于 HASH 括号里密钥、实际数据、粘贴数据、序号。密钥的方向要分清:当会话的客户端发送数据时,密钥是客户的写密钥,服务器用读密钥来验证 MAC 数据;而当客户端接收数据时,密钥是客户的读密钥,服务器用写密钥来验证。
阿明
读密钥写密钥各配一头。序号那个计数器呢?
小雅
序号是一个可以被发送和接收双方递增的计数器。每个通信方都会建立一个计数器,分别属于发送者和接收者;计数器有 32 位,计数值循环使用,每发送一个记录计数值递增一次,序号的初始值为 0。三个数:32 位、每次递增、初始值 0。
阿明
接着是最有名的握手协议。
小雅
SSL 握手协议建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥。握手过程分为两个阶段:第一阶段用于建立秘密的通信信道,第二阶段用于客户验证。
小雅
握手里最重要的设计是双算法并用,原文逻辑链完整念一遍:在 SSL 协议中,同时使用了对称密钥加密算法和公钥加密算法,这是为了综合利用对称密钥加密算法的高速度和公钥加密算法的安全性的优点。SSL 使用公钥加密算法使服务器端身份在客户端得到验证,并且传递用于会话中对数据加密的对称密钥;然后再利用对称密钥对收到和发送的数据进行比较快速的加密,从而减小系统开销、保证通信效率。
阿明
跟数字信封同一个思路:公钥送钥匙,对称锁正文。
小雅
一脉相承。算法清单照抄:在握手过程中,使用 RSA 公开密钥系统;密钥交换后,可以使用多种密码,例如 RC2、RC4、IDEA、DES、3DES 及 MD5 信息摘要算法等。判断题「SSL 握手阶段用对称算法交换密钥」——错,握手用 RSA。
小雅
最后两段定性也要会:一,SSL 可以非常有效地保护通信过程,但如果某种攻击是利用 SSL 协议通信进行的,那么这种攻击也会受到 SSL 协议的保护,从而使得攻击更加隐蔽、难于被发现,这种攻击也能够很好地穿透防火墙、躲过入侵检测系统的检查;二,SSL 通信中要进行许多加密解密操作,高强度的计算会增加服务器负载、增加网络带宽,从而使服务器性能下降、吞吐量下降。
小雅
本集必背:SSL 建立在传输层 TCP 之上、应用层之下,与应用层协议相独立、HTTP 可透明建立其上,是 Internet 保密通信的工业标准;不能保证传输信息的不可否认性;三条基本安全性——通道保密、通道被认证、通道可靠用 MAC 检查;服务器端总是被认证、客户端可选认证;组成四件——记录、握手、密码变更说明、警告协议;记录头最高位 1 配 2 字节、数据最大 32767 字节,最高位 0 配 3 字节、数据最大 16383 字节,次高位 1 普通记录、0 安全空白记录;
阿明
接着背。
小雅
记录数据等于 MAC 加实际数据加粘贴数据,MD5 时 MAC 长 16 字节,序号 32 位初始值 0 每发一记录递增;握手两阶段先建秘密信道再客户验证,握手用 RSA、密钥交换后可用 RC2、RC4、IDEA、DES、3DES、MD5;SSL 保护下的攻击更隐蔽、能穿透防火墙躲过入侵检测,高强度计算会使服务器性能和吞吐量下降。
阿明
32767 和 16383 这对数字总算各归各位了。下一集 PGP?
小雅
对,PGP 邮件加密的流水线:MD5 摘要、RSA 签名、ZIP 压缩、IDEA 加密、BASE64 编码,五道工序一步一步过。