Mã hóa cơ sở dữ liệu và các nguyên tắc cốt lõi
Mã hóa cơ sở dữ liệu biến dữ liệu thành dạng không đọc được nếu không có khóa, giúp bảo vệ thông tin khi ổ đĩa, bản sao lưu hay đường truyền rơi vào tay kẻ xấu. Tuy nhiên, mã hóa không phải "nút bấm an toàn tuyệt đối". Mỗi kiểu mã hóa bảo vệ trước một loại rủi ro khác nhau, và quản lý khóa thường khó hơn bản thân việc mã hóa. Bài viết trình bày các lớp mã hóa phổ biến và những nguyên tắc cốt lõi khi triển khai.
Ba trạng thái của dữ liệu
- Dữ liệu lưu trữ (at rest): nằm trên ổ đĩa, file dữ liệu, bản sao lưu.
- Dữ liệu truyền (in transit): đi giữa ứng dụng và máy chủ cơ sở dữ liệu, giữa các máy chủ.
- Dữ liệu đang xử lý (in use): nằm trong bộ nhớ khi truy vấn, tính toán.
Mỗi trạng thái cần biện pháp riêng. Một hệ thống chỉ mã hóa ổ đĩa vẫn để lộ dữ liệu nếu kết nối từ ứng dụng không mã hóa, hoặc nếu kẻ tấn công chiếm được tài khoản ứng dụng.
Các lớp mã hóa cơ sở dữ liệu
| Lớp | Cách hoạt động | Bảo vệ trước | Không bảo vệ trước |
|---|---|---|---|
| Mã hóa ổ đĩa / hệ thống file | Toàn bộ ổ đĩa được mã hóa ở tầng lưu trữ | Mất ổ cứng, thanh lý thiết bị | Người có quyền truy cập máy chủ đang chạy |
| Mã hóa dữ liệu minh bạch (TDE) | Hệ quản trị CSDL mã hóa file dữ liệu và log, tự giải mã khi đọc | Đánh cắp file dữ liệu, bản sao lưu | Truy vấn qua tài khoản hợp lệ, SQL injection |
| Mã hóa cột / trường | Mã hóa riêng các cột nhạy cảm | Quản trị viên CSDL xem trộm, lộ bản sao | Ứng dụng bị chiếm có quyền giải mã |
| Mã hóa phía ứng dụng | Ứng dụng mã hóa trước khi ghi vào CSDL | Xâm phạm máy chủ CSDL, quản trị viên CSDL | Ứng dụng bị xâm phạm |
| Mã hóa kết nối (TLS) | Mã hóa đường truyền giữa client và server | Nghe lén mạng | Dữ liệu tại hai đầu |
Không có lớp nào đủ một mình. Nhiều tổ chức kết hợp TDE cho toàn bộ cơ sở dữ liệu, TLS cho mọi kết nối, và mã hóa cấp trường cho dữ liệu đặc biệt nhạy cảm như số giấy tờ tùy thân, thông tin sức khỏe.
Nguyên tắc 1: Bắt đầu từ phân loại dữ liệu
Không phải dữ liệu nào cũng cần cùng mức bảo vệ. Hãy phân loại: công khai, nội bộ, nhạy cảm, đặc biệt nhạy cảm. Dữ liệu đặc biệt nhạy cảm như thông tin tài chính, sức khỏe, sinh trắc học cần lớp bảo vệ mạnh hơn. Phân loại cũng giúp xác định dữ liệu nào không nên lưu ngay từ đầu.
Nguyên tắc 2: Dùng thuật toán chuẩn, không tự chế
Hãy dùng thuật toán và thư viện được công nhận rộng rãi như AES cho mã hóa đối xứng, cùng các chế độ hoạt động có xác thực như GCM. Không tự thiết kế thuật toán, không dùng thuật toán đã lỗi thời như DES hay RC4. Với thư viện, chọn thư viện mật mã được duy trì tích cực, cập nhật thường xuyên.
Nguyên tắc 3: Mật khẩu không mã hóa mà băm
Mật khẩu người dùng không nên được mã hóa (vì có thể giải mã) mà phải được băm bằng hàm băm chuyên dụng cho mật khẩu như bcrypt, scrypt hoặc Argon2, kèm salt riêng cho từng người dùng. Các hàm băm nhanh như MD5, SHA-1 không phù hợp để lưu mật khẩu.
Nguyên tắc 4: Quản lý khóa là trọng tâm
Mã hóa mạnh đến đâu cũng vô nghĩa nếu khóa nằm ngay cạnh dữ liệu. Các nguyên tắc quản lý khóa:
- Tách khóa khỏi dữ liệu: lưu khóa trong hệ thống quản lý khóa (KMS) hoặc thiết bị bảo mật phần cứng (HSM), không lưu trong mã nguồn hay file cấu hình.
- Mã hóa phong bì (envelope encryption): dữ liệu được mã hóa bằng khóa dữ liệu, khóa dữ liệu được mã hóa bằng khóa chính nằm trong KMS.
- Phân quyền truy cập khóa: chỉ dịch vụ cần thiết mới được dùng khóa, mọi lần sử dụng được ghi nhật ký.
- Xoay vòng khóa: thay khóa định kỳ và khi nghi ngờ bị lộ.
- Sao lưu khóa an toàn: mất khóa đồng nghĩa mất dữ liệu.
- Phân tách nhiệm vụ: người quản trị cơ sở dữ liệu không nên đồng thời quản lý khóa.
Nguyên tắc 5: Mã hóa mọi kết nối
Bật TLS cho kết nối giữa ứng dụng và cơ sở dữ liệu, giữa các nút trong cụm, cho công cụ quản trị. Kiểm tra chứng chỉ phía client để tránh tấn công giả mạo máy chủ. Tắt các phiên bản giao thức cũ.
Nguyên tắc 6: Mã hóa không thay thế kiểm soát truy cập
Với TDE, bất kỳ ai đăng nhập được vào cơ sở dữ liệu với quyền đọc đều thấy dữ liệu đã giải mã. Vì vậy, mã hóa phải đi cùng:
- Phân quyền tối thiểu cho tài khoản ứng dụng và con người.
- Không dùng tài khoản quản trị cho ứng dụng.
- Ghi nhật ký truy vấn với dữ liệu nhạy cảm.
- Phòng chống SQL injection bằng truy vấn tham số hóa.
Xem thêm bài quản lý quyền truy cập dữ liệu nhạy cảm.
Nguyên tắc 7: Đừng quên bản sao lưu và môi trường thử nghiệm
Bản sao lưu cơ sở dữ liệu cũng cần mã hóa, và khóa cho bản sao lưu phải được quản lý để có thể khôi phục khi cần. Môi trường phát triển, thử nghiệm thường dùng bản sao dữ liệu thật nhưng bảo vệ lỏng lẻo hơn; nên dùng dữ liệu giả hoặc dữ liệu đã được che (masking) thay vì bản sao nguyên vẹn. Hướng dẫn sao lưu an toàn có trong bài cấu hình sao lưu đám mây an toàn.
Các kỹ thuật bổ trợ: che dữ liệu và token hóa
- Che dữ liệu (data masking): hiển thị một phần, ví dụ chỉ bốn số cuối của số tài khoản, cho người dùng không cần xem toàn bộ.
- Token hóa: thay giá trị nhạy cảm bằng mã thay thế, giá trị thật lưu trong kho riêng được bảo vệ chặt chẽ. Thường dùng cho dữ liệu thẻ thanh toán.
Cân nhắc hiệu năng và vận hành
Mã hóa có chi phí: CPU, độ trễ, độ phức tạp vận hành. Mã hóa cấp trường có thể khiến việc tìm kiếm, sắp xếp, đánh chỉ mục khó hơn. Hãy thử nghiệm với tải thực tế, chọn mức mã hóa phù hợp từng loại dữ liệu, và tài liệu hóa quy trình khôi phục khi có sự cố liên quan đến khóa.
Lời kết
Mã hóa cơ sở dữ liệu hiệu quả khi bạn hiểu rõ nó bảo vệ trước rủi ro nào. Hãy kết hợp nhiều lớp, quản lý khóa nghiêm ngặt, và luôn nhớ rằng kiểm soát truy cập, giám sát và tối thiểu hóa dữ liệu vẫn là những trụ cột không thể thiếu.
Câu hỏi thường gặp
TDE có chống được SQL injection không?
Không. TDE chỉ bảo vệ file dữ liệu khi bị đánh cắp ở tầng lưu trữ. Khi truy vấn qua ứng dụng, dữ liệu được giải mã tự động, nên SQL injection vẫn đọc được dữ liệu.
Nên mã hóa toàn bộ cơ sở dữ liệu hay chỉ một số cột?
Nhiều tổ chức kết hợp: mã hóa toàn bộ ở tầng lưu trữ để bảo vệ cơ bản, và mã hóa cấp trường cho dữ liệu đặc biệt nhạy cảm. Lựa chọn tùy vào phân loại dữ liệu và yêu cầu hiệu năng.
Lưu khóa mã hóa trong file cấu hình có được không?
Không nên. Khóa nằm cạnh ứng dụng sẽ bị lộ cùng nếu máy chủ hoặc mã nguồn bị xâm phạm. Hãy dùng hệ thống quản lý khóa hoặc kho bí mật chuyên dụng.
Mã hóa và băm khác nhau thế nào?
Mã hóa có thể đảo ngược khi có khóa, dùng cho dữ liệu cần đọc lại. Băm là một chiều, dùng để xác minh như kiểm tra mật khẩu mà không cần lưu mật khẩu gốc.
Bài liên quan

Bảo mật thiết bị lưu trữ di động USB và ổ cứng ngoài
USB và ổ cứng ngoài tiện nhưng dễ mất, dễ lây mã độc. Cách mã hóa, kiểm soát cổng USB, chính sách sử dụng và xử lý khi thất lạc thiết bị lưu trữ di động.

Bảo vệ dữ liệu khách hàng theo tiêu chuẩn an toàn quốc tế
ISO/IEC 27001, PCI DSS, GDPR và quy định Việt Nam yêu cầu gì khi bảo vệ dữ liệu khách hàng? Tổng quan từng chuẩn, điểm chung và lộ trình áp dụng.

Các bước phục hồi dữ liệu sau sự cố tấn công mạng
Bị tấn công mạng, mất hoặc hỏng dữ liệu thì làm gì? Quy trình 7 bước từ cô lập, đánh giá, làm sạch đến khôi phục từ bản sao lưu và rút kinh nghiệm.

Cảnh báo nguy cơ mất an toàn thông tin từ thiết bị IoT
Camera IP, khóa thông minh, máy in mạng có thể trở thành cửa hậu vào hệ thống. Nhận diện rủi ro IoT phổ biến và cách bảo vệ cho gia đình lẫn doanh nghiệp.