CNATDA 第八章学习笔记

Computer Networking: A Top-Down Approach (8th Edition)第八章 Security in Computer Networks 的学习笔记

What Is Network Security?

secure communication 有下列性质

  • confidentiality: 由于通信可以被拦截保密意味着需要以某种方式加密
  • message integrity: 保证消息未被修改
  • end-point authentication: 能够确认对方的身份
  • operational security: 保护 organization network 不被攻击

intruder 可以对 message 进行 eavesdroppingmodificationinsertiondeletion进而实现各种攻击

在网络中需要进行 secure communication 的双方可能是两个人类用户可能是 client 和 server可能是两个 router……

security functionality 可以在网络的各个 layer 提供虽然底层的 security 看起来覆盖了高层的 security但并非完全如此例如 IP-layer security 不能区分 IP address 相同的多个用户并且底层协议的更新普及相对更慢在上层采取措施可以更快生效

Principles of Cryptography

plaintext (cleartext) 经 encryption algorithm 得到 ciphertext由 decryption algorithm 回到 plaintext

encryption algorithm 一般是公开的为了达到保密的效果还需要使用 key设 plaintext 是 mmsender 使用 key KAK_A 进行 encrypt 得到 KA(m)K_A(m)receiver 使用 key KBK_B 进行 decrypt 得到 KB(KA(m))=mK_B(K_A(m)) = m

在 symmetric key system 中KA=KBK_A = K_B是保密的在 public key system 中KAK_A 是公开的KBK_B 是保密的

Symmetric Key Cryptography

在现代密码所使用的 block cipher 中plaintext 被划分为若干个 block例如在 AES 中每 128 bit 是一个 blockcipher 会构建一个 212821282^{128} \to 2^{128} 的 plaintext 到 ciphertext 的一一对应而 key 用来生成这个对应关系AES 的 key length 可以是 128/192/256 bit太小的 block size / key length 会导致安全性不够将整个对应关系存下来 key 会过长所以只能用没那么长的 key 来生成对应关系太大的 block size / key length 可能会影响性能

如果 plaintext 中有多个相同的 block它们对应的 ciphertext 也相同就会暴露出一定的信息为了避免这样的风险可以给每个 block 异或上一个随机数再加密

如果真的每个 block 都独立地生成一个随机数则传输时需要附上这一堆随机数整个 message 的长度会翻倍所以实际上并不会这样做而是会使用称作 cipher block chaining (CBC) 的技术每条 message 只生成一个随机数称作 initialization vector (IV)记作 c0c_0而 plaintext 的第一块记作 m1m_1ci1mic_{i-1} \oplus m_i 加密得到 cic_i即每个 block 异或的是上一个 block 的加密结果这样传输时的 overhead 就只有一个 block size 的 IV 了

Public Key Encryption

symmetric key cryptography 需要双方以某种方式事先做到共享 key而这本身就需要 secure communication以前这可以通过线下之类的方式进行而在网络中则需要另外的方式

在 public key encryption 中接收方有一对 keypublic key 用来加密private key 用来解密public key 是公开的从而不需要事先依赖于 secure communication 进行 key exchange

public key encryption 带来身份认证的问题在 symmetric key cryptography 中知道 key 隐含了身份但知道 public key 则不代表身份所以需要额外的机制来进行认证

RSA 是目前最流行的 public key encryption algorithm:

  1. 选两个大质数 ppqq一般要达到 1024~4096 bit 长
  2. n=pqn = pqz=(p1)(q1)z = (p-1)(q-1)
  3. 选一个比 nnzz 互质的数 ee
  4. 算出 ee 的乘法逆元 d=e1modzd = e^{-1} \bmod z
  5. public key 是 (n,e)(n, e)private key 是 (n,d)(n, d)
  6. encryption: 设 plaintext 是 mm (m<nm < n)则 ciphertext 是 c=memodnc = m^e \bmod n
  7. decryption: m=cdmodnm = c^d \bmod n

RSA 的计算比 AES 慢为了性能通常会结合 symmetric key cryptography 一起使用每次生成一个用于 symmetric key cipher 的 session key通过 public key encryption 来进行 key exchange实际的通信则使用 symmetric key cipher

RSA 的安全性依赖于大数分解的困难性这受到量子计算的挑战

Message Integrity and Digital Signatures

message integrity 即 sender 身份真实message 未遭篡改

cryptographic hash function 在一般的 hash 的基础上要求难以构造 collision从而可以用来验证消息未被篡改

