Cộng đồng firmware mã nguồn mở đã phát hiện ra một rào cản đáng kể trong việc phát triển các giải pháp BIOS thay thế cho bộ xử lý máy chủ Turin mới nhất của AMD. Mặc dù AMD đã công bố những gì được cho là bộ đầy đủ các blob firmware Platform Security Processor ( PSP ) cần thiết cho việc khởi tạo hệ thống, nhưng những thành phần công khai này lại không đủ để thực sự khởi động phần cứng.
Các Blob Firmware Công Khai Tạo Ra Hệ Thống Không Thể Khởi Động
Các kỹ sư đang làm việc trên việc chuyển đổi coreboot sang hệ thống Gigabyte MZ33-AR1 Turin đã phát hiện ra rằng các blob PSP có sẵn công khai của AMD đơn giản là không hoạt động. Khi cố gắng tạo một image có thể khởi động chỉ sử dụng những thành phần chính thức này, hệ thống hoàn toàn không thể khởi tạo. Nguyên nhân gốc rễ dường như liên quan đến việc xác minh khóa mật mã trong cấu trúc firmware PSP.
Phân tích cho thấy các blob công khai sử dụng AMD Root Key ID khác (0x00) so với các image vendor hoạt động (0x02). Root Key này đóng vai trò là nền tảng để xác minh tất cả các thành phần firmware PSP trong quá trình khởi động. Khi có khóa sai, toàn bộ chuỗi tin cậy sẽ thất bại, ngăn không cho CPU được giải phóng khỏi trạng thái reset ban đầu.
Các thành phần firmware chính:
- Cấu trúc Embedded Firmware Structure ( EFS ): Header file chỉ ra vị trí của các PSP blob
- AMD Root Key : Khóa mã hóa chính để xác minh PSP blob (ID 0x00 trong phiên bản công khai so với 0x02 trong phiên bản nhà cung cấp)
- Thư mục PSP : Hệ thống file chứa 30-50+ thành phần firmware riêng lẻ
- Huấn luyện bộ nhớ: Quá trình khởi tạo kéo dài 2+ phút trên mỗi lần khởi động máy chủ AMD
Cộng Đồng Phát Hiện Giải Pháp Tạm Thời Sử Dụng Khóa Tiền Sản Xuất
Đột phá đến khi các nhà phát triển có được quyền truy cập vào gói Turin Pi của AMD, chứa các blob firmware tiền sản xuất với các khóa ký khác. Những thành phần này khởi động hệ thống thành công, xác nhận rằng phần cứng và triển khai coreboot hoạt động chính xác khi có firmware phù hợp.
Vấn đề không phải về cấu hình mà là về khóa được ghi vào silicon CPU được sử dụng để xác minh khóa được sử dụng trong các blob và chữ ký của các blob.
Khám phá này đã khơi dậy cuộc thảo luận về tính khả dụng của firmware mở cho các hệ thống hiện đại. Các thành viên cộng đồng bày tỏ sự thất vọng rằng ngay cả khi AMD có vẻ hợp tác trong việc công bố các thành phần firmware, thực tế là ba megabyte mã không thể kiểm toán vẫn không đủ cho hoạt động hệ thống cơ bản.
Phân Tích Kỹ Thuật Tiết Lộ Cấu Trúc Firmware Phức Tạp
Cuộc điều tra đòi hỏi việc kỹ thuật ngược rộng rãi kiến trúc firmware PSP của AMD. Các nhà phát triển đã cải tiến các công cụ hiện có như amdtool và PSPTool để phân tích đúng cách các cấu trúc firmware đặc thù của Turin, phát hiện ra sự phức tạp đáng kể trong cách các bộ xử lý hiện đại khởi tạo.
Firmware PSP bao gồm nhiều cấp độ thư mục chứa hàng chục thành phần riêng lẻ. Các image BIOS của vendor thường bao gồm hơn 50 mục trong thư mục PSP của họ, so với chỉ 30-41 mục có sẵn thông qua các kênh công khai. Khoảng cách này đại diện cho mã khởi tạo quan trọng vẫn không có sẵn cho các nhà phát triển độc lập.
Memory training trên các nền tảng máy chủ AMD thêm một lớp phức tạp khác, đòi hỏi hơn 2 phút thời gian khởi tạo bất kể hiệu suất BIOS. Không giống như các hệ thống Intel có thể bỏ qua một số bước khởi tạo nhất định để có thời gian khởi động nhanh hơn, kiến trúc của AMD thực hiện memory training đầy đủ trên mỗi lần khởi động lạnh.
So sánh PSP Directory Entry:
- Vendor BIOS: PSP1 (53 entries), PSP2 (48 entries), BIOSL1 (25 entries), BIOSL2 (54 entries)
- Coreboot với public blobs: PSP1 (30 entries), PSP2 (41 entries), BIOSL1 (11 entries), BIOSL2 (19 entries)
Tác Động Đối Với Phát Triển Phần Cứng Mở
Tình huống này làm nổi bật những thách thức đang diễn ra trong việc tạo ra các giải pháp firmware thực sự mở cho phần cứng máy chủ hiện đại. Trong khi AMD đã nỗ lực hỗ trợ phát triển firmware thay thế bằng cách công bố các blob PSP, các hạn chế mật mã được tích hợp vào chính silicon tạo ra những rào cản không thể vượt qua chỉ thông qua phần mềm.
Các phát hiện cho thấy rằng firmware mở có chức năng cho các bộ xử lý Turin có thể đòi hỏi hoặc các blob công khai được cập nhật với các khóa ký chính xác từ AMD, hoặc quyền truy cập vào các thành phần gói Turin Pi bị hạn chế mà hoạt động với phần cứng sản xuất.
Tham khảo: Phân tích blob AMD PSP trên hệ thống Gigabyte MZ33-AR1 Turin