EIE553 Security in Data Communication Keystones
Lecture 1
CIA三要素
- 机密性 Confidentiality
- 防止链路上的窃听者(eavesdropper)被动读懂消息,仅目标接收方(Intended Parties)可读
- 常见机制:TLS、Access Control
- 加密通常隐藏负载(payload),但不隐藏元数据(metadata),这会暴露流量特征(Traffic characteristic)
- 最弱环节问题:加密被攻破大多不是因为算法本身,而是人不靠谱,如密钥泄露(Keys eposed)、信任host被入侵(Trusted hosts compromised)、内鬼威胁(Insider threats)等
- 加密:把明文(Plaintext)变成不可读的密文(Ciphertext),如对称加密(Symmetric crypto)、非对称加密(Asymmetric crypto),还要注意密钥管理(Key management)
- 完整性 Integrity
- 防止数据在不被探测(undetected)的情况下被篡改(Tampered)、注入(Injected)、丢弃(Dropped)、重排(Reordered)
- 保护层级:流层级(Stream level)和消息层级(Message / field level)
- 检测(Detect)到篡改后:丢弃(discard) / 请求重传(Request retransmission) / 回滚(Roll back)
- 常见威胁:注入(Injection)假消息、重放(Replay)
- 检查方法:
- 信息认证码(Message Authentication Codes, MACs)
- 防重放:Nonces / sequence numbers / timestamps
- 可用性 Availability
- 保证数据和系统可用(usable)可达(reachable)
- 反例:被DDOS打死、配置错误、硬件故障
More Security Goals beyond CIA
- 真实性 Authenticity
- 确保数据真实来自其声称的身份(Claimed source/identity)
- 基于完整性,如果数据可被修改,发送者是谁无意义
- 两种认证概念:认证发送者(Data-origin)、认证对端(Peer-entity)
- 常见威胁:冒充合法实体(Impersonation)、中间人攻击(MitM)、共享密钥(Shared passwords/keys)
- 可追责性 Accountability
- 不可否认性 Non-repudiation
安全工具 Security Tools
- 信息安全策略(Information Security Policies, ISPs)
- 访问控制(Access Control)
- 只有被授权主体(Authorized subject)可操作
- 核心步骤:认证身份(AuthN)和权限(AuthZ)
- 密码学 Cryptography
- 对称密钥+公私钥(Symmetric + public/private keys)
- 密码学哈希函数(Hash function):任意长度输入产生固定长度指纹,微小变化导致指纹巨变,可用于完整性校验
- 信息认证码(Message Authentication Codes, MACs):如HMAC-SHA256
- 数字签名(Digital signatures)
- 通信安全 Communication Security
- 网络接入控制(Network Access Control, NAC):如VPN、802.1X认证、防火墙
- 网络分段/隔离(Network segmentation/segregation):如VLAN、DMZ
- 保护传输中信息(Secure transfer of information)
- 事件管理 Incident management
被动攻击vs主动攻击 Passive vs. Active Attacks
- 被动攻击:只监听,不改变数据(Listen only),如窃听(Eavesdropping)、流量分析(Traffic analysis)
- 主动攻击:干预并改变数据(Interfere and change),如篡改(Tampering)、伪装(Masquerade)、重放(Replay)、拒绝服务攻击(DoS)
网络基础知识
- OSI七层模型
- TCP/IP四层模型
- 互联网基础设施 Internet Infrastructure
- 传输层控制协议 Transmission Control Protocol (TCP)
- 在IP层之上提供可靠(Reliable)、面向连接(Connection-oriented)、端对端(end-to-end)通信
- 三次握手(SN: Sequence Number; AN: Answer Number)
- Step 1: Client--SYN-→Server,选择Initial
, ; - Step 2: Client←-SYN/ACK--Server,选择Initial
, ; - Step 3: Client--ACK-→Server,
;
- Step 1: Client--SYN-→Server,选择Initial
Lecture 2
协议数据单元 Protocol Data Units(PDU) Across Layers
- 封装方式:上一层整体作为下一层的payload
- 应用层消息 --加TCP header--> TCP段 --加IP header--> IP包 --加Ethernet header--> 链路帧
- 链路层:以太网帧 Ethernet Frame
- Header (14 bytes):Dst Mac (6 bytes) + Src Mac (6 bytes) + Type(v4/v6) (2 bytes)
- Payload (46-1500 bytes): 至少46 bytes,不足padding
- Trailer(FCS) (4 bytes): 帧校验序列 Frame Check Sequence,CRC,在帧尾
- Preamble (8 bytes): 帧前发送端与接收端时钟同步,不算header
- IP层:IP包 IP Packet
- byte-0 (1 byte): Version (0.5 byte) + Header Length (0.5 byte, 单位是4 bytes)
- Type of Service (1 byte): 服务类型/流量优先级
- Total Length (2 bytes): 整个包长度,Header + Payload
- IP Identification (2 bytes)
- Flags + Fragment Offset (2 bytes)
- TTL (1 byte): Time To Live, 每一hop减一,小于等于0时drop
- Protocol (1 byte): 标识上层协议(TCP/UDP)
- Header Checksum (2 bytes): 只校验Header
- Src IP (4 bytes) + Dst IP (4 bytes)
- 一共20个固定bytes
- Options + Padding (0–40 bytes):Padding保证Header总长对齐4 bytes
- 传输层:段 Segment
- Src Port (2 bytes) + Dst Port (2 bytes)
- Sequence Number (4 bytes): 该Segment中第一个数据字节的序列号
- ACK Number (4 bytes): 下一个期望字节的序列号
- Data Offset (0.5 byte): Header总长度
- Reserved + Flags (1.5 bytes): 3个保留bits + 9 bits control flags (SYN, ACK, FIN, RST, ...)
- Window Size (2 bytes):
- Checksum (2 bytes):
- Urgent Pointer (2 bytes):
- 一共20个固定bytes
- Options + Padding (0–40 bytes):Padding保证Header总长对齐4
老资历密码学
- Caesar Cipher: 所有字符向后偏移N个,容易被频率分析(frequency analysis)
- Enigma: 相同字符可映射到不同字符作为密文
- One-time Pad (OTP): 理论完美加密
- 若k真正随机且只用一次,即使攻击者拥有无限算力,也无法从密文中获得任何关于明文的信息(信息论安全 Information-theoretic security),即
- 局限:key不能复用,key长度等于明文长度,key交换困难,工程上不可行
对称加密 Symmetric Crypto Fundamentals
- 加密系统的思想
- 明文(Plaintext)为m,密文(Ciphertext)为c,密钥(Key)为k
- 系统不应该依靠算法的保密性,即使敌人知道算法也不能破坏系统 (Kerckhoffs’s insight)
- 安全应该基于密钥(Key)
- 对称加密系统的行为
- 一整套算法及行为,包含密钥生成、编码、解码(KeyGen, Enc, Dec)
- KeyGen: 输入security parameter λ,输出密钥k,每次运行生成不同的k
- Enc, Dec: 算法相同,行为由k决定,算法公开,k保密
- 要求正确性:
伪随机生成器 Pseudorandom Generator (PRG)
- 原理:OTP要求
不现实,如何拉长k(直接重复使用不安全) - 需要一个函数
,输入短k,输出长且伪随机Pad,即PRG - 定义s为输入seed,l为拉长的长度(strech):
- 设
是均匀分布,当s均匀随机时, 在 上诱导一个分布,要求该分布看起来与 计算不可区分(computationally indistinguishable) - 这意味这没有任何多项式时间(polynomial-time)算法,能以显著大于1/2的成功概率区分
和 ,即 的伪随机性(Pseudorandomness)
- 需要一个函数
- 实际例子:AES in counter mode, ChaCha20
- 不可预测性 Unpredictability
- 前向不可预测 Forward unpredictability:已知前n个bits,不可预测第n+1个bit,前面的输出不会增加未来预测成功的概率
- 后向不可预测 Backward unpredictability:无法通过输出预测seed是什么
- 统计测试 NIST Test Suite
- Frequency Test:0和1的数量接近1比1
- Runs Test:连续1或连续0的长度要合理
- Maurer’s Universal Test:测试熵和压缩性(EIE546学过),可压缩性过强则有问题
- 必须通过测试,但依然不保证绝对安全
- 构造流密码(Stream Cipher)
- 构造输入
- 随机数生成器 Random Number Generator (RNG):产生真正的短随机数,来自硬件或OS;PRG负责把短随机数扩展为长伪随机字节流
- Nonce (number used only once) / IV (Initialization Vector): 对于同一个k,每次加密用的n不同,保证密文唯一性;n不用保密,但必须唯一不重复;seed则必须保密
- 长期主密钥(k) long-term secret key:来自RNG
- 构造seed:字符串拼接k和nonce
- 多次调用PRG,短seed变成
长度伪随机字节流 - Codec方式:其实跟OTP一样(按位异或),只不过用的是PRG基于seed生成的足够长的伪随机Padding
- 构造输入
- PRG的局限:产生的是流密码(stream ciphers),但现实中消息离散,希望把伪随机串变成伪随机块(Block cipher & Stream cipher)
伪随机函数 Pseudorandom Function (PRF)
- 带密钥k(seed)的函数
- PRF family:
,每个k对应一个 - PRF是输入明文输出密文,直接决定加密过程对明文如何操作,即:
- 对任意x,输出的
看起来是随机的,在多项式时间内无法区分
伪随机置换 Pseudorandom Permutation (PRP)
- PRF是随机函数,不一定可逆;PRP是随机置换,要求必须可逆,且能在多项式时间内算出
- Feistel Construction
- 其中:
是不必须可逆的PRF,x和y分别是输入的左右两半, 是Feistel Construction构造后的输出 - 设输入为x、y,输出为L、R
- 正变换:
- 逆变换:
- 正变换转化右边,逆变换转化左边
- 正变换:
- 特点:
不一定可逆,但Feistel Construction后整个结构一定可逆 - 缺点:输出中有一半是输入原文,需要多轮迭代
- 多轮Feistel Construction
- 进一步混合左右两半,原始输入被彻底打散
- 逆变换:反向执行相应轮次
- 不同轮次用不同
,用短的子密钥和PRG - 通常3轮就能实现PRP,实际应用中会更多轮(16+)
- Feistel Cipher(r 轮 Feistel 密码)
- 多轮Feistel串联就能构成完整的分组密码
- 无需单独设计解密算法
Data Encryption Standard (DES)
- IBM设计,1970s美国标准,64-bit明文块,56-bit密钥长度
- 主要步骤
- 初始置换 Initial Permutation (IP)
- 16轮Feistel,每一轮用48bits子密钥
- 轮函数 (Round Function) F:S-box + P-box
- Final Permutation(FP):IP逆操作,重排
- 缺点:密钥太短(只有
种),分组太小(64-bit明文块) - 3DES (Triple DES):用三个独立密钥DES三次,但非常慢
Advanced Encryption Standard (AES)
- 如今的主流对称加密算法,现代对称加密的事实标准
- AES 是一个由密钥索引的伪随机置换族(PRP family)
- 128-bit明文块,表示为4x4矩阵(state)
- 密钥长度
- 128-bit(AES-128),10轮Feistel Construction
- 192-bit(AES-192), 12轮Feistel Construction
- 256-bit(AES-256), 14轮Feistel Construction
- 主要步骤
- Initial state:明文与第一轮密钥按位异或
- Main rounds 主轮:
- SubBytes:非线性字节替换(S-box)
- ShiftRows:行循环移位,提供扩散(Permutation)
- MixColumns:列向量的线性混合,提供跨字节扩散
- AddRoundKey:与轮密钥异或(OTP)
- Final round:与主轮相比没有MixColumns,输出密文
- 应用:广泛,如TLS、WPA2/3、SSH、VPN
分组密码模式 Block Cipher Modes
- 分组密码本身只能加密一个block,分组密码模式结局如何安全、高效地加密多个 block的问题
- 如AES:先由密钥k选定一个函数
,再由mode输入不同nonce和counter,从而这一次调用的具体输出 - Electronic Codebook (ECB)
- 每个block独立加密
- 泄露模式,不安全
- Cipher Block Chaining (CBC)
- 每个明文块先异或上一个密文块,第一个明文块用随机Initialization Vector (IV)
- Cipher Feedback (CFB)
- 用前一个密文(或IV)生成密钥流
- Output Feedback (OFB)
- Counter (CTR)
- 主流
Lecture 3
填充 Padding
- 目标:把任意长度的数据,用可逆(reversible)的方式变成以块为单位的长度(block size)
- PKCS’s Cryptographic Message Syntax
- 规则:要补n个字节,就在结尾填充n个'n',如缺5个字节就补5个0x05
- 如果数据本来不用补(是整数个块大小),要补一个完整块
消息认证码 Message Authentication Code(MAC)
- 目标:确保消息来自知道密钥的人
- Chosen-Ciphertext Attack(CCA):攻击者多次构造密文让解密器输出解,从而反推明文信息
- 原理:密文结尾附带用密文和密钥算出的MAC Tag,解密前先验证MAC是否正确
- 由三个算法组成:
- 加密:
- 安全性:不可伪造性(Unforgeability)
- 由三个算法组成:
- 加密+MAC组合方式
- MAC-then-Encrypt:先算明文的MAC,再把明文和MAC拼一起加密,ciphertext integrity不足
- Encrypt-&-MAC:分别算明文的MAC和密文,再拼一起,如果两个消息的MAC相同可能泄露明文
- Encrypt-then-MAC:先算密文,再算密文的MAC,拼在一起,CCA-Secure,最优
哈希函数 Hash Function
- 目标:在节省带宽和时间的情况下,校验大文件一致性
- 原理:long inputs → shorter outputs
输入可任意长,输出固定长 - 碰撞(collisions)一定存在,但极难找到,工程上可接受
- 使用Salt提升安全性
- 目标:解决离线攻击,比如预计算碰撞
- 原理:引入在线随机s(salt),使攻击者从找
变成找 ,因为s是运行时才给出的,攻击者无法提前准备
- 构造Hash Function
- 分块
- Padding
- 长度编码
- 初始化向量IV,设置
- Toy Example of Pad-then-Hash
- 用Hash构建MAC (Build a MAC from Hash)
- NMAC:
- HMAC:
- NMAC:
- 应用:文件完整性校验、Merkle Tree、区块链