Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số, dữ liệu là tài sản chiến lược của các tổ chức, doanh nghiệp tài chính, viễn thông và cơ quan chính phủ. Theo báo cáo thường niên của IBM Security Cost of a Data Breach Report, chi phí trung bình của một vụ rò rỉ dữ liệu doanh nghiệp toàn cầu đã vượt mức 4.45 triệu USD, trong đó 82% các vụ việc liên quan đến dữ liệu lưu trữ trên môi trường đám mây và cơ sở dữ liệu không được mã hóa toàn diện. Cơ sở dữ liệu quan hệ mã nguồn mở PostgreSQL được đánh giá là một trong những hệ quản trị cơ sở dữ liệu (HQTCSDL) mạnh mẽ, tin cậy nhất hiện nay. Tuy nhiên, nếu chỉ dựa vào cấu hình mặc định, hệ thống phải đối mặt với hàng loạt rủi ro an ninh mạng nghiêm trọng từ việc nghe lén gói tin trên đường truyền đến việc trích xuất trái phép file vật lý dưới đĩa cứng.

Đồ án tốt nghiệp "Tìm hiểu, triển khai một số cơ chế mã hoá dữ liệu trong HQTCSDL PostgreSQL" (Chuyên ngành: Công nghệ thông tin / Quản trị mạng, Trường Đại học Quản lý và Công nghệ Hải Phòng) tập trung giải quyết bài toán cốt lõi: Làm thế nào để thiết lập một phòng tuyến bảo mật đa tầng, kết hợp mã hóa dữ liệu lưu trữ (Data at Rest), mã hóa kênh truyền (Data in Transit), kiểm soát truy cập mức hàng (Row-Level Security - RLS) và kiểm toán toàn diện (Database Auditing) trên nền tảng PostgreSQL 12.

                    MÔ HÌNH BẢO MẬT ĐA TẦNG POSTGRESQL
+-----------------------------------------------------------------------+
|  Client (psql / App)                                                  |
+-----------------------------------+-----------------------------------+
                                    |
                 Kênh truyền mạng    | [TLS 1.3 - OpenSSL]
                 (Data in Transit)  | Handshake: ECDHE | Cipher: AES-256-GCM
                                    v
+-----------------------------------------------------------------------+
|  PostgreSQL Server Engine                                             |
|  +-----------------------------------------------------------------+  |
|  |  Tầng kiểm soát: RBAC Roles & Row-Level Security (RLS Policies)  |  |
|  +-----------------------------------------------------------------+  |
|  |  Tầng kiểm toán: pgAudit Extension (Session & Object Logging)   |  |
|  +-----------------------------------------------------------------+  |
|  |  Tầng lưu trữ: pgcrypto / TDE Column Encryption                 |  |
|  |  (pgp_sym_encrypt / pgp_sym_decrypt - 2-tier Key Architecture)  |  |
|  +-----------------------------------------------------------------+  |
+-----------------------------------+-----------------------------------+
                                    |
                 Dữ liệu vật lý     | [AES-256 / DEK Encrypted]
                 (Data at Rest)     v
+-----------------------------------------------------------------------+
|  Hệ thống đĩa vật lý / Tablespaces (Data Files, WAL Segments, CLOG)   |
+-----------------------------------------------------------------------+

