Network Security - Public Key Cryptography
Tổng quan
Ý tưởng cốt lõi: Thay vì dùng 1 khóa, hệ thống sử dụng 2 khóa tạo thành một cặp (Key Pair):
- Public Key → chia sẻ cho mọi người.
- Private Key → chỉ chủ sở hữu giữ bí mật.
Vấn đề của Symmetric Key
Browser ◄══════ Secret Key ══════► Server
Hai bên phải biết cùng một Secret Key — nhưng với hàng triệu user, không thể phát Secret Key cho tất cả. Đó là Key Distribution Problem.
Key Pair
Key Pair
┌───────────────┐
│ │
Public Key Private Key
Hai khóa được sinh cùng lúc, có quan hệ với nhau và luôn đi theo cặp.
Ví dụ “tờ tiền bị xé”: Chỉ Piece A + Piece B của cùng một tờ mới ghép lại được — lấy Piece B của tờ khác sẽ không khớp.
Public Key A + Private Key A → ✔ Match
Public Key A + Private Key B → ✘ Không hoạt động
Lưu ý: Không phải Public Key “sinh ra đã là Public”. Thực chất là sinh ra 2 key, sau đó ta quyết định cái nào chia sẻ (Public) và cái nào giữ bí mật (Private).
Tính chất 1 – Encrypt bằng Public Key
Plain Text
│
▼ Encrypt (Public Key)
Cipher Text
│
▼ Decrypt (Private Key)
Plain Text
Quan trọng: Không thể dùng Public Key để giải mã — chỉ Private Key tương ứng mới làm được.
Hoạt động thực tế
Server công khai Public Key
│
▼
Browser tải Public Key → Encrypt Password → Gửi qua Internet
│
▼
Hacker nhìn thấy Cipher Text nhưng không có Private Key → Không đọc được
│
▼
Server dùng Private Key → Decrypt → Password
Đạt được: ✅ Confidentiality (Privacy)
Anyone → Can Encrypt → Only Owner (Private Key) → Can Decrypt
Tính chất 2 – Encrypt bằng Private Key
Làm ngược lại:
Plain Text
│
▼ Encrypt (Private Key)
Cipher Text
│
▼ Decrypt (Public Key)
Plain Text
Ai cũng có Public Key → ai cũng đọc được. Vậy mục đích là gì?
Không phải để giữ bí mật — mà để chứng minh ai tạo ra dữ liệu.
Hoạt động thực tế
Alice (giữ Private Key)
│
▼ Encrypt Message bằng Private Key → Gửi cho Bob
Bob nhận → Decrypt bằng Alice Public Key → Thành công
→ Bob biết chắc: chỉ Alice mới tạo được (vì chỉ Alice có Private Key)
Nếu Hacker sửa dữ liệu:
Cipher Text → Modify → Bob Decrypt → Fail → Biết dữ liệu bị sửa
Đạt được: ✅ Authentication + ✅ Integrity
Hai chế độ sử dụng
| Encrypt bằng | Decrypt bằng | Mục tiêu |
|---|---|---|
| Public Key | Private Key | Confidentiality (Privacy) |
| Private Key | Public Key | Authentication + Integrity |
Ba mục tiêu bảo mật
Public Key Cryptography
│
┌───────────────┼─────────────────┐
▼ ▼ ▼
Confidentiality Authentication Non-Repudiation
1. Confidentiality: Chỉ người giữ Private Key đọc được dữ liệu.
2. Authentication: Người nhận biết chắc ai gửi.
3. Non-Repudiation: Người gửi không thể phủ nhận vì chỉ họ mới có Private Key.
Toàn bộ quy trình
Alice
│
Private Key → Encrypt Message
│
════════════════ Internet ════════════════►
│
Bob
│
Alice Public Key → Verify Sender → Read Message
Public Key giải quyết Key Distribution Problem như thế nào?
Trước đây: Server phải chia Secret Key → không khả thi.
Giờ: Server chỉ cần công khai Public Key → ai cũng tải được, không sao vì:
Public Key → KHÔNG thể dùng để suy ra Private Key
Private Key → Vẫn bí mật tuyệt đối
So sánh Symmetric vs Asymmetric
| Tiêu chí | Symmetric Key | Public Key (Asymmetric) |
|---|---|---|
| Số lượng khóa | 1 | 2 (Public + Private) |
| Tốc độ | Rất nhanh | Chậm hơn |
| Chia sẻ khóa | Khó | Dễ (chỉ chia Public Key) |
| Confidentiality | ✔ | ✔ |
| Authentication | ✘ | ✔ |
| Integrity | ✘ | ✔ |
| Non-Repudiation | ✘ | ✔ |
Tóm tắt
- Public Key Cryptography dùng cặp khóa Public/Private sinh cùng nhau, luôn đi theo cặp.
- Encrypt bằng Public Key → chỉ Private Key tương ứng mới giải mã được → Confidentiality.
- Encrypt bằng Private Key → ai có Public Key đều xác minh được nguồn gốc → Authentication, Integrity, Non-Repudiation.
- Giải quyết được Key Distribution Problem: không cần chia sẻ khóa bí mật cho người dùng.
- HTTPS/TLS tận dụng cơ chế này để thiết lập kết nối an toàn, sau đó chuyển sang Symmetric Key cho việc truyền dữ liệu tốc độ cao.