Chúng là bản dịch của hai bài đăng mà James Bottomley đã thực hiện trên blog của mình. Bài đăng đầu tiên được thực hiện vào ngày 1 tháng 2013 và có tên là "LCAXNUMX và Tái cấu trúc Khởi động An toàn"
Tôi đã im lặng một thời gian, vì vậy đã đến lúc cập nhật những diễn biến mới nhất về Trình tải khởi động an toàn (Secure Boot Loader) của Linux Foundation (đặc biệt là sau khi nó được trình bày tại LCA2013). ( Liên kết đến các slide )
Vấn đề cốt lõi là GregKH (Greg Kroah-Hartman, một nhà phát triển nhân Linux) đã phát hiện ra vào đầu tháng 12 rằng Pre-BootLoader được đề xuất sẽ không hoạt động ở dạng hiện tại với Gummiboot. Điều này thật đáng thất vọng vì nó có nghĩa là nó không đáp ứng được sứ mệnh của Linux Foundation là hỗ trợ tất cả các bootloader. Lý do, sau khi điều tra, rất đơn giản: Gummiboot được tạo ra để chứng minh rằng bạn có thể tạo ra một bootloader nhỏ, đơn giản tận dụng tất cả các dịch vụ có sẵn trên nền tảng UEFI thay vì là một link loader khổng lồ như GRUB. Thật không may, điều này có nghĩa là nó khởi động nhân bằng cách sử dụng hàm BootServices->LoadImage(), có nghĩa là nhân cần khởi động phải trải qua các kiểm tra khởi động an toàn trên nền tảng UEFI. Ban đầu, Pre-BootLoader, giống như shim (bootloader của Mathew Garrett), được viết để sử dụng link loader PE/Coff nhằm bỏ qua các kiểm tra khởi động an toàn. Đáng tiếc là, điều này có nghĩa là bất cứ thứ gì được thực thi bởi Pre-BootLoader cũng phải sử dụng phương thức tải liên kết để vượt qua các kiểm tra khởi động an toàn đối với bất cứ thứ gì nó muốn tải, và do đó Gummiboot, vốn không phải là trình tải liên kết, sẽ không hoạt động theo phương thức này.
Vì vậy, tôi đã phải cơ cấu lại và viết lại: Vấn đề bây giờ đi từ "cách tạo trình tải liên kết do Microsoft ký tuân theo chính sách của họ" đến "làm thế nào để kích hoạt tất cả các phần tử con của trình tải khởi động để sử dụng chức năng BootServices-> LoadImage () của cách để tuân theo chính sách của họ. ' May mắn thay, có một cách để chặn cơ sở hạ tầng ký kết nền tảng UEFI bằng cách cài đặt giao thức bảo mật kiến trúc của riêng bạn. Thật không may, đặc điểm kỹ thuật khởi tạo nền tảng không thực sự là một phần của đặc điểm kỹ thuật UEFI, nhưng rất may, nó được thực hiện bởi mọi hệ thống Windows 8 mà bạn có thể tìm thấy. Kiến trúc mới chặn giao thức đó và thêm kiểm tra bảo mật của riêng nó. Tuy nhiên, có một vấn đề thứ hai: Trong khi chúng ta đang sử dụng lệnh gọi lại giao thức bảo mật kiến trúc, chúng ta không nhất thiết phải sở hữu màn hình hệ thống UEFI, khiến cho việc kiểm tra người dùng hoàn toàn không thể cho phép thực thi nhị phân. May mắn thay, có một cách không tương tác để làm điều này và đó là cơ chế SUSE Machine Owner Key (MOK). Do đó, Linux Foundation Pre-BootLoader hiện đã phát triển để sử dụng các biến MOK tiêu chuẩn để lưu trữ các hàm băm nhị phân được ủy quyền.
Kết quả của tất cả những điều này là bây giờ bạn có thể sử dụng Pre-BootLoader với Gummiboot (giống như nó đã được thực hiện trong bản demo tại LCA2013). Để khởi động, bạn phải thêm 2 hàm băm: một cho chính Gummiboot và một cho hạt nhân mà bạn muốn khởi động, nhưng đó thực sự là một điều tốt vì bây giờ bạn có một chính sách bảo mật duy nhất kiểm soát toàn bộ trình tự khởi động. Bản thân Gummiboot cũng đã được vá để nhận ra sự cố do khởi động an toàn và hiển thị thông báo cho bạn biết mã băm nào cần đăng ký.
Tôi sẽ làm một bài riêng giải thích cách thức hoạt động của kiến trúc mới, nhưng tôi nghĩ sẽ tốt hơn nếu giải thích những gì đã xảy ra vào tháng trước.
Và bài đăng thứ hai này anh ấy đã thực hiện ngày hôm qua và có tên là "Khởi chạy Hệ thống Khởi động An toàn Nền tảng Linux"
Như đã hứa, đây là Hệ thống Khởi động An toàn Nền tảng Linux. Nó thực sự đã được Microsoft phát hành cho chúng tôi vào ngày 6 tháng XNUMX, nhưng với những chuyến du lịch, hội nghị và cuộc họp, tôi không có thời gian để xác thực mọi thứ cho đến hôm nay. Các tệp là:
Trình tải trước.efi (md5sum 4f7a4f566781869d252a09dc84923a82)
HashTool.efi (md5sum 45639d23aa5f2a394b03a65fc732acf2)
Đồng thời tạo một hình ảnh USB mini có thể khởi động; (Bạn phải cài đặt nó trên USB bằng dd; ảnh có phân vùng GPT nên nó sử dụng toàn bộ đĩa). Nó có một trình bao EFI nơi nên chứa hạt nhân và sử dụng gummiboot để tải nó. bạn có thể tìm thấy nó ở đây (md5sum 7971231d133e41dd667a184c255b599f).Để sử dụng hình ảnh USB mini, bạn phải nhập mã băm cho loader.efi (trong thư mục \ EFI \ BOOT) và shell.efi (trong thư mục gốc). Nó cũng bao gồm một bản sao của KeyTool.efi mà bạn phải nhập mã băm để chạy.
Điều gì đã xảy ra với KeyTool.efi? Ban đầu nó sẽ là một phần của bộ tài liệu đã ký của chúng tôi. Tuy nhiên, trong quá trình thử nghiệm, Microsoft đã phát hiện ra rằng do lỗi ở một trong các nền tảng UEFI, nó có thể được sử dụng để xóa khóa theo chương trình khỏi nền tảng, điều này sẽ làm hỏng hệ thống bảo mật UEFI. Cho đến khi chúng tôi có thể giải quyết vấn đề này (chúng tôi có nhà cung cấp tư nhân trong vòng lặp), họ đã từ chối ký KeyTool.efi mặc dù bạn có thể cho phép nó bằng cách thêm các biến MOK nếu bạn muốn chạy nó.
Hãy cho tôi biết điều này diễn ra như thế nào vì tôi muốn thu thập phản hồi về những gì hiệu quả và những gì không. Đặc biệt, tôi lo ngại rằng tính năng ghi đè giao thức bảo mật sẽ không hoạt động trên một số nền tảng, vì vậy tôi đặc biệt muốn biết liệu nó có không hoạt động với chúng hay không.
Nguồn:
http://blog.hansenpartnership.com/lca2013-and-rearchitecting-secure-boot/
http://blog.hansenpartnership.com/linux-foundation-secure-boot-system-released/
Quyết định xem đó là tin tốt hay xấu.