Mục tiêu dự án

  1. Phân tích toàn diện kiến trúc bảo mật PostgreSQL: Đánh giá các véc-tơ tấn công phổ biến gồm Insider Threat, Man-in-the-Middle (MitM), SQL Injection, Privilege Escalation và DoS/SYN Flood.
  2. Thiết lập cơ chế mã hóa kênh truyền: Triển khai giao thức TLS 1.3 sử dụng OpenSSL để tạo Root CA và chứng chỉ số X.509, bảo vệ toàn vẹn thông tin kết nối giữa Client và Server.
  3. Hiện thực hóa mã hóa dữ liệu lưu trữ (TDE/pgcrypto): Xây dựng giải pháp mã hóa cấp cột và cấp bảng với thuật toán AES-256/Blowfish, áp dụng mô hình quản lý khóa hai tầng (Master Encryption Key & Data Encryption Key).
  4. Tích hợp kiểm soát truy cập và kiểm toán nâng cao: Cấu hình Role-Based Access Control (RBAC), chính sách Row-Level Security (RLS) và cài đặt module pgAudit để phục vụ giám sát pháp y số.
  5. Thực nghiệm và đo lường hiệu năng: Đánh giá độ trễ truy vấn, tỷ lệ bắt gói tin qua Wireshark và mức độ tiêu hao tài nguyên hệ thống.

Phạm vi và giới hạn

  • Phạm vi triển khai: Phiên bản PostgreSQL 12 chạy trên hệ điều hành Linux (CentOS/RHEL 7/8), ứng dụng OpenSSL 1.1.1/3.0, Wireshark v3.x/v4.x và module pgcrypto, pgAudit.
  • Giới hạn: Chưa tích hợp các phần cứng bảo mật chuyên dụng HSM (Hardware Security Module) hoặc công cụ quản lý khóa doanh nghiệp tập trung như HashiCorp Vault.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nhiều tổ chức vẫn duy trì kết nối cơ sở dữ liệu dạng văn bản rõ (plaintext) hoặc chỉ áp dụng mã hóa một chiều đơn giản ở tầng ứng dụng, dẫn đến nguy cơ lộ lọt dữ liệu khi máy chủ hoặc hạ tầng mạng bị xâm nhập.

Tiêu chí so sánh Lưu trữ mặc định (Plaintext) Mã hóa tầng ứng dụng (App-Level) Giải pháp Đồ án (PostgreSQL Multi-layer)
Bảo vệ dữ liệu lưu trữ Không (Dễ bị đọc trực tiếp từ file .dat) Có (Ứng dụng tự mã hóa) Có (pgcrypto / TDE cấp cột & Tablespace)
Bảo vệ kênh truyền Không (Bắt gói tin thấy rõ user/pass/SQL) Tùy thuộc vào HTTPS/TLS API Có (Bắt buộc TLS 1.3 với chứng thư X.509)
Kiểm soát phân quyền Phân quyền cơ bản (Superuser/Login) Phức tạp trong code nghiệp vụ Chính sách Row-Level Security (RLS) động
Khả năng kiểm toán PostgreSQL Log cơ bản Custom log trên ứng dụng pgAudit chuyên sâu (Session & Relation)
Chi phí bản quyền 0 VNĐ Tốn công sức phát triển 0 VNĐ (100% Mã nguồn mở tiêu chuẩn)

Thiết kế hệ thống và công nghệ sử dụng

Hệ thống được thiết kế theo kiến trúc module hóa với các thành phần cốt lõi:

  • Hệ điều hành máy chủ: Linux CentOS 7.9 / RHEL 8 Enterprise (x86_64).
  • Hệ quản trị CSDL: PostgreSQL 12.14 Server & psql Client CLI.
  • Thư viện mật mã: OpenSSL 1.1.1k hỗ trợ TLS 1.3 và tạo khóa RSA 2048/4096-bit.
  • Tiện ích mở rộng: pgcrypto (hỗ trợ hàm băm SHA-2, mã hóa đối xứng AES, 3DES, Blowfish) và pgAudit (PostgreSQL Audit Extension v1.1).
  • Công cụ phân tích mạng: Wireshark Packet Analyzer để bắt và phân tích giao thức TCP/TLS trên cổng dịch vụ.
-- Kích hoạt các tiện ích bảo mật cốt lõi trong PostgreSQL
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS pgaudit;

Phương pháp luận và kế hoạch triển khai

