Khóa riêng tư (Private Key) là gì?
Khóa riêng tư (còn gọi là khóa bí mật - secret key) là một chuỗi ký tự ngẫu nhiên, được giữ kín trong mật mã học khóa công khai (asymmetric cryptography). Nó luôn đi cặp với khóa công khai (Public Key) để thực hiện mã hóa/giải mã và chữ ký số.
Cơ chế hoạt động
| Chức năng | Khóa công khai | Khóa riêng tư |
|---|---|---|
| Mã hóa dữ liệu | Ai cũng có thể dùng để mã hóa | Chỉ chủ sở hữu mới dùng được để giải mã |
| Chữ ký số | Ai cũng có thể xác thực chữ ký | Chỉ chủ sở hữu mới tạo được chữ ký |
| Bảo mật | Có thể chia sẻ công khai | Phải bảo vệ tuyệt đối, không chia sẻ |
Các thuật toán phổ biến
- RSA: 2048-bit trở lên, dùng cho chữ ký SSL/TLS, email mã hóa
- ECC (Elliptic Curve Cryptography): Curve25519, NIST P-256 - khóa ngắn hơn nhưng an toàn ngang RSA, hiệu năng tốt hơn
- DSA/DSS: Chuẩn chữ ký số liên bang (FIPS 186)
Ứng dụng thực tế
1. Xác thực SSH
Khóa riêng tư lưu ở client (~/.ssh/id_rsa), khóa công khai copy lên server (~/.ssh/authorized_keys). Cho phép đăng nhập không mật khẩu, an toàn hơn brute-force.
2. Chứng chỉ SSL/TLS (HTTPS)
Server giữ khóa riêng tư, trình duyệt dùng khóa công khai (trong chứng chỉ) để thiết lập phiên mã hóa.
3. Mã hóa email (PGP/GPG, S/MIME)
Người gửi mã hóa bằng khóa công khai người nhận → chỉ người nhận (nắm khóa riêng) mới đọc được.
4. Chữ ký code/phần mềm
Nhà phát triển ký code bằng khóa riêng → hệ điều hành xác thực bằng khóa công khai → đảm bảo code không bị sửa đổi.
Quản lý khóa riêng tư an toàn
- Tạo khóa: Dùng
ssh-keygen -t ed25519hoặcopenssl genrsa 4096trên máy tin cậy - Lưu trữ: File được mã hóa bằng passphrase mạnh (AES-256), backup offline (USB mã hóa, HSM, token phần cứng YubiKey)
- Thu hồi: Nghi ngờ bị lộ → thu hồi chứng chỉ, tạo cặp khóa mới, cập nhật tất cả hệ thống liên quan
- Không bao giờ: Commit khóa riêng vào Git, gửi qua email/chat, lưu trên cloud không mã hóa
Khác biệt: Private Key vs Secret Key (Khóa đối xứng)
Private Key (bất đối xứng): Cặp khóa công khai/riêng tư, dùng cho trao đổi khóa, chữ ký số, xác thực danh tính.
Secret Key (đối xứng - AES, ChaCha20): Một khóa duy nhất dùng cho cả mã hóa và giải mã, nhanh hơn, dùng cho mã hóa dữ liệu lượng lớn (file, ổ cứng, TLS session).
Kiểm tra cặp khóa
# So sánh modulus của cert và private key
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in private.key | openssl md5
# Kết quả MD5 phải trùng nhau