Skip to content

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 SNcANc=0;
      • Step 2: Client←-SYN/ACK--Server,选择Initial SNsANs=SNs+1;
      • Step 3: Client--ACK-→Server,SNc=SNc+1ANc=SNs+1;

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
    1. byte-0 (1 byte): Version (0.5 byte) + Header Length (0.5 byte, 单位是4 bytes)
    2. Type of Service (1 byte): 服务类型/流量优先级
    3. Total Length (2 bytes): 整个包长度,Header + Payload
    4. IP Identification (2 bytes)
    5. Flags + Fragment Offset (2 bytes)
    6. TTL (1 byte): Time To Live, 每一hop减一,小于等于0时drop
    7. Protocol (1 byte): 标识上层协议(TCP/UDP)
    8. Header Checksum (2 bytes): 只校验Header
    9. Src IP (4 bytes) + Dst IP (4 bytes)
    • 一共20个固定bytes
    • Options + Padding (0–40 bytes):Padding保证Header总长对齐4 bytes
  • 传输层:段 Segment
    1. Src Port (2 bytes) + Dst Port (2 bytes)
    2. Sequence Number (4 bytes): 该Segment中第一个数据字节的序列号
    3. ACK Number (4 bytes): 下一个期望字节的序列号
    4. Data Offset (0.5 byte): Header总长度
    5. Reserved + Flags (1.5 bytes): 3个保留bits + 9 bits control flags (SYN, ACK, FIN, RST, ...)
    6. Window Size (2 bytes):
    7. Checksum (2 bytes):
    8. Urgent Pointer (2 bytes):
    • 一共20个固定bytes
    1. Options + Padding (0–40 bytes):Padding保证Header总长对齐4

老资历密码学

  • Caesar Cipher: 所有字符向后偏移N个,容易被频率分析(frequency analysis)
  • Enigma: 相同字符可映射到不同字符作为密文
  • One-time Pad (OTP): 理论完美加密
    • m,k{0,1}λ,c=mk
    • c,k{0,1}λ,m=ck
    • k{0,1}λ
    • 若k真正随机且只用一次,即使攻击者拥有无限算力,也无法从密文中获得任何关于明文的信息(信息论安全 Information-theoretic security),即
    Pr[M=mC=c]=Pr[M=m]
    • 局限:key不能复用,key长度等于明文长度,key交换困难,工程上不可行

对称加密 Symmetric Crypto Fundamentals

  • 加密系统的思想
    1. 明文(Plaintext)为m,密文(Ciphertext)为c,密钥(Key)为k
    2. 系统不应该依靠算法的保密性,即使敌人知道算法也不能破坏系统 (Kerckhoffs’s insight)
    3. 安全应该基于密钥(Key)
  • 对称加密系统的行为
    • 一整套算法及行为,包含密钥生成、编码、解码(KeyGen, Enc, Dec)
    • KeyGen: 输入security parameter λ,输出密钥k,每次运行生成不同的k
    • Enc, Dec: 算法相同,行为由k决定,算法公开,k保密
    • 要求正确性:
    Deck(Enck(m))=m

伪随机生成器 Pseudorandom Generator (PRG)

  • 原理:OTP要求km不现实,如何拉长k(直接重复使用不安全)
    • 需要一个函数Pad=G(k),输入短k,输出长且伪随机Pad,即PRG
    • 定义s为输入seed,l为拉长的长度(strech):
    s{0,1}λ,G:{0,1}λ{0,1}λ+l
    • Un:{0,1}𝑛是均匀分布,当s均匀随机时,G(s){0,1}λ+l上诱导一个分布,要求该分布看起来与Uλ+l计算不可区分(computationally indistinguishable)
    • 这意味这没有任何多项式时间(polynomial-time)算法,能以显著大于1/2的成功概率区分G(s)Uλ+l,即G(s)的伪随机性(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
    Enc(m,k)=G(s)mDec(c,k)=G(s)c
  • PRG的局限:产生的是流密码(stream ciphers),但现实中消息离散,希望把伪随机串变成伪随机块(Block cipher & Stream cipher)

伪随机函数 Pseudorandom Function (PRF)

  • 带密钥k(seed)的函数Fk(x)
  • PRF family: {Fk(x)}k{0,1}λ每个k对应一个Fk(x)
  • PRF是输入明文输出密文,直接决定加密过程对明文如何操作,即:
Fk:{0,1}λ{0,1}λ
  • 对任意x,输出的Fk(x)看起来是随机的,在多项式时间内无法区分

伪随机置换 Pseudorandom Permutation (PRP)

  • PRF是随机函数,不一定可逆;PRP是随机置换,要求必须可逆,且能在多项式时间内算出
  • Feistel Construction
    • F(x||y)=y||(F(y)x)
    • 其中:F(x)是不必须可逆的PRF,x和y分别是输入的左右两半,F(x)是Feistel Construction构造后的输出
    • 设输入为x、y,输出为L、R
      • 正变换:L=y,R=F(y)x
      • 逆变换:y=L,x=F(L)R
      • 正变换转化右边,逆变换转化左边
    • 特点:F(x)不一定可逆,但Feistel Construction后整个结构一定可逆
    • 缺点:输出中有一半是输入原文,需要多轮迭代
  • 多轮Feistel Construction
    • 进一步混合左右两半,原始输入被彻底打散
    • 逆变换:反向执行相应轮次
    • 不同轮次用不同Fk(x),用短的子密钥和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逆操作,重排
  • 缺点:密钥太短(只有256种),分组太小(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:明文与第一轮密钥按位异或
    X0=PK
    • Main rounds 主轮:
      1. SubBytes:非线性字节替换(S-box)
      2. ShiftRows:行循环移位,提供扩散(Permutation)
      3. MixColumns:列向量的线性混合,提供跨字节扩散
      4. AddRoundKey:与轮密钥异或(OTP)
    • Final round:与主轮相比没有MixColumns,输出密文
  • 应用:广泛,如TLS、WPA2/3、SSH、VPN

分组密码模式 Block Cipher Modes

  • 分组密码本身只能加密一个block,分组密码模式结局如何安全、高效地加密多个 block的问题
  • 如AES:先由密钥k选定一个函数Fk,再由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
    • H:{0,1}λ{0,1}n,nλ 输入可任意长,输出固定长
    • 碰撞(collisions)一定存在,但极难找到,工程上可接受
  • 使用Salt提升安全性
    • 目标:解决离线攻击,比如预计算碰撞
    • 原理:引入在线随机s(salt),使攻击者从找H(x)=H(x)变成找H(s,x)=H(s,x),因为s是运行时才给出的,攻击者无法提前准备
  • 构造Hash Function
    1. 分块
    2. Padding
    3. 长度编码
    4. 初始化向量IV,设置y=0n
    • Toy Example of Pad-then-Hash
  • 用Hash构建MAC (Build a MAC from Hash)
    • NMAC: NMAC(k,k,m)=H(k||H(k||m))
    • HMAC: HMAC(K,M)=H((Kopad)||H((Kipad)||M))
  • 应用:文件完整性校验、Merkle Tree、区块链

非对称加密 Asymmetric Cryptography