Dự án áp dụng mô hình nghiên cứu - thực nghiệm kỹ thuật kết hợp quy trình phát triển lặp (Iterative Engineering Methodology) trong 12 tuần:

  • Tuần 1 - 3: Nghiên cứu lý thuyết kiến trúc bộ nhớ PostgreSQL (shared_buffers, wal_buffers), quy trình Handshake TLS 1.3 và mô hình đe dọa.
  • Tuần 4 - 6: Cài đặt máy chủ PostgreSQL 12, thiết lập chứng chỉ số Root CA, cấu hình file postgresql.confpg_hba.conf.
  • Tuần 7 - 9: Xây dựng kịch bản mã hóa pgcrypto, cấu hình RLS và kích hoạt hệ thống kiểm toán pgAudit.
  • Tuần 10 - 12: Kiểm thử bảo mật (Wireshark packet sniffing), đo benchmark hiệu năng I/O, hoàn thiện báo cáo đồ án.

Implementation và kết quả

Quy trình cấu hình bảo mật kênh truyền với TLS 1.3

Để triệt tiêu nguy cơ tấn công Man-in-the-Middle và nghe lén dữ liệu trên đường truyền, chứng chỉ số tự ký (Self-signed Root CA) và Server Certificate được khởi tạo bằng công cụ OpenSSL:

# 1. Tạo Root CA riêng biệt
openssl req -new -nodes -text -out root.csr -keyout root.key -subj "/CN=root.ca.local"
chmod 0600 root.key
openssl x509 -req -in root.csr -text -days 3650 -extfile /etc/pki/tls/openssl.cnf \
  -extensions v3_ca -signkey root.key -out root.crt

# 2. Tạo khóa bí mật và ký Certificate cho PostgreSQL Server
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=dbhost.local"
chmod 0600 server.key
openssl x509 -req -in server.csr -text -days 365 -CA root.crt -CAkey root.key \
  -CAcreateserial -out server.crt

Cấu hình máy chủ PostgreSQL trong file postgresql.conf và chính sách kết nối trong pg_hba.conf:

# /var/lib/pgsql/12/data/postgresql.conf
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ca_file = 'root.crt'
ssl_min_protocol_version = 'TLSv1.3'
# /var/lib/pgsql/12/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
hostssl all             all             0.0.0.0/0               scram-sha-256

Hiện thực hóa mã hóa dữ liệu lưu trữ với pgcrypto

Hệ thống triển khai mã hóa cấp cột cho các trường dữ liệu nhạy cảm (như mật khẩu, số thẻ ngân hàng, dữ liệu định danh cá nhân) thông qua chuẩn mã hóa đối xứng nâng cao AES-256 với cơ chế dẫn xuất khóa PGP:

-- Khởi tạo bảng dữ liệu khách hàng bảo mật
CREATE TABLE customer_secure (
    customer_id SERIAL PRIMARY KEY,
    fullname VARCHAR(100) NOT NULL,
    secret_identity BYTEA NOT NULL,
    balance_encrypted BYTEA NOT NULL
);

-- Mã hóa dữ liệu trước khi lưu trữ xuống đĩa vật lý (Data at Rest)
INSERT INTO customer_secure (fullname, secret_identity, balance_encrypted)
VALUES (
    'Nguyen Van A',
    pgp_sym_encrypt('031099001234', 'MasterSecretKey@2023', 'compress-algo=1, cipher-algo=aes256'),
    pgp_sym_encrypt('500000000', 'MasterSecretKey@2023', 'compress-algo=1, cipher-algo=aes256')
);

-- Truy vấn và giải mã dữ liệu có xác thực khóa bí mật
SELECT 
    fullname,
    pgp_sym_decrypt(secret_identity, 'MasterSecretKey@2023') AS decrypted_identity,
    pgp_sym_decrypt(balance_encrypted, 'MasterSecretKey@2023') AS decrypted_balance
FROM customer_secure 
WHERE customer_id = 1;

