Bài 13: Cryptography Applications (Phần 1)


1. Mục tiêu bảo mật (Security Goals)

Trước khi đi vào các giao thức, cần hiểu rõ các mục tiêu bảo mật mà hệ thống cần đạt được:

Mục tiêuÝ nghĩa
ConfidentialityBảo mật dữ liệu, chỉ người được phép mới đọc được
AuthenticationXác minh danh tính người dùng, thiết bị, tiến trình
IntegrityDữ liệu không bị thay đổi trên đường truyền
Non-repudiationKhông thể chối bỏ hành động đã thực hiện
AvailabilityHệ thống luôn sẵn sàng phục vụ
PrivacyBảo vệ thông tin cá nhân

Mỗi mục tiêu được đảm bảo bởi các cơ chế mật mã khác nhau:

  • Cipher systems: DES, AES (đối xứng), RSA, ECC, CRYSTALS-KYBER (bất đối xứng)
  • Hash functions: SHA-256, SHA3-512,…
  • MAC (Message Authentication Code)
  • Chữ ký số / Chứng chỉ số
  • Kiểm soát truy cập: RBAC, ABAC, PBAC

2. Giao thức bảo mật mạng – Tổng quan

Một giao thức bảo mật mạng hoàn chỉnh phải giải quyết ba vấn đề cốt lõi:

flowchart TD A[Thiết lập kết nối bảo mật] --> B[1. Authentication\nXác thực danh tính] A --> C[2. Key Agreement\nThỏa thuận khóa phiên] A --> D[3. Algorithm Negotiation\nThương lượng thuật toán mã hóa] B --> E[Kết nối bảo mật] C --> E D --> E

3. Xác thực (Authentication)

3.1 Định nghĩa

Quá trình xác thực gồm hai bước:

  1. Identification: Cung cấp thông tin định danh (tên, ID,…)
  2. Verification: Hệ thống kiểm tra xem thông tin đó có hợp lệ không

Authorization (Ủy quyền) khác với Authentication: là quyền/phép mà thực thể được cấp để truy cập tài nguyên sau khi đã được xác thực.


3.2 Các yếu tố xác thực (Authentication Factors)

  • Mật khẩu (Password)
  • Mã PIN
  • Câu hỏi bí mật
  • Smartcard
  • Thẻ khóa điện tử
  • Chứng chỉ số (Digital Certificate)
  • Thiết bị của người dùng
  • Vân tay (Fingerprint)
  • Võng mạc (Retina)
  • Khuôn mặt (Face)
  • Giọng nói (Voice)
  • PUFs (Physical Unclonable Functions)

3.3 Xác thực bằng chứng chỉ số (Certificate-based Authentication)

Đây là phương pháp phổ biến nhất để xác thực server/tài nguyên. Ý tưởng cốt lõi:

sequenceDiagram participant Client participant Server participant CA as Trusted CA (PKI) CA->>Server: Cấp Certificate (chứa Public Key + Identity) Client->>Server: Yêu cầu kết nối Server->>Client: Gửi Certificate Client->>CA: Xác minh chữ ký của CA trên Certificate CA-->>Client: Hợp lệ → Tin tưởng PKS (Public Key của Server)

Chứng chỉ số kết hợp:

  • Public key của server
  • Identity của server (IP, tên miền,…)
  • Chữ ký của CA để xác nhận tính hợp lệ
# Kiểm tra certificate của một website thực tế
openssl s_client -connect facebook.com:443 -showcerts

3.4 Xác thực bằng mật khẩu (Password-based Authentication)

Quy trình đăng nhập cơ bản:

sequenceDiagram participant User participant Server Note over Server: Lưu trữ: (name, h(pw)) User->>Server: Gửi (name, pw') Server->>Server: Tìm hàng theo name Server->>Server: So sánh h(pw') == h(pw)? Server-->>User: Xác thực thành công / thất bại

3.5 Xác thực đa yếu tố (Multi-Factor Authentication – MFA)

Kết hợp nhiều yếu tố để tăng độ bảo mật:

Mật khẩu (Knowledge) + Smartcard/OTP (Possession) + Vân tay (Inherence)
Yếu tốLưu trữXác minh
BiometricCần bộ nhớ bảo mậtSo sánh 1-1 hay 1-nhiều?
SmartcardLưu trữ bảo mật trên thẻTự thực hiện thuật toán xác minh
TPM/TEE/Secure EnclaveLưu trữ phần cứng bảo vệThực hiện thuật toán bảo mật

