Никто в Linux-сообществе не рад тому, как компания Microsoft реализовала механизм проверки цифровой подписи кода Unified Extensible Firmware Interface (UEFI) Secure Boot в сертифицированных компьютерах под Windows 8. Однако, разработчикам приходится как-то решать эту проблему, чтобы пользователи имели возможность поставить на такие компьютеры дистрибутив Linux. Каким образом это лучше всего сделать — этот вопрос вызывает бурные дискуссии. Наконец-то своё мнение по этому поводу чётко высказал и Линус Торвальдс.
Всё началось несколько дней назад, когда разработчик Red Hat прислал патч, который динамически внедряет в ядро Linux при загрузке в Secure Boot бинарные ключи с подписью Microsoft. Конкретно, речь идёт о бинарниках EFI PE [Extensible Firmware Interface Portable Executable], заверенных цифровой подписью Microsoft, внутри которых помещается сертификат X.509. Торвальдс сказал, что такой способ включения сертификата X.509 в ядро неприемлем. Он ответил в своём стиле, используя нецензурную лексику. Причина его реакции понятна: в ядре Linux есть поддержка X.509, зачем же производителям оборудования дополнительный «посредник» в виде бинарника Microsoft для срабатывания схемы UEFI Secure Boot.
Линус Торвальдс сказал буквально следующее: «Если Red Hat хочет отсо#ать у Microsoft, то это *ваша* проблема. Это никогда не случится с ядром, которое я поддерживаю. Вам, ребята, кажется нормальным иметь дело с машиной для подписи, которая парсит PE бинарники, проверяет подпись и подписывает результат своим собственным ключом. Вы уже написали такой код, мать вашу, и прислали его для включения в ядро.
Почему *меня* это должно волновать? Почему ядро должно заботиться о чьей-то глупости «мы подписываем только бинарники PE»? Мы поддерживаем X.509, что является стандартом для подписи.
Делайте это на уровне пользователя на доверенной машине. Нет никаких оправданий для того, чтобы делать это в ядре».
Позже Линус Торвальдс подтвердил свой бескомпромиссный подход. В отдельном письме к разработчикам он призвал их перестать бояться и сформулировал несколько принципов.
- Дистрибутив должен подписывать только свои собственные модули и ничего больше. Цифровой подписи Microsoft тут не место.
- Перед загрузкой стороннего модуля нужно спросить разрешения у пользователя, через текстовую консоль.
- Можно использовать случайно сгенерированные ключи с полным отключением проверки UEFI, по возможности. Даже случайно сгенерированные ключи надёжнее, чем «центр доверия» в одной-единственной компании, которая выдаёт ключи каждому, у кого есть кредитная карта.
- Поощрять пользователей к генерации своих собственных одноразовых случайных ключей.
По мнению Торвальдса, вся система UEFI Secure Boot создана скорее для контроля, чем для безопасности.