Private Key (Khóa riêng) là gì?
Trong mật mã học khóa công khai (Public Key Infrastructure - PKI / Asymmetric Cryptography), Private Key (Khóa riêng / Secret Key) là một số ngẫu nhiên lớn, được giữ bí mật tuyệt đối bởi chủ sở hữu. Nó là đối ứng duy nhất của Public Key (Khóa công khai).
Cặp khóa (Key Pair) hoạt động như thế nào?
| Chức năng |
Public Key (Công khai) |
Private Key (Riêng tư) |
| Mã hóa (Encryption) |
Ai cũng dùng Public Key để mã hóa dữ liệu gửi cho chủ sở hữu Private Key. |
Chỉ chủ sở hữu Private Key mới giải mã được (Decrypt). |
| Chữ ký số (Digital Signature) |
Ai cũng dùng Public Key để xác thực chữ ký. |
Chủ sở hữu dùng Private Key để ký (Sign) dữ liệu → chứng minh nguồn gốc, toàn vẹn, không thể chối cãi (Non-repudiation). |
| Key Exchange (DH/ECDH) |
Trao đổi công khai để tạo Shared Secret. |
Kết hợp với Private Key của mình để tính Shared Secret. |
Thuật toán phổ biến
- RSA: 2048-bit (tối thiểu), 3072-bit, 4096-bit (khuyến nghị hiện nay). Dùng cho Sign & Encrypt.
- ECC (Elliptic Curve Cryptography): P-256 (secp256r1), P-384, P-521, Curve25519 (Ed25519 sign, X25519 key exchange). Khóa ngắn hơn RSA cùng độ an toàn, hiệu năng tốt hơn. Khuyến nghị cho hệ thống mới.
- DSA / ECDSA: Chỉ dùng cho Signature (không encrypt).
- Post-Quantum (PQC): CRYSTALS-Dilithium (Signature), FALCON, SPHINCS+ (NIST standardized 2024). Chuẩn bị cho Quantum Computer.
Private Key được lưu trữ ở đâu?
| Môi trường |
Địa điểm lưu trữ |
Bảo vệ |
| Web Server (Apache, Nginx, IIS) |
File system: /etc/ssl/private/, /etc/pki/tls/private/, C:\Certificates\.
File: private.key, server.key, *.pem, *.pfx/.p12 (PKCS#12 chứa cert + key).
File permission: chmod 600 (chỉ root/user service đọc). Disk encryption (LUKS, BitLocker). HSM/KMS cho production. |
| HSM (Hardware Security Module) |
Bên trong chip tamper-resistant (FIPS 140-2 Level 3/4). Key không bao giờ rời HSM. |
Cao nhất. Dùng cho CA Root, Code Signing, Payment, Blockchain, DNSSEC. |
| TPM (Trusted Platform Module) |
Bên trong chip TPM 2.0 trên motherboard. Key non-migratable (không export được). |
Binding với hardware platform. Dùng cho BitLocker, Windows Hello, VPN Cert, Machine Identity. |
| Smart Card / YubiKey / PIV Token |
Secure Element trên token. Private key sinh ra và ở trong token. |
Phishing-resistant MFA (FIDO2/WebAuthn), PIV Authentication, Code Signing, Email Signing. |
| KMS / Key Vault (Cloud) |
AWS KMS, Azure Key Vault, GCP KMS, HashiCorp Vault, Azure Key Vault Managed HSM. |
Key không export (non-exportable). Access via API (IAM policy). Audit log. Auto-rotation. |
| Bitcoin / Crypto Wallet |
File wallet.dat (Bitcoin Core), Seed phrase (BIP39 12/24 words), Hardware Wallet (Ledger, Trezor, Coldcard). |
Seed phrase = master private key. Hardware wallet: key không rời device. Backup seed phrase offline (kim loại, giấy). |
| Windows Certificate Store |
%SystemDrive%\Users\\AppData\Roaming\Microsoft\SystemCertificates\My\Keys\ (User) hoặc %SystemDrive%\ProgramData\Microsoft\Crypto\RSA\MachineKeys\ (Machine/Computer). |
DPAPI bảo vệ (kết hợp với user password). Exportable = No (khuyến nghị). |
Cách tìm Private Key (Tùy ngữ cảnh)
1. SSL/TLS Certificate (Web Server, Load Balancer)
- Private key được tạo trước khi tạo CSR (Certificate Signing Request).
- CA (DigiCert, GlobalSign, Let's Encrypt, ZeroSSL) KHÔNG BAO GIỜ có private key của bạn.
- Nếu mất: Không thể khôi phục từ certificate (public key). Phải tạo cặp khóa mới, tạo CSR mới, xin re-issue cert (miễn phí với Let's Encrypt, trả phí/phức tạp với CA khác).
- Tìm trên server:
find / -name "*.key" -o -name "*.pem" -o -name "*.pfx" 2>/dev/null.
2. Windows (IIS, Remote Desktop, VPN, Wi-Fi Cert)
- Mở
mmc.exe > File > Add/Remove Snap-in > Certificates > Computer account / My user account.
- Tìm cert trong Personal > Certificates.
- Double-click cert > Details > Scroll xuống: "Private Key" - nếu có dòng "You have a private key that corresponds to this certificate" = OK.
- Export (nếu cho phép): Right-click > All Tasks > Export > Yes, export private key > .pfx (PKCS#12) + password bảo vệ.
3. Linux/OpenSSL (File PEM/PKCS#8)
# Private key PEM (RSA)
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD...
-----END PRIVATE KEY-----
# PKCS#8 Encrypted (có password)
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI...
-----END ENCRYPTED PRIVATE KEY-----
# Kiểm tra key match cert
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in private.key | openssl md5
# So sánh 2 hash MD5 phải giống nhau.
4. Bitcoin / Ethereum Private Key
- Format: 256-bit integer (64 hex chars) hoặc WIF (Wallet Import Format: 51/52 chars base58check bắt đầu bằng 5, K, L).
- Seed Phrase (Mnemonic 12/24 words BIP39) → derive master private key (BIP32 HD Wallet) → derive child keys cho mỗi address.
- Không bao giờ nhập private key/seed phrase vào website, email, chat, screenshot. Chỉ nhập trên hardware wallet hoặc wallet software offline.
Quản lý Private Key an toàn (Key Management Lifecycle)
- Generation (Sinh khóa): Trên HSM, TPM, Smart Card, KMS, hoặc offline air-gapped machine. CSPRNG (Cryptographically Secure PRNG).
- Storage (Lưu trữ): HSM/TPM/KMS/Hardware Wallet (Best). Nếu file: Encrypt at rest (AES-256), permission 600, disk encryption.
- Distribution (Phân phối): Chỉ Public Key được phân phối. Private Key không bao giờ truyền qua mạng.
- Rotation (Đổi khóa định kỳ): 90-365 ngày tùy policy. Tự động hóa qua KMS/ACME (Let's Encrypt certbot), Cert Manager (K8s).
- Revocation (Thu hồi): CRL, OCSP, CT Log monitoring. Nếu key compromise → Revoke cert ngay, rotate key, re-issue.
- Destruction (Hủy diệt): Crypto-erase (overwrite key trong HSM/TPM/KMS), shred file (nix:
shred -n 3, Windows: cipher /w).
- Audit & Monitoring: Log mọi operation: sign, decrypt, export attempt, access. SIEM alert trên anomalous key usage.
Khôi phục Private Key khi mất
| Tình huống |
Khôi phục được? |
Hành động |
| Mất file private.key trên server (chưa backup) |
KHÔNG |
Tạo cặp khóa mới → CSR mới → Xin re-issue cert (CA). Cập nhật server. |
| Có backup .pfx/.p12/.pem đã encrypt (biết password) |
CÓ |
Import/restore từ backup. Kiểm tra cert còn hạn không. |
| Private key trong HSM/TPM/YubiKey bị lỗi hardware |
Key non-migratable → KHÔNG export được. |
Key ceremony: Tạo key mới trên HSM mới, re-issue cert. Backup key share (Shamir) nếu có policy. |
| Mất Seed Phrase Bitcoin (12/24 words) |
KHÔNG THỂ KHÔI PHỤC |
Mất vĩnh viễn tài sản. Không có "quên mật khẩu" trong Bitcoin. |
| Private key trong Cloud KMS (AWS/Azure/GCP) |
Key non-exportable → KHÔNG lấy ra được plaintext. |
Dùng API KMS để Sign/Decrypt. Nếu cần migrate: Re-encrypt data với key mới, hoặc import key mới (nếu KMS cho phép import). |
Kết luận
Private Key là "chìa khóa vàng" của bảo mật bất đối xứng. Mất Private Key = Mất kiểm soát danh tính, mã hóa, chữ ký số, tài sản crypto. Nguyên tắc vàng: Sinh trên môi trường an toàn (HSM/TPM/HW Wallet), Không bao giờ export/plaintext trên mạng/disk, Backup an toàn (offline, encrypted, split), Rotate tự động, Monitor liên tục. Doanh nghiệp phải có chính sách Key Management chính thức (NIST SP 800-57, ISO 27001 Annex A.10).