可以用 message authentication code (MAC) 来验证 message integrity双方共享保密的 authentication key设 message 是 mmcryptographic hash function 是 HH最终传输的是 (m,H(m+s))(m, H(m + s))具体实现可能有所不同例如 HMAC 会 hash 两次可以使用 public key encryption 或者其他方式来 exchange authentication keyMAC 本身可以不涉及 encryption如果只需保证 message integrity 而不在意 confidentiality 则无需付出 encryption 的性能代价

digital signature 相当于 MAC 的 public key 版本可以用来验证 sender 的身份而验证者只需知道 public key可以保持 private key 的私密RSA 的 encryption 和 decryption 其实是可交换的即先 public key 再 private key 或者先 private key 再 public key 都可以得到原来的 plaintextdigital signature 即使用 private key 进行加密而使用 public key 进行解密RSA 计算慢所以可以对 cryptographic hash 而非 message 本身计算 digital signature

虽然 MAC 和 digital signature 功能有一定的类似但 MAC 可以完全不涉及 encryptiondigital signature 则依赖于 public key infrastructure (PKI)

digital signature 验证的是 message 和 public key 的对应关系还需要额外的措施来保证 public key 和 entity (sender) 的对应关系certification authority (CA) 提供了这一服务通过某些手段认证 public key 和 entity 的对应关系并颁发 certificatecertificate 包含 entity 和 public key 的相关信息以及有效期以及使用 CA 的 public key 对这些信息创建的 digital signature有了 certificate对 public key 和 entity 之间关联的信任取决于对 CA 的信任

End-Point Authentication

书上说了很多但感觉本质上就是Alice 要向 Bob 证明自己的身份则 Bob 提供一个一次性的随机数 nonceAlice 通过某种方式例如 symmetric key cryptography / MAC发回 nonce 并保证 message integritynonce 用来防止 playback attack

Securing E-Mail

Secure E-Mail

就是上面这些东西的一个实例没啥新东西结合 digital signature 和使用 session key 的 encryption 即可需要双方互相知道对方的 public key分别用于 digital signature 的验证和 session key 的传输public key 可以由 CA 认证

PGP

PGP 提供了 signencryptsign and encrypt 等功能public key 通过用户之间的 web of trust 而非 CA 来 certify可以线下举办 key-signing party 来互相 sign1

Securing TCP Connections: TLS

TLS (Transport Layer Security) 为 TCP 提供了 security services是 SSL (Secure Sockets Layer) 标准化后的升级版只不过现在人们有时仍会把 TLS 误称为 SSLOpenSSL 的名字也有一定的误导性2

TLS 通常用于 HTTP表现为网址开头是 https://但它实际上可以用于任何基于 TCP 的 applicationTLS 位于 application layer但它提供了类似 TCP 的 API对于 application developer 来说就像是 transport layer 的一部分

TLS Handshake

  1. TCP 3-way handshake
  2. client 发送 TLS versionsupported cipher suites (symmetric algorithmpublic key algorithmHMAC algorithm)client nonce
  3. server 发送 selected cipher suitecertificateserver nonce
  4. client 验证 certificate得到 server 的 public key随机生成 pre-master secret (PMS)发送经 server 的 public key 加密的 PMS
  5. 由 PMSclient nonceserver nonce 可以计算得到 master key由 master key 可以得到一系列用于后续加密的 keyclient 和 server 各有用于 symmetric key encryption 的 key 和用于 HMAC 的 key如果使用 CBC 则还有双方的 IV
  6. client 发送上面这些 handshake message 的 HMAC可以和 encrypted PMS 一同发送
  7. server 发送上面这些 handshake message 的 HMAC

其中一开始的 nonce 用来防止 replay attack并且 server nonce 参与 master key 的计算可以防止 key 完全由 client 决定而最后的 HMAC 用来防止篡改 handshake message例如将 supported cipher suites 改为只有 weak algorithm

TLS 1.3 对 handshake 过程进行了简化

TLS Data Transfer

在 TLS 中TCP byte stream 被切分为 records为每个 record 计算 HMAC并将 record + HMAC 进行 encrypt这只保证了每个 record 的 integrity为了保证整个 byte stream 的 integrity每个 record 还有一个 sequence number参与 HMAC 的计算来防止攻击者对 record 进行 reorder / replay / remove

TLS record 包含

  1. type: handshake / data
  2. TLS version
  3. length: 用来标记 record 的结尾
  4. data + HMAC, encrypted

TLS Connection Closure

为了防止 truncation attack即伪造 TCP FIN segment在 TLS 中需要先发送保证了 integrity 的 closure TLS record 再发送 TCP FIN segment 来结束连接