4. Thỏa thuận khóa phiên (Session Key Agreement)

4.1 Tại sao cần khóa phiên?

Sau khi xác thực server (qua certificate), client cần thiết lập một khóa phiên bí mật (ssk – session secret key) để mã hóa dữ liệu trao đổi. Khóa này:

  • Chỉ tồn tại trong một phiên làm việc
  • Được tạo mới mỗi lần kết nối → Perfect Forward Secrecy (PFS)
  • Thường dùng mã hóa đối xứng (AES) vì nhanh hơn

4.2 Diffie-Hellman trên ECC (ECDH)

Đây là phương pháp phổ biến nhất hiện nay:

sequenceDiagram participant Client as Client (A) participant Server as Server (B) Note over Client,Server: Đã xác minh certificate, biết PKS Client->>Client: Chọn ngẫu nhiên dA Client->>Client: Tính QA = dA * G Client->>Server: Gửi: name, C = E_PKS(QA), tag = h(QA || name) Server->>Server: Giải mã: DSK_S(C) = QA' Server->>Server: Xác minh tag = h(QA' || name) Server->>Server: Chọn ngẫu nhiên dB Server->>Server: Tính QB = dB * G Server->>Client: Gửi: QB, tagS = h(dB*QA || name) Client->>Client: Xác minh tagS = h(dA*QB || name) Note over Client,Server: ssk = dA*QB = dB*QA = dA*dB*G ✓

Sau khi có ssk, mọi dữ liệu được mã hóa đối xứng:

C = E_AES(ssk, name || pw)   ← Client gửi
D_AES(ssk, C) = name || pw   ← Server giải mã

4.3 Xác thực trong môi trường WiFi (Pre-shared Secret)

Khi không có chứng chỉ (ví dụ: WiFi gia đình), hai bên sử dụng pre-shared secret (mật khẩu WiFi):

WEP → WPA → WPA2 → WPA3

Các giao thức này xây dựng cơ chế xác thực và thỏa thuận khóa dựa trên mật khẩu chung mà không cần PKI.


5. Giao thức bảo mật đa server (Multi-server AKA)

5.1 Mục tiêu

Trong môi trường thực tế, người dùng cần kết nối với nhiều server khác nhau (D₁, D₂,…, Dₖ). Thay vì đăng ký riêng với từng server, cần:

  • Đăng ký một lần (One-time registration)
  • Đảm bảo: Xác thực lẫn nhau, Thỏa thuận khóa, Không thể truy vết (Untraceability), Thu hồi (Revocation), Hiệu quả

5.2 Các biến thể giao thức


6. Triển khai giao thức bảo mật theo tầng mạng

6.1 Vị trí triển khai

graph TD A[Application Layer] --> |"PGP, S/MIME (Email)\nHTTPS"| E[Bảo vệ đầu-cuối] B[Transport Layer] --> |"SSL/TLS, SSH"| F[Bảo vệ TCP/UDP segment] C[Network Layer] --> |"IPsec, VPN"| G[Bảo vệ IP packet] D[Data Link Layer] --> |"WEP, WPA, WPA2, WPA3"| H[Bảo vệ frame]

6.2 So sánh ưu/nhược điểm

TầngƯu điểmNhược điểm
ApplicationBảo vệ đầu-cuối; node trung gian không cần giải mãKẻ tấn công vẫn phân tích được header; phải sửa ứng dụng
TransportKhông cần sửa ứng dụng; bảo vệ TCP payloadKẻ tấn công phân tích được IP header
NetworkKhông cần sửa ứng dụng; Transport mode hoặc Tunnel modePhức tạp hơn; Tunnel mode cần gateway
Data LinkKẻ tấn công khó phân tích trafficChỉ bảo vệ trên một đường link vật lý

7. Giao thức SSH

7.1 Kiến trúc phân lớp

┌─────────────────────────────┐
│      SSH Connection         │  ← Quản lý nhiều channel (shell, SFTP,...)
├─────────────────────────────┤
│   SSH User Authentication   │  ← Xác thực user (password hoặc PKC)
├─────────────────────────────┤
│      SSH Transport          │  ← Xác thực server, trao đổi khóa, mã hóa
├─────────────────────────────┤
│           TCP               │
├─────────────────────────────┤
│           IP                │
└─────────────────────────────┘

7.2 Luồng hoạt động SSH

