Network Security - Symmetric Key Cryptography
Tổng quan
Mục tiêu: Hiểu cách mã hóa dữ liệu khi truyền qua mạng và tại sao Symmetric Key Encryption chưa đủ để sử dụng trên Internet.
Vì sao cần Encryption?
Nếu dữ liệu truyền qua Internet dưới dạng Plain Text:
Browser ──── Plain Text (Password, Credit Card, Token) ────► Server
▲
│ Hacker chặn gói tin → đọc được tất cả
Bất kỳ ai nghe lén đường truyền đều đọc được nội dung — đây chính là lý do HTTPS tồn tại.
Encryption là gì?
Encryption biến dữ liệu từ Plain Text thành Cipher Text:
Plain Text: "Password = myPassword123"
│
▼ Encryption
Cipher Text: "9fdA#@1ks8P2..."
Người nghe lén nhìn thấy Cipher Text nhưng không hiểu nội dung.
3 thành phần của Encryption
Plain Text
│
▼
Encryption Algorithm (Cipher)
▲
│
Key
│
▼
Cipher Text
- Plain Text: dữ liệu gốc
- Encryption Algorithm: thuật toán mã hóa
- Key: chuỗi bí mật dùng kết hợp với thuật toán — không phải thuật toán, chỉ là dữ liệu đầu vào
Symmetric Key Encryption
Đặc điểm quan trọng nhất: dùng cùng một Key để mã hóa và giải mã.
Secret Key = ABC123
Browser Server
Password
│
Encrypt (ABC123)
│
══════════════ Cipher Text ═════════►
│
Decrypt (ABC123)
│
Password
Giao tiếp hai chiều — cả hai bên đều dùng cùng một Secret Key:
Browser ◄══ Cipher Text ══ Encrypt (ABC123) ◄── Server Response
Ưu điểm
Symmetric Encryption
├────────► Fast
├────────► Efficient
└────────► Low CPU Cost
Đây là lý do HTTPS vẫn dùng Symmetric Encryption để truyền dữ liệu sau khi kết nối đã được thiết lập.
Vấn đề lớn nhất – Key Distribution Problem
Với một hệ thống public trên Internet:
Internet
Client 1 ─┐
Client 2 ├──► Web Application
Client 3 │ (hàng triệu user)
... ─┘
Câu hỏi: Server làm sao chia sẻ Secret Key cho hàng triệu Client?
Nếu gửi Secret Key qua mạng:
Server → Secret Key → Internet → Client
▲
│ Hacker chặn được Key
│ → Decrypt toàn bộ dữ liệu
Kể từ đó, mọi Cipher Text đều đọc được.
Trusted vs Untrusted Client
| Trường hợp | Có thể chia Secret Key? |
|---|---|
| Company VPN, ít client, tin tưởng nhau | ✔ Được |
| Public website (Amazon, Shopee…) — ai cũng truy cập | ✘ Không được |
Hạn chế của Symmetric Encryption
Symmetric Encryption
Encrypt ✔
Decrypt ✔
Fast ✔
Efficient ✔
Cannot Securely Share Secret Key ✘
→ Key Distribution Problem
Vấn đề không phải mã hóa yếu — mà là bài toán phân phối khóa (Key Distribution Problem).
Giải pháp: Public Key Cryptography
Để giải quyết Key Distribution Problem, người ta phát minh ra Public Key Cryptography:
- Không cần chia sẻ Secret Key.
- Chỉ chia sẻ Public Key (ai cũng thấy được).
- Private Key vẫn giữ bí mật tuyệt đối.
Encryption
│
┌────────────┴────────────┐
▼ ▼
Symmetric Encryption Public Key Encryption
│ │
Same Key Public / Private Key
│ │
Fast & Efficient Solve Key Distribution
Cách HTTPS kết hợp cả hai
Browser
│
▼ Public Key Cryptography
Trao đổi Secret Key an toàn
│
▼ Symmetric Encryption
Mã hóa toàn bộ HTTP Data
HTTPS/TLS trong thực tế:
- Public Key Cryptography → trao đổi khóa an toàn
- Symmetric Key → mã hóa dữ liệu truyền (nhanh, hiệu quả)
Tóm tắt
| Khái niệm | Ý nghĩa |
|---|---|
| Encryption | Chuyển Plain Text → Cipher Text để người khác không đọc được |
| Key | Chuỗi bí mật dùng cùng thuật toán để mã hóa và giải mã |
| Symmetric Key Encryption | Dùng cùng một khóa để mã hóa và giải mã |
| Ưu điểm | Rất nhanh, đơn giản, tiêu tốn ít CPU |
| Nhược điểm | Không thể chia sẻ Secret Key an toàn cho nhiều client (Key Distribution Problem) |
| Hướng giải quyết | Public Key Cryptography trao đổi khóa + Symmetric Encryption truyền dữ liệu |
- Symmetric Key Encryption là nền tảng của truyền dữ liệu bảo mật vì rất nhanh và hiệu quả.
- Vấn đề cốt lõi không nằm ở thuật toán mà ở việc làm thế nào chia sẻ Secret Key an toàn.
- HTTPS/TLS kết hợp cả hai: Public Key để trao đổi khóa, Symmetric Key để mã hóa toàn bộ dữ liệu truyền.