Network-Layer Security: IPsec and Virtual Private Networks

IPsec and Virtual Private Networks (VPNs)

如果一个 institution 位于多个地理位置而想保证 institution 内通信的私密一种选择是建立一个 private network在物理上与 Internet 进行隔离但这样需要自己搭建整套网络基础设施开销非常大

另一种选择是使用 virtual private network在 VPN 内通过 Internet 传输数据时会进行加密具体来说是在内网的 gateway router 或直接连到公网的 host 处例如学校连到 Internet 的 gateway router / 回家了的学生的设备上为了叙述方便下文中都假设是 gateway router 而不是 host在 payload 前加上 IPsec header

The AH and ESP Protocols

IPsec 可以使用 Authentication Header (AH) protocol 或者 Encapsulation Security Payload (ESP) protocol其中 AH 只提供了 source authentication 和 data integrityESP 在此基础上还提供了 confidentiality使用 IPsec 的场景中通常需要保证 confidentiality所以 ESP 用得更多书中只讲 ESP

Security Associations

两个 entity (gateway router) 通过 IPsec 通信时需要建立称作 security association (SA) 的 logical connectionSA 是单向的如果要互发消息则需要建立两个 SA

SA 有下列 state information

  • security parameter index (SPI)一个 32-bit identifier
  • source & destination IP address
  • encryption algorithm, encryption key
  • integrity check algorithm, authentication key

一个 IPsec entity 可能同时 maintain 着很多 SA 的 state information存储在 security association database (SAD) 中

The IPsec Datagram

IPsec 有两种 packet form分别用于 tunnel mode 和 transport mode其中 tunnel mode 更常用书中只讲 tunnel mode

一个 IPsec datagram 的结构如下

  • new IP header (source / destination 是 gateway routerprotocol 是 ESP)
  • enchilada (authenticated)
    • ESP header
      • SPI
      • sequence number
    • (encrypted)
      • original IP header
      • original IP payload
      • ESP trailer
        • padding (for encryption block size requirement)
        • padding length
        • next header 4 for IP Encapsulation within IP in tunnel mode3
  • ESP MAC for authentication of the enchilada

gateway router 会维护一个 security policy database (SPD)当其接收到一个待转发的 IP datagram 时会查询 SPD根据 source IP addressdestination IP addressprotocol 来决定是否使用 IPsec 进行处理

IKE: Key Management in IPsec

IPsec 可以手动配置 key但大型的 VPN 往往需要使用 Internet Key Exchange (IKE) protocol 来自动建立 SA

书中对 IKE 的描述太简陋了说了跟没说差不多以后再说吧

Securing Wireless LANs and 4G/5G Cellular Networks

security 在 wireless network 中更加重要因为 attacker 只需要将设备置于 sender 的 transmission range 内就可以窃听

wireless network security 主要需要两个功能

  • mutual authentication: mobile device 和 access point / base station 需要互相认证对方
  • encryption: 通信内容需要加密一般使用 symmetric key cryptography (AES)需要进行 shared symmetric key derivation

Authentication and Key Agreement in 802.11 Wireless LANs

802.11 的认证由 authentication server (AS) 进行AS 可以和 AP 一体也可以通过网络连接

802.11 的 security specification 有 WEPWPA1WPA2WPA3其中 WEP 有严重的漏洞

总体上的步骤为

  1. 在 AP 广播自己的存在时会附带其支持的 security mechanismmobile device 连接到 AP 时可以选择要使用哪个
  2. mobile device 和 AS 预先有一个 pre-shared keyPSK也就是 Wi-Fi 密码会根据这个 PSK 进行 mutual authentication 和 shared symmetric key derivation
  3. AS 把 shared symmetric key 告诉 AP
  4. 使用 shared symmetric key 进行加密通信

WPA 的核心是一套 four-way handshake其中前两步完成 mutual authentication 和 shared symmetric key derivation后两步用于 group key derivation书中不涉及

  1. AS 生成一个 AS nonce发给 mobile device
  2. mobile device 生成一个 mobile nonce根据双方的 nonce双方的 MAC address 以及 PSK 得到 shared symmetric key然后向 AS 发送 mobile nonce以及编码了 AS nonce 和 PSK 的 HMAC

mobile device 和 AS 的通信通过 EAP (extensible authentication protocol) 进行它在 mobile device 到 AP 使用 EAP over LAN在 AP 到 AS 使用 RADIUS 或更新的 DIAMETER 协议

