安全协议设计与分析(4)
网络安全协议及分析华东师范大学 软件工程学院 2025年春季学期授课教师刘虹密码与网络安全系笔记来源华东师范大学软件工程学院《网络安全协议及分析》github地址https://github.com/BetterECNU/ECNU_Crypt_Student_Manual/tree/main/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE%E5%8F%8A%E5%88%86%E6%9E%90内容与方班的《安全协议设计与分析》有相通之处但并不完全重合学有余力者自行和阅读第一章 概述1.1 TCP/IP协议安全缺陷TCP/IP协议栈在设计之初没有充分考虑安全性存在四类典型安全缺陷缺陷类型说明攻击示例信息泄露数据被未授权窃取共享式网络嗅探、ARP欺骗下交换式网络嗅探信息篡改数据在传输中被恶意修改SQL注入、XSS、网站篡改、缓冲区溢出身份伪装攻击者冒充合法通信实体ARP欺骗、IP欺骗、DNS欺骗、RIP欺骗行为否认发送/接收方否认已发送/接收数据IP/UDP/TCP/HTTP均无防否认机制ARP欺骗原理攻击主机H向A发送伪造的ARP应答IP_B→MAC_H向B发送IP_A→MAC_H从而截获A与B之间的通信。1.2 网络安全需求IATF框架机密性数据不被泄露完整性数据不被篡改可用性服务可正常访问来源真实性通信对端身份可验证不可否认性行为可追溯无法事后否认密码学是实现这些安全需求的通用基础。例如 HTTPS HTTP TLS/SSL。1.3 网络安全协议定义基于密码学的通信协议同时具备语法报文格式语义报文处理方法时序报文交换顺序1.4 核心密码学组件对称加密AES、3DES、SM4公钥加密RSA、DSA、ECC、SM2消息摘要/散列函数MD5、SHA-1/2/256/512关键特性雪崩效应、单向性、抗冲突性弱/强消息验证码MAC密钥 Hash函数提供数据源认证和完整性校验数字签名发送方用私钥加密摘要接收方用公钥验证确保不可否认性密钥管理基于KDC密钥分发中心的共享密钥建立D-H密钥协商基于离散对数困难问题双方各自生成共享密钥公钥证书X.509和CA解决中间人攻击问题1.5 协议设计要素应用场景SSL偏服务器认证、IPSec要求双向认证协议栈层次层次越低安全服务越通用IPSec在IP层、SSL/TLS在传输层、Kerberos/PGP在应用层安全性需考虑算法协商、密钥生成、身份认证的全流程第二章 链路层扩展 L2TP2.1 PPP协议基础PPPPoint to Point Protocol用于两个对等实体之间的直连链路提供全双工按序传输。规定三部分内容帧格式及成帧方法LCP链路控制协议建立、配置和测试链路NCP网络控制协议如IPCP用于配置IPPPP协议流程链路不可用 → 建立(LCP) → 认证(PAP/CHAP) → 网络层(IPCP) → 终止PPP帧格式F(7E) | A(FF) | C(03) | 协议 | 数据… | FCS | F(7E)LCP报文类型链路配置Configure-Request/Ack/Nak/Reject链路终止Terminate-Request/Ack链路维护Code-Reject、Echo-Request/Reply 等幻数魔术字防止环路的关键参数在Config-Request中协商。不协商时填全0。IPCP负责动态协商IP地址。报文在PPP未达到网络层协议阶段前会被丢弃。2.2 PAP与CHAP认证PAPCHAP方式两次握手明文传口令三次握手挑战-应答安全性低口令明文传输较高基于共享密值随机数MD5流程被认证端发送用户名密码 → 认证端确认认证端发随机数 → 被认证端返回MD5值 → 比对2.3 L2TP协议架构L2TP对PPP进行扩展允许链路端点跨越多个IP/ATM/帧中继网络。关键组件LAC接入集中器接收远程客户呼叫LNS网络服务器作为PPP会话的逻辑终点LAC与LNS之间通过隧道转发PPP帧L2TP层次结构基于UDP端口1071也可运行于ATM、帧中继数据消息投递PPP帧不可靠传输控制消息建立/维护/终止连接可靠传输滑动窗口慢启动隧道、控制连接和会话的关系一个隧道包含一个控制连接一个控制连接承载多个L2TP会话每个会话对应一条虚拟PPP链路2.4 L2TP协议流程建立控制连接SCCRQ → SCCRP → SCCCN建立会话呼入ICRQ→ICRP→ICCN或呼出OCRQ→OCRP→OCCN数据通信转发PPP帧终止会话CDN → ZLBACK终止控制连接StopCCN → ZLBACK2.5 L2TP报文报文首部包含T/L标志、版本、隧道ID、会话ID、Ns/Nr序号、偏移量。控制消息信息以AVP属性值对形式出现隐藏AVP使用随机向量RV进行加密。2.6 L2TPv2与v3的区别特性L2TPv2L2TPv3 (RFC3931, 2005)支持协议仅PPPPPP、帧中继、以太网等隧道/会话ID2字节4字节更大命名空间认证范围部分控制消息整个控制消息2.7 安全性分析L2TP不是严格意义上的安全协议更应被视为隧道协议“Safe Protocol而非Security Protocol”。实际部署中常与IPSec结合使用L2TP/IPSec。第三章 IP层安全 IPSec3.1 IPSec协议组成类别协议功能交换协议ISAKMP、IKESA协商、密钥生成、身份认证数据封装AH数据完整性数据源发认证抗重放数据封装ESPAH全部功能 机密性 有限传输流机密性3.2 IKE协议主要功能SA协商、身份认证、密钥生成与交换、SA管理SA协商属性加密算法、散列算法、认证方法、D-H群信息、伪随机函数PRF、生命期等PRF生成的四种秘密信息SKEYID基础密钥素材SKEYID_d为IPSec衍生加密素材SKEYID_a用于完整性检验数据源发认证SKEYID_e用于数据加密认证方法4种数字签名、公钥加密、改进的公钥加密、预共享密钥交互模式阶段模式用途第一阶段IKE SA主模式6条消息身份保护第一阶段IKE SA野蛮模式3条消息速度快不保护身份第二阶段IPSec SA快速模式3条消息协商具体安全协议参数辅助新群模式协商新的D-H群辅助通知模式错误/状态通告、SA删除主模式预共享密钥6条消息SA提议 → SA选定 → KEg^iNi → KEg^rNr → IDiiHASH_I → IDirHASH_R3.3 AH认证首部与 ESP封装安全载荷AHESP完整性✅✅数据源发认证✅✅抗重放✅✅机密性❌✅传输流机密性❌有限传输模式 vs 隧道模式传输模式IP头 AH/ESP头 上层协议数据适用端到端隧道模式新IP头 AH/ESP头 原IP头 上层数据适用网关到网关应用场景端到端、基本VPNSite-to-Site、移动用户访问End-to-Site、嵌套隧道第四章 传输层安全 SSL/TLS4.1 SSL协议概述1994年Netscape开发位于应用层和传输层之间保护基于TCP的应用。SSLv3协议套件4个子协议协议作用握手协议算法协商、身份认证、密钥生成记录协议数据承载、分片→压缩→MAC→加密更改密码规范协议通告启用新安全参数仅一条消息警告协议报错和可认证的安全断连4.2 SSLv3握手流程全握手ClientHello → 算法列表随机数 ServerHello ← 选定算法随机数会话ID Certificate ← 服务器证书 ServerHelloDone ← ClientKeyExchange → 加密的预主密钥 ChangeCipherSpec → 启用新参数 Finished* → 加密的完成消息 ChangeCipherSpec ← 启用新参数 Finished* ← 加密的完成消息 Application Data* ↔ 加密通信 Close_notify* ↔ 安全断连会话恢复通过会话ID重用之前协商的参数跳过完整握手提高效率。客户端认证可选服务器发送CertificateRequest客户端额外发送Certificate和CertificateVerify消息。4.3 密钥导出由预主密钥 客户端随机数 服务器随机数 → 主密钥 → 密钥分组Esc服务器写加密密钥Msc服务器写MAC密钥Ecs客户端写加密密钥Mcs客户端写MAC密钥IVcs、IVsc初始化向量4.4 TLS协议TLS vs SSLv3主要差异MAC计算SSLv3用MD5/SHA-1直接计算TLS用HMAC伪随机函数TLS使用P_HASH扩展PRF填充TLS允许填充至任意分组数SSLv3仅填满一个分组版本号TLS 1.0 SSL 3.1TLS 1.2 vs TLS 1.3TLS 1.3删除了更改密码规范协议TLS 1.3握手协议部分加密TLS 1.3新增心跳协议keep-aliveContentTypechange_cipher_spec(0x14)、alert(0x15)、handshake(0x16)、application_data(0x17)、heartbeat(0x18)4.5 SSL/TLS安全问题攻击类型利用的漏洞CBC模式攻击填充字节未做完整性验证Lucky Thirteen利用填充不确定性响应时间差异POODLECBC模式设计缺陷最后一块全为填充时可自由修改BleichenBacher降级攻击伪装SSL 3为SSL 2DROWNSSLv2虽已退役但仍被大量服务器支持4.6 SSL/TLS脆弱性客户端假冒SSL默认不要求客户端认证无法保护UDP应用握手前需建立TCP连接不能对抗通信流量分析IP头和TCP头仍暴露进程中主密钥泄漏风险临时文件可能暴露敏感数据4.7 SSL应用方式分设端口HTTP(80) / HTTPS(443)向上协商在已建立的普通连接上协商启用TLSSSL VPN身份鉴别 访问策略 数据转发SSL证书类型域名验证型单域名/多域名/通配符、组织验证型、扩展验证型第五章 会话安全 SSH5.1 SSH概述SSHSecure Shell应用层协议基于TCP端口22。发展历程SSH1(1995) → SSH2(1998) → SSH G3(2005) → SSH2.0标准(2006, RFC4250-4256)SSH协议组成三层结构Telnet/SFTP/FTP等高层应用 ┌─────────────────────┐ │ SSH连接协议 │ ← 多路复用安全通道 ├─────────────────────┤ │ SSH用户认证协议 │ ← 客户端身份认证 ├─────────────────────┤ │ SSH传输层协议 │ ← 服务器认证算法协商密钥交换 └─────────────────────┘ 22号端口 TCP5.2 SSH传输层协议协议流程版本协商交换版本字符串算法协商交互SSH_MSG_KEXINITCookie、密钥交换算法、热键算法、加密/MAC/压缩算法列表、语言、标志D-H交换客户端发送SSH_MSG_KEXDH_INITD-H公开值服务器返回SSH_MSG_KEXDH_REPLY证书/热键、D-H公开值、对散列值H的签名密钥计算导出6个密钥Ecs, Esc, Mcs, Msc, IVcs, IVsc使用公式 IV HASH(K|H|“A”~“F”|会话ID)需要时可扩展通告新密钥SSH_MSG_NEWKEYS服务请求SSH_MSG_SERVICE_REQUEST → SSH_MSG_SERVICE_ACCEPT服务器认证方式显式方法报文包含数字签名需事先获取服务器公钥/热键隐式方法报文包含用预共享密钥计算的MAC密钥再交换任一方可发起流程与首次相同。报文格式MAC(Mcs/Msc, 序号 | 未加密报文)5.3 SSH用户认证协议运行于传输层提供的安全通道之上支持4种方法方法说明Publickey公钥认证两轮交互通告→响应Password口令认证支持口令更改Hostbased由宿主机代理用户认证用主机私钥签名None用于查询服务器支持的方法公钥认证流程客户端发送签名算法名证书标志FALSE服务器返回PK_OK或FAILURE客户端发送签名算法名公钥签名标志TRUE服务器验证签名5.4 SSH连接协议运行于传输层安全通道隧道之上将隧道多路分解为多个逻辑通道。通道类型4种类型用途session远程交互式会话x11X视窗系统转发forwarded-tcpip远程端口转发direct-tcpip本地端口转发通道生命周期OPEN → OPEN_CONFIRMATION/FAILURE → DATA/EXTENDED_DATA → WINDOW_ADJUST → EOF → CLOSE交互式会话请求类型伪终端请求、x11转发、环境变量、启动shell/可执行命令/子系统、窗口更改、数据流控制、信号、退出状态/信号TCP/IP端口转发将本地端口的数据通过SSH安全通道转发到远程端口保护SMTP、IMAP等应用。本地转发ssh -L 本地端口:目标主机:目标端口 中间主机远程转发ssh -R 远程端口:目标主机:目标端口 中间主机动态转发ssh -D 本地端口 中间主机SOCKS代理5.5 SSH应用SFTP基于SSH2的子系统比FTPS更安全SSH VPN利用端口转发构建无密码访问公钥认证自动配置SSH蜜罐防御暴力破解第六章 代理安全 Socks6.1 代理类型类型工作层次特点应用层代理应用层HTTP代理、FTP代理具备缓存功能ICS连接共享IP层基于NAT多私有地址共享同一公网地址Socks代理应用层垫层可转发所有高层应用端口1080应用层代理的附加功能缓存加速、隐藏真实IP突破IP限制、应用层防火墙6.2 Socks框架C/S模型Socks库客户端替代Socket库函数Sockd守护程序服务器处理CONNECT和BIND请求Socks函数与Socket函数对应Rconnect↔Connect, Rbind↔Bind, Rlisten↔Listen, Raccept↔AcceptSocks优势任何主机都可作为代理服务器统一出口便于部署安全策略Socks5支持多种认证方案。6.3 Socks4CONNECT命令客户端请求代理与远程主机建立TCP连接请求VN | CD | 目标端口 | 目标IP | 用户ID | NULL应答VN | CD | 目标端口 | 目标IPBIND命令通过已建立的主连接请求代理接收远程主机的反向连接代理绑定本地端口 → 客户端通过主连接通告远程主机 → 代理验证远程主机源地址 → 转发连接认证基于Ident协议RFC1413113端口代理向客户端发起身份查询比较用户ID。6.4 Socks5对Socks4的三大扩展1. 身份认证扩展协商阶段客户端列出支持的方法 → 服务器选定一个用户名/口令认证明文传输在Socks层面GSSAPI认证提供完整的安全框架2. 寻址方法扩展IPv4地址、域名、IPv6地址ATYP字段0x01/0x03/0x043. UDP支持UDP ASSOCIATE命令为UDP会话建立转发通道UDP报文前添加UDP请求首部保留、分片、地址类型、目标地址、目标端口6.5 GSSAPI通用安全服务APIGSSAPI为应用开发者屏蔽底层安全机制差异提供统一编程接口。三个关键概念信任状Credential建立安全上下文的先决条件安全上下文Context认证后的安全通道令牌Token承载安全参数的载体核心函数调用GSS_Init_sec_context()客户端发起生成输出令牌GSS_Accept_sec_context()服务器接收令牌完成双向认证GSS_Seal/GSS_Wrap加密完整性GSS_Sign仅完整性GSS_Unseal/GSS_Unwrap、GSS_Verify对应解封/验证Socks5 GSSAPI流程建立信任状 → 交换令牌建立安全上下文 → 子协商单条消息保护方式 → 数据保护子协商的三种保护级别必需的完整性、必需的完整性和机密性、本地配置决定6.6 Socks应用案例伪装来源隐藏客户端真实IP内网漫游通过具有双网卡的公网VPS访问内网资源IPv4/IPv6互通利用域名寻址屏蔽地址差异常用工具Earthworm、xsocks、ShadowSOCKS、SocksCap64第七章 网管安全 SNMPv37.1 SNMP概述SNMP简单网络管理协议是TCP/IP架构下的网络管理标准工作于应用层通常基于UDP。组成要素规范语言SMI、MIB定义、协议定义、安全与管理版本演进SNMPv1基于共同体名明文口令的访问控制无安全保护SNMPv2升级SMIv2延续v1框架SNMPv3标准化框架结构为v1/v2消息提供安全功能7.2 SNMPv3安全服务三级级别认证加密标识noAuthNoPriv无无1authNoPriv有无2authPriv有有37.3 MIB管理信息库使用OID命名树确保对象标识符唯一性。例如1.3.6.1 Internet网络管理子树1.3.6.1.2.1 mgmt/mib1.3.6.1.2.1.2.2 interfaces/ifTable对象与实例对象是类型定义实例是具象化如 sysObjectID.0。7.4 SNMPv3体系结构实体构成SNMP引擎 若干应用SNMP引擎四大模块模块职责调度程序消息收发消息处理模块消息解析与生成安全模块认证与加密访问控制模块MIB访问控制五种应用命令生成器、命令接收器、通告生成器、通告接收器、代理转发器三种实体类型Manager请求发送/响应接收、Agent请求接收/响应发送、Proxy转发7.5 USM基于用户的安全模型核心机制消息验证码MAC提供完整性数据源发认证HMAC-MD5-96 / HMAC-SHA-96消息时效性时间参数时间窗口防重放机密性CBC-DES加密PDU部分权威引擎概念确认类PDU的接收者和非确认类PDU的发送者为权威实体。时间变量snmpEngineBoots引擎重启次数snmpEngineTime最近一次boot以来的秒数密钥本地化将用户口令转化为与特定权威引擎共享的本地化密钥。用户属性用户名、安全名、认证协议/密钥、加密算法/密钥、密钥更新对象等。7.6 VACM基于视图的访问控制模型以组为单位设置访问权限核心要素要素说明组Group包含多个securityModel, securityName二元组安全级别noAuthNoPriv / authNoPriv / authPriv上下文SNMP实体可访问的管理信息集合MIB视图上下文中管理对象的子集视图家族家族名家族掩码访问策略读视图 / 写视图 / 通知视图认证流程6WWho → Where → How → Why → What → Which → Decision7.7 SNMP操作与报文网管操作普通请求GetRequest/SetRequest/GetNextRequest/GetBulkRequest、普通响应Response、告警SNMPv2-Trap、通告InformRequest序列化使用BER编码整个消息及每个字段编码为三元组Tag-Length-Value。第八章 认证协议 Kerberos8.1 Kerberos概述基于对称密码体制和可信第三方的认证系统采用C/S结构支持双向认证。应对的安全威胁用户冒充、IP伪造、重放攻击、服务器冒充8.2 核心设计思想机制作用可信第三方AS维护用户和服务器密钥颁发身份凭证票据许可服务器TGS分离认证与授权TGT可重用时间参数生命期时间戳限制票据有效期会话密钥认证符证明拥有会话密钥防止重放双向认证服务器也向客户端证明身份密钥转化长期密钥→短期会话密钥8.3 Kerberos协议流程客户端 ── KRB_AS_REQ ──→ AS认证服务器 客户端 ←── KRB_AS_REP ── 获取TGT 客户端 ── KRB_TGS_REQ ─→ TGS票据许可服务器 客户端 ←── KRB_TGS_REP ── 获取服务票据Ticket_s 客户端 ── KRB_AP_REQ ──→ 应用服务器 客户端 ←── KRB_AP_REP ── 双向认证完成TGT重用TGT有效期较长免去每次申请服务票据时都需输入口令。8.4 票据与认证符结构票据用服务器密钥加密版本、服务器域/名、标志、会话密钥客户端域/名、认证时间、起止时间、更新终止时间主机地址、传输编码、认证数据认证符用会话密钥加密版本、客户端域/名、校验和客户端时间戳、子会话密钥可选、序号8.5 跨域认证域间共享域间密钥。跨域认证链客户端→域A AS→域A TGS→域B TGS→域B 服务器。U2U用户到用户认证客户端向TGS同时出示自己和目标服务器的TGTTGS用服务器TGT中的会话密钥加密新票据。8.6 消息交换类型交换类型消息用途AS交换KRB_AS_REQ/REP/ERROR获取TGTTGS交换KRB_TGS_REQ/REP/ERROR获取服务票据AP交换KRB_AP_REQ/REP/ERROR访问应用服务安全交换KRB_SAFE防篡改检测校验和机密交换KRB_PRIV加密完整性含时间戳/序号信任状交换KRB_CRED传递票据第九章 应用安全9.1 DNSSECDNS面临的安全威胁DNS欺骗伪装DNS服务器/篡改应答、数据窃听和篡改、ID猜测、名字连锁攻击、信任服务器背叛等。DNSSEC思想利用数字签名技术提供DNS消息认证功能。不改变DNS框架和报文格式以新的资源记录RR形式进行安全扩展。提供数据源发认证、完整性校验、公钥分发机制。9.2 SHTTPHTTPS HTTP SSL/TLS而SHTTP从另一个角度增强Web安全。SHTTP特点不改变HTTP协议框架利用HTTP报文首部扩展新选项提供三种安全保护加密机密性、基于MAC的认证完整性数据源发认证、签名认证不可否认性支持的密钥交换方式带内inband密钥直接放在HTTP首部带外outband接收方通过关键字匹配预先配置的密钥D-H交换基于RSA公钥加密的密钥传输SHTTP vs HTTPSSHTTPHTTPS不可否认性支持不支持防火墙可见性可检测行为仅见端口号灵活性可任意组合安全服务较固定证书需求无限制必须依托证书课程总结安全协议分层全景应用层 Telnet/SSH, DNS/DNSSEC, SNMPv3, SMTP/POP3/PEM, PGP, Kerberos, L2TP 传输层 SSL/TLS, Socks | TCP, UDP 网络层 IPSec (AH/ESP), IKE | IP 网络接口层 L2TP | PPP, PAP, CHAP 硬件层要点回顾层次协议核心安全服务关键机制链路层L2TP隧道封装非严格安全协议PPP扩展、CHAP认证、需配合IPSecIP层IPSec完整性、认证、抗重放、机密性AH/ESP、IKE、D-H、传输/隧道模式传输层SSL/TLS机密性、完整性、服务器认证握手记录密钥导出、会话恢复会话层SSH远程安全登录端口转发D-H交换、三层协议架构、通道机制代理层Socks5代理转发访问控制CONNECT/BIND/UDP、GSSAPI网管层SNMPv3认证加密访问控制USM用户安全、VACM视图控制认证Kerberos双向认证单点登录票据认证符、TGTTGS、跨域认证应用层DNSSEC/SHTTPDNS认证/Web安全增强数字签名/HTTP首部扩展