Thiết lập Row-Level Security (RLS) và Kiểm toán pgAudit

Hệ thống bảo vệ dữ liệu ở cấp độ bản ghi logic thông qua cơ chế RLS kết hợp ghi log nhật ký kiểm toán:

-- Kích hoạt Row-Level Security trên bảng nghiệp vụ
ALTER TABLE customer_secure ENABLE ROW LEVEL SECURITY;

-- Tạo chính sách giới hạn người dùng chỉ được xem bản ghi của chính họ
CREATE POLICY customer_user_policy ON customer_secure
    FOR ALL
    TO application_user
    USING (fullname = CURRENT_USER)
    WITH CHECK (fullname = CURRENT_USER);
# Thiết lập pgAudit trong postgresql.conf
shared_preload_libraries = 'pgaudit'
pgaudit.log = 'read, write, role, ddl'
pgaudit.log_catalog = off
pgaudit.log_parameter = on
pgaudit.log_relation = on

Kết quả thử nghiệm và đánh giá kiểm thử

Tiêu chí thử nghiệm Môi trường Plaintext (Chưa bảo mật) Môi trường sau khi triển khai giải pháp Đánh giá / Tỷ lệ cải thiện
Bắt gói tin mạng (Wireshark) Hiển thị rõ câu lệnh SQL, bảng, mật khẩu 100% Payload được mã hóa dưới dạng Application Data (TLS 1.3) Khử 100% rủi ro rò rỉ kênh truyền
Trích xuất trực tiếp Data File Dữ liệu text hiển thị rõ trên file block đĩa Dữ liệu nhạy cảm lưu dưới dạng BYTEA nhị phân mã hóa AES Khử hoàn toàn nguy cơ Insider/Disk Theft
Độ trễ truy vấn (Query Latency) Gốc (Baseline ~1.2ms / query) Tăng nhẹ lên ~1.28ms / query (Bao gồm giải mã pgp) Overhead chỉ ~6.6%, hoàn toàn chấp nhận được
Tải CPU khi mã hóa đồng thời 2.1% CPU Usage 4.8% CPU Usage (1000 concurrent encrypted inserts) Hệ thống duy trì trạng thái ổn định (<5% CPU)
Giám sát hành vi bất thường Không lưu trữ tham số SQL chi tiết Lưu trữ toàn bộ câu lệnh, role, timestamp vào pgAudit log Đạt chuẩn tuân thủ PCI-DSS / ISO 27001

Đổi mới và đóng góp

  1. Kiến trúc phòng thủ chiều sâu (Defense-in-Depth) hoàn chỉnh: Khác với các phương án đơn lẻ chỉ tập trung vào firewall hoặc mật khẩu đăng nhập, đồ án liên kết chặt chẽ 4 lớp phòng thủ: Xác thực danh tính (SCRAM-SHA-256) -> Mã hóa đường truyền (TLS 1.3) -> Kiểm soát bản ghi (RLS) -> Mã hóa lưu trữ (pgcrypto AES-256).
  2. Tối ưu hóa chi phí vận hành (TCO): Cung cấp giải pháp tương đương tính năng Transparent Data Encryption (TDE) thương mại của Oracle Database Enterprise Edition ($47,500/core) và Microsoft SQL Server Enterprise ($13,748/core) trên nền tảng PostgreSQL hoàn toàn miễn phí bản quyền, giúp doanh nghiệp tiết kiệm 85 - 90% ngân sách hạ tầng.
  3. Mô hình triển khai chuẩn hóa: Xây dựng tài liệu hướng dẫn kỹ thuật rõ ràng, chi tiết từ khâu tạo chứng chỉ PKI nội bộ, phân quyền ROLE/GRANT, đến tích hợp pgAudit tương thích với các giải pháp SIEM (Splunk, Elastic SIEM).

Ứng dụng thực tế và triển khai

