Nguyên lý hoạt động của Confidential Computing và Enclave
Confidential Computing mở rộng mô hình bảo mật dữ liệu từ trạng thái nghỉ (at-rest) và truyền tải (in-transit) sang trạng thái xử lý (in-use). Dữ liệu được mã hóa ngay cả khi đang được CPU xử lý.
Enclave là vùng bộ nhớ riêng biệt, được bảo vệ bởi phần cứng (Intel SGX) trong CPU. Các đặc tính chính bao gồm:
- Tính riêng tư (Privacy): Chỉ mã bên trong Enclave mới truy cập được dữ liệu trong Enclave. OS, Hypervisor, hay Root User không thể đọc được.
- Tính toàn vẹn (Integrity): Mã bên trong Enclave không thể bị thay đổi bởi phần mềm bên ngoài.
- Attestation: Cơ chế cho phép bên thứ ba xác minh rằng Enclave đang chạy mã chính chủ và chưa bị giả mạo.
Trong kiến trúc Database, Enclave đóng vai trò như một "hộp đen" an toàn. Các query SQL và dữ liệu nhạy cảm (PII, tài chính) được đưa vào Enclave để xử lý. Kết quả trả về đã được tính toán nhưng dữ liệu gốc vẫn được mã hóa khi ra khỏi Enclave.
Yêu cầu phần cứng: CPU hỗ trợ Intel SGX
Để triển khai SGX, phần cứng CPU là yếu tố tiên quyết. Không phải CPU Intel nào cũng hỗ trợ SGX.
1. Danh sách CPU hỗ trợ
Intel SGX được hỗ trợ trên các dòng sau:
- Server (Xeon Scalable): Generations 1 (Skylake-SP) và 2 (Cascade Lake-SP). Lưu ý: Generations 3 (Cooper Lake) và 4 (Ice Lake) đã bị Intel loại bỏ hỗ trợ SGX do lỗ hổng bảo mật.
- Client (Core i): Generations 8 (Coffee Lake) trở lên, bao gồm cả dòng Tiger Lake và Alder Lake trở lên.
Tuy nhiên, để đảm bảo tương thích tốt nhất với Ubuntu 24.04 và các driver mới nhất, bạn nên sử dụng CPU Intel Xeon Scalable Gen 2 hoặc Intel Core Tiger Lake / Alder Lake trở lên.
2. Kiểm tra hỗ trợ SGX trên máy chủ
Để xác định CPU hiện tại có hỗ trợ SGX hay không, chúng ta sẽ kiểm tra file /proc/cpuinfo để tìm cờ sgx.
Thực hiện: Chạy lệnh sau để lọc thông tin CPU:
grep -o "sgx" /proc/cpuinfo | head -n 1
Kết quả mong đợi:
- Nếu thấy xuất hiện từ
sgx: CPU hỗ trợ SGX. Bạn có thể tiếp tục.
- Nếu không thấy kết quả (rỗng): CPU không hỗ trợ hoặc SGX bị tắt trong BIOS.
Verify kết quả: Nếu lệnh trên không trả về gì, hãy truy cập BIOS/UEFI của server, tìm mục Intel SGX hoặc Security và chuyển trạng thái từ Disabled sang Enabled hoặc Software Guard Extensions. Sau đó khởi động lại máy (reboot).
Yêu cầu phần mềm: Ubuntu 24.04 LTS và Kernel
Intel SGX yêu cầu môi trường Linux có kernel hỗ trợ driver SGX Driver (SGX Driver) và các syscall cần thiết.
1. Phiên bản Ubuntu và Kernel
Ubuntu 24.04 LTS (Noble Numbat) mặc định đi kèm với Linux Kernel 6.8 hoặc cao hơn. Đây là phiên bản tối thiểu để hỗ trợ các driver SGX mới nhất (SGX Driver 2.21+).
Thực hiện: Kiểm tra phiên bản Kernel hiện tại:
uname -r
Kết quả mong đợi: Trả về chuỗi phiên bản bắt đầu bằng 6.8, 6.9, hoặc cao hơn (ví dụ: 6.8.0-31-generic).
Nếu phiên bản kernel thấp hơn 6.8, bạn cần cập nhật hệ thống hoặc nâng cấp kernel thủ công trước khi cài đặt driver.
sudo apt update && sudo apt upgrade
Verify kết quả: Chạy lại lệnh uname -r sau khi upgrade để đảm bảo kernel đã được nâng cấp.
2. Kiểm tra trạng thái SGX trong Kernel
Trên Ubuntu 24.04, module SGX thường được tích hợp sẵn trong kernel hoặc cần tải module sgx.
Thực hiện: Kiểm tra xem module SGX đã được load chưa:
lsmod | grep sgx
Kết quả mong đợi:
- Có thể thấy các module như
sgx, sgx_enclave, sgx_epc nếu đã được load tự động.
- Nếu không thấy: Đây là trạng thái bình thường trước khi cài đặt driver SGX của Intel. Phần 2 của series sẽ hướng dẫn cài đặt driver cụ thể.
Kế hoạch cài đặt các thành phần (Roadmap)
Để xây dựng môi trường Database Confidential Computing hoàn chỉnh, chúng ta cần triển khai theo trình tự chặt chẽ sau. Mỗi bước phụ thuộc vào bước trước.
1. Thành phần cần cài đặt
- Intel SGX Driver: Driver cấp thấp để tương tác với phần cứng SGX. (Cài trong Phần 2).
- DCAT (DCAT SDK): Data Center Attestation Primitives (DCAP) SDK. Cần thiết để thực hiện Attestation (xác thực) Enclave từ xa. (Cài trong Phần 3).
- Intel SGX SDK: Bộ thư viện để biên dịch mã nguồn C/C++ chạy trong Enclave. (Cài trong Phần 3).
- Database Engine: MySQL hoặc MariaDB được biên dịch với module SGX (ví dụ: MySQL SGX Edition hoặc mã nguồn mở có patch SGX). (Cài trong Phần 4).
2. Cấu hình môi trường phát triển
Trước khi cài đặt các gói lớn, cần chuẩn bị các công cụ build cơ bản trên Ubuntu 24.04:
sudo apt install -y build-essential git cmake libssl-dev libnuma-dev pkg-config
Kết quả mong đợi: Các gói trên được cài đặt thành công mà không báo lỗi thiếu dependency.
3. Kiểm tra không gian EPC (Enclave Page Cache)
EPC là vùng bộ nhớ vật lý dành riêng cho Enclave. Nếu không cấu hình đúng, Enclave sẽ không thể khởi tạo.
Thực hiện: Kiểm tra xem EPC có được phân bổ chưa:
cat /sys/class/sgx/epc0/size
Kết quả mong đợi:
- Nếu trả về con số lớn hơn 0 (ví dụ:
33554432 tương đương 32MB): EPC đã sẵn sàng.
- Nếu trả về lỗi
No such file or directory: Bạn cần cấu hình boot parameter hoặc cài đặt driver SGX để tạo EPC. Điều này sẽ được xử lý chi tiết trong Phần 2.
Để kiểm tra tổng dung lượng EPC khả dụng (nếu đã có):
ls -l /sys/class/sgx/epc*
Verify kết quả: Xác nhận rằng ít nhất một thư mục epc0 tồn tại trong /sys/class/sgx/. Đây là dấu hiệu phần cứng SGX đã được kernel nhận diện đúng mức độ vật lý.
Điều hướng series:
Mục lục: Series: Triển khai Database Confidential Computing với Intel SGX trên Ubuntu 24.04
Phần 2: Cài đặt nền tảng và Driver Intel SGX trên Ubuntu »