Cài đặt Intel SGX SDK và Driver
Tải và cài đặt gói Intel SGX Driver
Bước đầu tiên là cài đặt kernel driver (sgx_drv) để hệ điều hành giao tiếp với phần cứng SGX. Bạn cần tải file RPM từ repository của Intel.
Tại sao: Driver này là cầu nối giữa phần mềm người dùng (Enclave) và phần cứng CPU, nếu không có nó, các ứng dụng SGX không thể khởi tạo.
Kết quả mong đợi: Driver được cài đặt thành công và module kernel được load vào hệ thống.
Trước khi cài, hãy đảm bảo bạn đã cài đặt các gói build essential (gcc, make, kernel-devel) như đã làm ở Phần 2. Dưới đây là lệnh tải và cài đặt driver từ repository chính thức của Intel (giả sử bạn đang dùng CentOS/RHEL 8 hoặc Fedora).
sudo dnf install https://download.01.org/intel-sgx/sgx-linux/2.15/distro/rhel8/sgx-driver-2.15.100.3.x86_64.rpm
Kết quả: Bạn thấy thông báo "Transaction successful" hoặc "Installed: sgx-driver-2.15.100.3.x86_64".
Cài đặt Intel SGX SDK cho môi trường phát triển
SDK cung cấp các thư viện C/C++ (libsgx, libsgx_evs) và công cụ (sgx_sign, sgx_edger8r) cần thiết để biên dịch mã nguồn Enclave.
Tại sao: SDK chứa các header file và runtime library để compile mã nguồn của bạn thành Enclave binary (hex) và application (so).
Kết quả mong đợi: Các thư mục /opt/intel/sgx_sdk và /opt/intel/sgx_linux_primitives được tạo ra.
Tải SDK từ repository tương ứng với phiên bản driver đã cài. Lưu ý: Phiên bản SDK phải khớp với Driver (cùng dòng 2.15 trong ví dụ này).
sudo dnf install https://download.01.org/intel-sgx/sgx-linux/2.15/distro/rhel8/sgx-sdk-2.15.100.3.x86_64.rpm
Kết quả: Hệ thống báo "Installed: sgx-sdk-2.15.100.3.x86_64". SDK đã sẵn sàng tại /opt/intel/sgx_sdk.
Cấu hình gói phần mềm và biến môi trường
Cài đặt các thư viện nền tảng bắt buộc
SDK SGX yêu cầu một số thư viện runtime cụ thể để hoạt động, bao gồm các thư viện cho Open Enclave và crypto.
Tại sao: Nếu thiếu các gói này, ứng dụng Enclave sẽ crash ngay khi gọi API SGX với lỗi "library not found".
Kết quả mong đợi: Tất cả các dependency runtime được thỏa mãn.
Cài đặt các gói hỗ trợ cần thiết thông qua package manager. Danh sách này bao gồm các thư viện chuẩn của Intel SGX.
sudo dnf install sgx-dcap-dl sgx-dcap-ql sgx-epid-ec sgx-pcedr
Kết quả: Các gói phần mềm được cài đặt xong, không báo lỗi conflict hay missing dependency.
Cấu hình biến môi trường (Environment Variables)
Bạn cần export các biến môi trường để compiler và linker tìm thấy thư viện SGX khi build code.
Tại sao: Các công cụ như gcc và sgx_edger8r cần biết đường dẫn đến SDK và Primitives để liên kết (link) code.
Kết quả mong đợi: Biến môi trường được thiết lập, có thể kiểm tra bằng lệnh echo.
Cài đặt các biến này vào file shell profile của bạn (ví dụ: ~/.bashrc) để chúng tồn tại trong các session sau. Dưới đây là nội dung cần thêm vào file ~/.bashrc.
cat >> ~/.bashrc
Kết quả: Khi chạy lệnh echo $SGX_SDK, bạn nhận được đường dẫn /opt/intel/sgx_sdk.
Kiểm tra trạng thái hoạt động của SGX Driver
Verify Driver đã được load vào Kernel
Khởi động lại máy chủ hoặc load module thủ công để đảm bảo driver hoạt động.
Tại sao: Việc cài đặt RPM chỉ copy file, driver cần được load vào kernel mới có thể sử dụng.
Kết quả mong đợi: Module sgx_drv hiện diện trong danh sách các module đang chạy.
Thực hiện lệnh để load module và kiểm tra trạng thái.
sudo modprobe sgx_drv
lsmod | grep sgx
Kết quả: Dòng đầu tiên xuất hiện "sgx_drv", dòng tiếp theo có thể là "sgx_enclave".
Kiểm tra thiết bị SGX trong hệ thống
Đảm bảo hệ thống nhận diện được thiết bị SGX (/dev/sgx).
Tại sao: Nếu không có /dev/sgx, các ứng dụng người dùng không thể tạo Enclave.
Kết quả mong đợi: Xuất hiện thư mục /dev/sgx và các node thiết bị con bên trong.
Liệt kê các thiết bị SGX được tạo bởi driver.
ls -l /dev/sgx*
Kết quả: Bạn thấy các file như /dev/sgx (device node chính) và /dev/sgx_enclave (device node cho enclave).
Chạy công cụ kiểm tra trạng thái (sgx_status)
Sử dụng công cụ đi kèm SDK để đọc trạng thái phần cứng SGX từ CPU.
Tại sao: Đây là cách chính xác nhất để xác nhận CPU hỗ trợ SGX và phần mềm đã giao tiếp được với nó.
Kết quả mong đợi: Công cụ báo "SGX enabled" và hiển thị số lượng EPC (Enclave Page Cache) pages khả dụng.
Trước khi chạy, đảm bảo bạn đã source ~/.bashrc. Chạy công cụ sgx_status (có sẵn trong SDK tools).
$SGX_SDK/tools/sgx_status
Kết quả: Màn hình hiển thị thông tin chi tiết: "SGX status: Enabled", "EPC size: ...", "Max Enclaves: ...". Nếu thấy "Disabled" hoặc lỗi, hãy kiểm tra lại BIOS và phần 2.
Điều hướng series:
Mục lục: Series: Triển khai Database bảo mật với Confidential Computing và Linux SGX
« Phần 2: Kiểm tra phần cứng và cài đặt môi trường Linux cho SGX
Phần 4: Cấu hình database PostgreSQL chạy trên Enclave SGX »