sequenceDiagram participant C as Client participant S as Server C->>S: Yêu cầu kết nối S->>C: Gửi Public Key Certificate C->>C: Xác thực CA của server C->>S: E_pub_S(Danh sách thuật toán hỗ trợ) S->>C: E_pri_S(Thuật toán được chọn) C->>S: E_pub_S(Session Key SK) C->>S: E_pub_S(Username + Password) S->>C: E_pri_S(Kết quả xác thực)

8. Giao thức SSL/TLS

8.1 Lịch sử phát triển

Phiên bảnNămTrạng thái
SSL 1.0Chưa phát hànhKhông dùng
SSL 2.01995Deprecated 2011 (RFC 6176)
SSL 3.01996Deprecated 2015 (RFC 7568)
TLS 1.01999Deprecated 2021 (RFC 8996)
TLS 1.12006Deprecated 2021 (RFC 8996)
TLS 1.22008Vẫn được dùng
TLS 1.32018Khuyến nghị hiện tại

8.2 Cấu trúc TLS

┌──────────────────────────────────────────────────┐
│                    HTTP (HTTPS)                  │
├──────────────┬──────────────────┬────────────────┤
│ SSL Handshake│ Change Cipher    │   SSL Alert    │
│   Protocol   │ Spec Protocol    │   Protocol     │
├──────────────┴──────────────────┴────────────────┤
│              SSL Record Protocol                 │
├──────────────────────────────────────────────────┤
│                      TCP                        │
└──────────────────────────────────────────────────┘

8.3 TLS 1.2 Handshake

sequenceDiagram participant C as Client participant S as Server C->>S: ClientHello (danh sách cipher suites hỗ trợ) S->>C: ServerHello (cipher suite được chọn) S->>C: Certificate + Signature S->>C: Key Share (ECDHE public key) C->>C: Xác minh certificate C->>S: Key Share (client ECDHE public key) Note over C,S: Cả hai tính toán session key S->>C: Finished C->>S: Finished C->>S: HTTP GET S->>C: HTTP Response

Ba thành phần chính của TLS 1.2:

  1. Authentication: Digital certificate (PKI)
  2. Key Agreement: ECDH
  3. Algorithm Negotiation: Thỏa thuận cipher suite (AES-128-CBC, SHA256, v.v.)

8.4 TLS 1.3 – Cải tiến so với 1.2

TLS 1.3 (RFC 8446) giảm số lần RTT (Round-Trip Time):

sequenceDiagram participant C as Client participant S as Server C->>S: ClientHello + key_share + signature_algorithms + psk_key_exchange_modes Note right of S: Key Exchange phase S->>C: ServerHello + key_share S->>C: {EncryptedExtensions} + {Certificate} + {CertificateVerify} + {Finished} Note over C,S: Application Data có thể bắt đầu sớm hơn! C->>S: {Certificate} + {CertificateVerify} + {Finished} C->>S: [Application Data]

9. Giao thức IPsec

9.1 Tổng quan

IPsec (IP Security) là bộ giao thức hoạt động ở tầng Network, mã hóa và/hoặc xác thực các gói IP. Gồm ba giao thức thành phần:

graph TD IPsec --> AH[Authentication Header - AH\nXác thực nguồn gốc + toàn vẹn\nPhát hiện replay attack] IPsec --> ESP[Encapsulating Security Payload - ESP\nMã hóa và/hoặc xác thực] IPsec --> IKE[Internet Key Exchange - IKE\nThiết lập khóa bí mật]

9.2 Hai chế độ hoạt động

Transport Mode – Bảo vệ host-to-host:

[ IP Header | IPsec Header | Payload (TCP/UDP) ]
                ↑ Mã hóa phần này

Các endpoint phải là IPsec-aware. Thường dùng cho kết nối trực tiếp giữa hai host.

Tunnel Mode – Yêu cầu gateway:

[ Outer IP Header | IPsec Header | Inner IP Header | Payload ]
                   ↑ Mã hóa toàn bộ phần này

Gateway đóng gói toàn bộ gói IP gốc → bảo vệ cả header nội bộ.

graph LR A[Remote Host] -->|Outer Tunnel| B[Security Gateway] B -->|Inner Tunnel| C[Internal Server] style B fill:#f9f,stroke:#333

9.3 Security Association (SA)

Ba tham số định danh một SA:

  1. SPI – Security Parameters Index
  2. IP Destination Address
  3. Security Protocol Identifier (AH hay ESP)

