Tóm tắt: Mã hóa chỉ an toàn khi danh tính, quyền truy cập, khóa và quy trình vận hành đều được kiểm soát.
Thuật ngữ chính: Secret: thông tin bí mật như mật khẩu hoặc token; KMS: dịch vụ quản lý khóa; envelope encryption: mã hóa dữ liệu bằng khóa riêng rồi tiếp tục bảo vệ khóa đó bằng khóa chính.
Bài toán
Secret lưu trong file môi trường thường tồn tại quá lâu. Dịch vụ có thể được cấp quyền rộng hơn cần thiết, còn việc đổi khóa bị trì hoãn vì không biết dữ liệu nào dùng khóa nào. Hệ thống nhiều khách hàng cần chính sách rõ cho khóa dùng chung và khóa riêng.
Vì sao cách làm đơn giản chưa đủ
KMS bảo vệ master key nhưng application vẫn xử lý plaintext data key và dữ liệu giải mã. Process memory, log và crash dump vẫn thuộc threat model.
Dedicated khách hàng key giảm phạm vi ảnh hưởng và hỗ trợ revoke nhưng tăng cost cùng recovery complexity. Isolation tier phải xuất phát từ risk requirement rõ.
Luồng xử lý
authentication ngắn hạn→Secret manager
cấp quyền có kiểm soát→KMS hoặc HSM
key operation và audit→Ciphertext
key reference có phiên bản
Quyết định kiến trúc
Ưu tiên envelope encryption
Mã hóa data bằng generated data key và wrap key qua KMS, giảm master-key operation và hỗ trợ rotation theo phiên bản.
Tách key chính sách khỏi kho lưu trữ
Ciphertext mang key reference, không mang raw key. Access chính sách quyết định khối lượng công việc nào được unwrap.
Thiết kế rotation trước khi launch
Reader nhận current và previous phiên bản. Writer chỉ dùng current. Background re-encryption resume và đo được.
Phân tích chuyên sâu
Deletion và crypto-shredding cần evidence
Hủy dedicated key có thể làm data không phục hồi. Tuy nhiên, backup, replica và shared key thay đổi guarantee. Phải mô tả chính xác delete nghĩa là gì.
Emergency access có phạm vi hẹp
Break-glass decrypt cần approval, reason, ngày hết hạn, alert và không thể thay đổi audit. Support thường ngày không được phụ thuộc vào nó.
Các bước triển khai
- Kiểm kê secret và key theo người phụ trách, bộ phận nhận sự kiện và ngày hết hạn.
- Dùng danh tính của tiến trình lấy secret ngắn hạn thay vì phân phối credential tĩnh.
- Áp envelope encryption và lưu key reference cùng algorithm metadata cạnh ciphertext.
Ví dụ kỹ thuật: Decrypt và rotate theo phiên bản
record = { ciphertext, wrappedDataKey, masterKeyVersion }
dataKey = kms.decrypt(record.wrappedDataKey, context = tenantId)
plaintext = decrypt(dataKey, record.ciphertext)
if record.masterKeyVersion != current:
enqueueRewrap(record.id)Bind khách hàng và data class làm authenticated encryption ngữ cảnh để ciphertext không bị di chuyển âm thầm qua ranh giới.
Các tình huống lỗi cần tính trước
- Rotation tắt old key trước khi mọi reader hỗ trợ phiên bản mới.
- Restore backup thiếu historical key phiên bản.
- Operator export plaintext khi debug.
Tín hiệu cần giám sát
| Tín hiệu | Ý nghĩa |
|---|---|
| Tuổi secret và key | Tìm rotation trễ và credential không còn người phụ trách. |
| Tỷ lệ decrypt và access denied | Phát hiện incident cùng chính sách regression. |
| Số record theo key phiên bản | Cho biết tiến độ rotation và exposure còn lại. |
Cách kiểm chứng thiết kế
- Rotate key trong khi application phiên bản trộn lẫn vẫn đọc lưu lượng.
- Restore backup cũ bằng archived key phiên bản trong môi trường cô lập.
- Thử cross-khách hàng decrypt với ciphertext bị chuyển và ngữ cảnh sai.
Kế hoạch triển khai an toàn
Kiểm kê và gỡ secret khỏi nguồn trước. Đưa danh tính của tiến trình vào một dịch vụ. Sau đó, envelope encryption cho một data class giá trị cao. Diễn tập rotation và recovery trước khi mở dedicated khách hàng-key tier.
Checklist trước khi đưa vào vận hành
- Không secret nào xuất hiện trong nguồn, image layer, log hoặc CI gói phát hành.
- Rotation hỗ trợ phiên bản overlap và rollback.
- Key access least privilege, audit được theo khách hàng hoặc khối lượng công việc.
Kết luận
Key management là lifecycle của identity, access, rotation và recovery, không phải một lần gọi encrypt.