Kịch bản áp dụng thực tế

  • Hệ thống Ngân hàng & Fintech: Bảo mật thông tin số tài khoản, số định danh thẻ (PAN), số dư khả dụng và nhật ký giao dịch tài chính.
  • Hệ thống Y tế điện tử (EHR/EMR): Đảm bảo quyền riêng tư của hồ sơ bệnh án theo tiêu chuẩn HIPAA bằng cơ chế Row-Level Security, cho phép bác sĩ chỉ truy cập hồ sơ bệnh nhân do mình điều trị.
  • Cơ quan quản lý hành chính nhà nước: Bảo mật cơ sở dữ liệu dân cư, ngăn ngừa truy cập trái phép từ chính các quản trị viên hệ thống cấp dưới thông qua mô hình khóa phân tách.
                      LỘ TRÌNH TRIỂN KHAI DOANH NGHIỆP (ROADMAP)
+-------------------+      +-------------------+      +-------------------+      +-------------------+
|  Giai đoạn 1      | ---> |  Giai đoạn 2      | ---> |  Giai đoạn 3      | ---> |  Giai đoạn 4      |
|  Đánh giá rủi ro  |      |  Triển khai PKI   |      |  Mã hóa pgcrypto  |      |  Tích hợp SIEM    |
|  & Phân loại data |      |  & Bật TLS 1.3    |      |  & Áp dụng RLS    |      |  & Audit tự động  |
|  (Tuần 1 - 2)     |      |  (Tuần 3 - 4)     |      |  (Tuần 5 - 7)     |      |  (Tuần 8 - 10)    |
+-------------------+      +-------------------+      +-------------------+      +-------------------+

Yêu cầu cấu hình triển khai hệ thống

  • Phần cứng tối thiểu: 4 Cores CPU, 8 GB RAM, 100 GB SSD (Hỗ trợ tập lệnh phần cứng AES-NI để tăng tốc giải mã).
  • Phần mềm: Linux OS (Kernel >= 3.10), PostgreSQL 12+, OpenSSL 1.1.1+, WireShark 3.0+.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Hiệu năng tìm kiếm trên cột mã hóa: Khi sử dụng pgp_sym_encrypt(), các câu lệnh truy vấn tìm kiếm gần đúng (LIKE '%keyword%') hoặc so sánh khoảng không thể sử dụng B-tree index trực tiếp mà bắt buộc phải giải mã toàn bộ dữ liệu (Full table scan).
  • Quản lý khóa tập trung: Khóa bí mật (MasterSecretKey) trong đồ án vẫn được truyền vào qua tham số truy vấn SQL, tiềm ẩn rủi ro lộ khóa nếu quản trị viên truy cập vào bộ nhớ tạm hoặc log ứng dụng chưa che giấu kỹ.

Hướng phát triển trong tương lai

  • Nghiên cứu tích hợp các extension mã hóa cấp khối đĩa trong suốt như pg_tde hoặc tích hợp giải pháp quản lý khóa doanh nghiệp HashiCorp Vault / AWS KMS.
  • Áp dụng kỹ thuật mã hóa tìm kiếm được (Searchable Encryption) và mã hóa đồng cấu (Homomorphic Encryption) cho phép tính toán trực tiếp trên dữ liệu đã mã hóa mà không cần giải mã.

Đối tượng hưởng lợi

  • Sinh viên & Học viên CNTT: Nắm vững tài liệu thực hành mẫu về bảo mật cơ sở dữ liệu, hiểu rõ nguyên lý vận hành của TLS 1.3, cơ chế phân bổ bộ nhớ (shared_buffers, WAL) và phương pháp kiểm toán CSDL.
  • Kỹ sư cơ sở dữ liệu (DBA) & Backend Developers: Sở hữu bộ cấu hình sẵn sàng cho môi trường Production (postgresql.conf, pg_hba.conf, script OpenSSL) giúp tăng tốc độ triển khai an toàn hệ thống lên 70%.
  • Doanh nghiệp & Startup: Giảm thiểu nguy cơ thiệt hại tài chính do rò rỉ dữ liệu, đạt các chứng chỉ tuân thủ bảo mật tiêu chuẩn quốc tế mà không phải chịu chi phí bản quyền phần mềm đắt đỏ.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để kích hoạt TLS 1.3 trên PostgreSQL là gì?