Authentication and Key Agreement in 4G/5G Cellular Networks

cellular network 使用存储在 SIM card 和 HSS 中的 PSK 进行认证在 4G LTE 中步骤如下

    1. mobile device 向 base station 发送 attach message
    2. MME 向 HSS 发送 IMSI 以及 visited network information
    1. HSS 计算出能证明自己身份的 auth token以及用于证明 mobile device 身份的 expected auth response将它们发送给 MME
    2. MME 将 auth token 发给 mobile device
    1. mobile device 根据 auth token 认证 HSS
    2. mobile device 计算出 auth response发送给 MME
    1. MME 比较 HSS 发送的 expected auth response 和 mobile device 发送的 auth response 来认证 mobile device
    2. MME 将下一步需要用到的 key 发给 base station
  1. base station 和 mobile device 进行 shared symmetric key derivation会在 control plane 和 data plane 使用不同的 key

5G 的认证有一些不同

  • authentication decision 从 MME 挪到了 HSS使得 visited network 的 middleman 作用更小
  • 新增了两种 authentication protocol一种和 4G 类似但使用了 EAP一种不需要 PSK 而适用于 IoT
  • 使用了 public key cryptography 来加密 IMSI

Operational Security: Firewalls and Intrusion Detection Systems

Firewalls

firewall 用来控置哪些流量可以进入 internal network / host一般要保证所有出入的流量都经过 firewall并且 firewall 自身不会被攻击者控制

Traditional Packet Filters

通过 packet header 来控制是否允许 packet 通过例如根据 IP addressprotocol typeportTCP flagsICMP message typerouter interface 等进行控制

一些 packet filter 可以实现的 policy 的例子

  • drop outgoing 的对 port 80/443 的访问禁止访问外部 Web
  • drop incoming TCP SYN segment禁止从外界创建 TCP connection
  • drop 除了外界 port 是 53 的所有 UDP traffic禁止其他 UDP traffic只允许 DNS
  • drop 发向 broadcast address 的 ICMP ping packets避免遭受 smurf DoS attack
  • drop outgoing ICMP TTL expired packets避免被 traceroute

Stateful Packet Filters

stateful packet filter 可以通过记录状态信息来实现更复杂的控制例如跟踪 TCP connection从而更加精准地只允许从内部建立的 TCP connection 而拒绝从外部建立的 TCP connection

Application Gateway

packet filter 只根据 header 中的信息进行控制而不管 application data

application gateway 是一个 application-specific server所有 application data 都需要通过它一个 host 可以同时运行多个 application gateway

application gateway 可以根据 application data 进行控制提供例如 authorization 的高级 filter 功能还可以提供除了 filter 外的其他功能例如 proxy

Intrusion Detection Systems

和 application gateway 类似intrusion detection system (IDS) 不止查看 header还会查看 application data这称作 deep packet inspection

与 application gateway 不同IDS 不是 application-specific 的而是会检测到各种各样的 suspicious packet / series of packets例如 network mappingport scanTCP stack scanDoS attackworm / virusOS / application vulnerability attack检测到时IDS 会向管理员发送警告而 intrustion prevention system (IPS) 则会 filter out 这些 packet

因为 deep packet inspection 需要一定的算力当流量过大时一个 organization 往往需要多个 IDS分散在网络中而非只设置一个在整个网络的入口

IDS 分为 signature-based 和 anomaly-based 两种

signature 即 packet 的特征例如 header 的某些项以及 application data 包含某一内容IDS 维护了一个 signature database 用来进行匹配signature-based IDS 需要事先知道 attack 的特征所以无法防范新型 attacksignature 的匹配容易出现 false alarm而且性能开销较大

anomaly-based IDS 基于平时的 traffic 来检测 statistically unusual 的 traffic例如检测到突然增多的 ICMP packetsanomaly-based IDS 不依赖于实现对攻击的了解所以有可能检测到新型的攻击但是区分 normal traffic 和 statistically unusual traffic 是困难的现在的 IDS 通常还是以 signature-based 为主

Snort 是一款 open-source IDS有一个活跃的 community 维护着 signature database

Footnotes

  1. P.S. 我有幸在 第一次参加 tunight 时获得了续老师的 signing当时还完全不懂这些现在也不是很懂

  2. See Rename OpenSSL to OpenTLS To Comply with RFC7568 · Issue #6384 · openssl/openssl & Celebrating 20 Years of OpenSSL - OpenSSL Blog

  3. 可以参考 http://www.tcpipguide.com/free/t_IPSecEncapsulatingSecurityPayloadESP-2.htm