1. 课程导入

各位同学,咱们正式开始这门课。第一讲,我打算先把地基打牢。你想想看,做安全通信,连数据怎么在网络上跑的都搞不清楚,后面谈签名、谈绕过防护,那都是空中楼阁。

我个人习惯,讲协议之前,先让大家脑子里有个全景图。数据从你的电脑发出去,到对方的手机上,中间到底经历了什么?为什么需要分层?安全协议又是在哪一层插手的?

1.1 OSI模型与TCP/IP协议栈

先说OSI七层模型。这东西是国际标准化组织(ISO)搞出来的参考模型。说实话,实际生产环境里没人完全照着七层去实现,但它提供了一个绝佳的「分层思维」框架。

为什么要分层?说白了,就是解耦。每一层只管自己的事,层与层之间通过标准接口通信。这样,你改底层的物理介质,上层的应用代码不用动;你换顶层的应用协议,底层的网卡也不受影响。

OSI七层 TCP/IP四层 核心功能 常见协议/设备
应用层 应用层 为用户应用提供网络服务 HTTP, FTP, SMTP, DNS
表示层 数据格式转换、加密、压缩 SSL/TLS(实际工作在此层与传输层之间)
会话层 建立、管理、终止会话 NetBIOS, RPC
传输层 传输层 端到端连接、可靠传输、流量控制 TCP, UDP
网络层 网络层 路由选择、逻辑寻址 IP, ICMP, ARP, 路由器
数据链路层 网络接口层 帧封装、物理寻址、差错检测 以太网, PPP, 交换机
物理层 比特流传输、电气特性 网线, 光纤, 集线器

实际互联网用的是TCP/IP四层模型。它把OSI上三层合并成应用层,底下两层合并成网络接口层。嗯,这里要注意:我们做安全协议设计,最常打交道的是传输层和应用层。

核心观点:安全协议的本质,就是在不可信的信道上,通过分层加密和认证,构建出一个可信的通信隧道。每一层都有它的安全职责。

我在项目中遇到过不少团队,一上来就在应用层自己搞加密,结果底层的TCP序列号预测攻击、IP源地址欺骗完全没考虑。这就是缺乏分层安全思维的表现。

1.2 安全协议的目标与原则

好,现在咱们聊聊安全协议到底要达成什么目标。我把它总结成三个核心目标,也就是经典的CIA三元组:

  • 机密性(Confidentiality):数据在传输过程中,只有授权方才能读懂。实现手段:加密。
  • 完整性(Integrity):数据在传输过程中没有被篡改。实现手段:消息认证码(MAC)、数字签名。
  • 可用性(Availability):系统在需要时能够正常提供服务。实现手段:冗余、抗DDoS。

除了CIA,在通信协议里还有两个特别重要的目标:

  • 身份认证(Authentication):确认通信对方的身份是真实的,不是冒牌货。
  • 不可否认性(Non-repudiation):发送方不能否认自己发过某条消息。数字签名就是干这个的。

设计安全协议时,有几个原则我建议你刻在脑子里:

  1. 不要迷信自己的加密算法:用业界标准算法,别自己发明。我曾经见过一个团队自己搞了个「XOR+位移」的加密,被破解只用了半天。
  2. 协议设计要公开:Kerckhoffs原则——系统的安全性应依赖于密钥的保密,而不是算法的保密。
  3. 最小权限原则:每个实体只拥有完成其任务所必需的最小权限。
  4. 防御纵深:不要只依赖一层安全机制。加密、认证、完整性校验要层层叠加。

避坑指南:我曾经接手过一个项目,对方说「我们的协议用了AES-256加密,绝对安全」。结果一检查,密钥是硬编码在客户端代码里的,而且每次通信都用同一个密钥。这就是典型的「算法强、实现弱」——加密再强,密钥管理一塌糊涂,等于没穿裤子裸奔。

1.3 密码学基础回顾

密码学是安全协议的基石。咱们快速过一遍核心概念,后面章节会反复用到。

1.3.1 对称加密 vs 非对称加密

特性 对称加密 非对称加密
密钥数量 1个(加密和解密用同一个) 2个(公钥加密,私钥解密)
速度 快(适合大量数据) 慢(适合小数据或密钥交换)
典型算法 AES, ChaCha20, SM4 RSA, ECC, SM2
密钥分发 困难(需要安全通道传递密钥) 容易(公钥公开,私钥自留)
主要用途 数据加密 密钥交换、数字签名

实际应用中,两者是配合使用的。非对称加密用来安全地交换对称密钥,然后对称加密用来加密实际通信数据。这就是混合加密体系,TLS就是这么干的。

1.3.2 哈希函数与消息认证码

哈希函数把任意长度的数据映射成固定长度的摘要。好的哈希函数要满足:

  • 单向性:从摘要反推原始数据,计算上不可行。
  • 抗碰撞性:找到两个不同数据产生相同摘要,计算上不可行。

常用的哈希算法:SHA-256、SHA-3、SM3。MD5和SHA-1已经被证明不安全,别再用了。

消息认证码(MAC)是在哈希的基础上加了密钥。它既能验证完整性,又能验证消息来源的真实性。HMAC是最常见的实现方式。

1.3.3 数字签名

数字签名是非对称加密的逆用——用私钥签名,用公钥验证。它提供了:

  • 身份认证:只有持有私钥的人才能生成有效签名。
  • 完整性:签名验证失败说明数据被篡改。
  • 不可否认性:签名具有法律效力,不能抵赖。

常见的签名算法:RSA签名、ECDSA、EdDSA、SM2。嗯,这里要注意:签名不是加密,签名的目的是认证和防篡改,不是保密。

个人经验:我建议你在设计协议时,优先使用EdDSA(特别是Ed25519)。它比ECDSA更安全、更快、实现更简单,而且天然抗侧信道攻击。RSA虽然还在用,但密钥长度越来越长,性能越来越差,迟早要淘汰。

1.4 本章知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作整个课程的地图起点。

安全通信协议基础 - 知识体系总览 安全通信协议基础 - 知识体系总览 OSI / TCP/IP 协议栈 安全协议目标与原则 密码学基础 分层模型 物理层 → 应用层 数据封装与解封装 各层安全职责 CIA + 认证 + 不可否认 机密性 / 完整性 / 可用性 身份认证 / 不可否认性 Kerckhoffs / 最小权限 密码学原语 对称 / 非对称加密 哈希函数 / MAC 数字签名 安全通信协议设计 加密 + 认证 + 完整性校验 签名绕过防护实战 本章基础 后续章节的基石

这张图展示了本章的三大支柱:协议栈、安全目标、密码学基础。它们共同支撑起安全通信协议设计,最终导向签名绕过防护实战。后面的课程,我们会一层层深入下去。