Hai cơ sở dữ liệu quan trọng:

  • SAD (Security Association Database): Lưu các SA đang hoạt động
  • SPD (Security Policy Database): Quy tắc áp dụng SA cho gói tin nào

9.4 Authentication Header (AH)

┌─────────────┬──────────────┬────────────────────────────┐
│ Next Header │ Payload Len  │         RESERVED            │
├─────────────┴──────────────┴────────────────────────────┤
│              Security Parameters Index (SPI)             │
├──────────────────────────────────────────────────────────┤
│                    Sequence Number                        │
├──────────────────────────────────────────────────────────┤
│           Integrity Check Value (ICV) – variable         │
└──────────────────────────────────────────────────────────┘

9.5 Chống Replay Attack bằng Sliding Window

|← Quá cũ →|←── Cửa sổ ──→|← Quá mới →|
     A              B              C
  • Vùng A: Sequence number quá nhỏ → Loại bỏ
  • Vùng B: Trong cửa sổ → Kiểm tra xem đã nhận chưa (bitmap)
  • Vùng C: Sequence number mới → Dịch cửa sổ và chấp nhận

9.6 Encapsulated Security Payload (ESP)

┌──────────────────────────────────────────────────────────┐
│              Security Parameters Index (SPI)             │
├──────────────────────────────────────────────────────────┤
│                    Sequence Number                        │
├──────────────────────────────────────────────────────────┤
│              Payload Data (variable length)               │◄─ Mã hóa
├──────────────────────────────────────────────────────────┤
│         Padding (0-255 bytes) | Pad Len | Next Hdr       │◄─ Mã hóa
├──────────────────────────────────────────────────────────┤
│           Authentication Data (variable length)          │◄─ MAC
└──────────────────────────────────────────────────────────┘

ESP trong Transport Mode vs Tunnel Mode:

Transport Mode:
[IP Hdr | ESP Hdr | TCP/UDP/... | ESP Trlr | ESP Auth]
                  |←── Mã hóa ──→|
         |←────────── MAC ──────────────────→|

Tunnel Mode:
[Outer IP | ESP Hdr | Inner IP | Payload | ESP Trlr | ESP Auth]
                    |←────── Mã hóa ────────→|
          |←──────────────── MAC ───────────────────→|

9.7 Quản lý khóa – Oakley KDP và ISAKMP

Oakley Key Determination Protocol là Diffie-Hellman có tăng cường:

Tính năngMục đích
DH cơ bảnThiết lập khóa bí mật chung
+ AuthenticationChống tấn công Man-in-the-Middle
+ CookiesChống tấn công Clogging (DoS)
+ NonceChống Replay Attack

ISAKMP (Internet Security Association and Key Management Protocol) định nghĩa format của các message trao đổi:

┌────────────────┬────────────────┐
│  64-bit Initiator Cookie        │
├────────────────┬────────────────┤
│  64-bit Responder Cookie        │
├──────┬──────┬──┴───┬────────────┤
│Next  │Major │Minor │ Exchange   │
│Pload │ Ver  │ Ver  │   Type     │
├──────┴──────┴──────┴────────────┤
│         32-bit Message ID       │
├─────────────────────────────────┤
│           32-bit Length         │
└─────────────────────────────────┘

Các loại payload ISAKMP hỗ trợ: SA, Proposal, Transform, Key-exchange, Identification, Certificate, Hash, Signature, Nonce, Notification, Delete,…


10. Tổng kết – Bức tranh toàn cảnh

graph TB subgraph "Tầng ứng dụng" A1[PGP / S/MIME] --> A2[Email Security] A3[HTTPS] --> A4[Web Security] end subgraph "Tầng Transport" B1[SSL/TLS 1.2 / 1.3] --> B2[Web, API] B3[SSH] --> B4[Remote Admin] end subgraph "Tầng Network" C1[IPsec AH+ESP+IKE] --> C2[VPN, Site-to-site] end subgraph "Tầng Data Link" D1[WEP / WPA / WPA2 / WPA3] --> D2[WiFi Security] end subgraph "Cơ chế nền tảng" E1[Authentication\nCertificate / Password / MFA] E2[Key Agreement\nECDH / DH] E3[Algorithm Negotiation\nAES, SHA, ...] E4[Cryptographic Primitives\nRSA, ECC, AES, SHA] end E1 & E2 & E3 & E4 --> B1 E1 & E2 & E3 & E4 --> C1 E1 & E2 & E3 & E4 --> B3