Máy chủ cần cài đặt PostgreSQL phiên bản 12 trở lên, biên dịch cùng thư viện OpenSSL phiên bản tối thiểu 1.1.1. Máy khách (psql hoặc Driver JDBC/ODBC) cũng phải hỗ trợ TLS 1.3.

2. Mã hóa pgcrypto ảnh hưởng thế nào đến tốc độ đọc/ghi dữ liệu?

Theo kết quả thực nghiệm, mã hóa AES-256 qua pgcrypto làm tăng độ trễ ghi (INSERT) khoảng 5 - 8% và tiêu hao thêm khoảng 2.7% tài nguyên CPU do chi phí xử lý mật mã. Với các máy chủ có CPU hỗ trợ tập lệnh AES-NI, mức độ suy giảm hiệu năng là không đáng kể đối với hệ thống OLTP thông thường.

3. Có thể phân quyền để DBA không xem được dữ liệu mã hóa không?

Hoàn toàn có thể. Khi áp dụng mô hình phân tách khóa, dữ liệu được mã hóa bằng khóa riêng mà chỉ tầng ứng dụng hoặc người dùng sở hữu khóa nắm giữ. Ngay cả khi DBA sử dụng tài khoản postgres (Superuser) truy vấn bảng, kết quả nhận được vẫn chỉ là chuỗi byte nhị phân đã mã hóa.

4. pgAudit có làm tràn ổ cứng do ghi log quá nhiều không?

pgAudit cho phép lọc chi tiết các lớp hành động cần ghi nhận (pgaudit.log = 'role, ddl'). Bằng cách tắt ghi log trên danh mục hệ thống (pgaudit.log_catalog = off) và kết hợp công cụ quay vòng log (logrotate), hệ thống hoàn toàn kiểm soát được dung lượng lưu trữ.

5. Chi phí triển khai giải pháp này so với các HQTCSDL thương mại?

Giải pháp xây dựng 100% trên các công cụ mã nguồn mở tiêu chuẩn (PostgreSQL, OpenSSL, pgAudit), do đó chi phí bản quyền là 0 VNĐ. Doanh nghiệp chỉ chi trả chi phí hạ tầng máy chủ và công tác quản trị, mang lại tỷ suất hoàn vốn (ROI) vượt trội trong vòng 3 - 6 tháng đầu vận hành.


Kết luận

Đồ án tốt nghiệp "Tìm hiểu, triển khai một số cơ chế mã hoá dữ liệu trong HQTCSDL PostgreSQL" của sinh viên Nguyễn Quốc Anh đã giải quyết triệt để và hệ thống hóa bài toán an toàn thông tin cho cơ sở dữ liệu doanh nghiệp. Thông qua việc kết hợp đồng bộ mã hóa kênh truyền TLS 1.3, mã hóa lưu trữ AES-256 pgcrypto, kiểm soát truy cập Row-Level Security và kiểm toán chuyên sâu pgAudit, đồ án cung cấp một khung kiến trúc bảo mật đa tầng vững chắc, chi phí thấp và có tính ứng dụng thực tiễn rất cao.

Các kỹ sư dữ liệu, quản trị viên hệ thống và doanh nghiệp đang tìm kiếm giải pháp bảo mật dữ liệu toàn diện trên PostgreSQL có thể tham khảo và áp dụng trực tiếp mô hình kỹ thuật này vào hệ thống của mình nhằm bảo vệ tài sản số an toàn trước mọi nguy cơ tấn công mạng.