Наскільки UEFI та SecureBoot можуть бути серйозними?


18

Я планую придбати новий ноутбук у найближчі дні, і мене дуже вражають нові, круті Ultrabooks. Як давній користувач GNU / Linux, я звичайно встановлю на нього дистрибутив.

Ймовірно, мені доведеться придбати комп’ютер із попередньо встановленою Windows 8; і швидше за все, він запустить UEFI і матиме "безпечне завантаження", на якому непідписані ядра не завантажуватимуться.

UEFI, ймовірно, хороший, BIOS може знадобитися звільнитися. Я здогадуюсь, волохата річ - Безпечний черевик .

Наскільки я розумію, деякі довірені сертифікати будуть вбудовані в прошивку і так в ядрі і т.д. . Якщо сертифікат ядра можна відстежити до будь-якої з прошивок , ядро ​​завантажиться, інакше UEFI скаже мені і відмовиться завантажуватись. Цей процес запобіжить завантаження несертифікованого програмного забезпечення. Це може мати переваги, хоча я їх не бачу.

Цікаво, як ядро ​​з відкритим кодом може отримати один з цих ключів і все-таки бути безкоштовним . Я прочитав нитку в списку розсилки Linux, коли співробітник Red hat просить Лінуса Торвальдса витягнути набір змін, який реалізує об'єкт для розбору бінарних файлів PE та здійснить складний набір дій, щоб ядро ​​завантажувалося в режимі захищеного завантаження (наскільки я можу зрозуміти ). Вони хочуть зробити це, оскільки Microsoft підписує лише бінарні файли PE. Містер Торвальдс люб’язно відхилив цей набір змін, заявивши, що ядро ​​вже реалізує стандарт, а це не PE . RedHat намагається підштовхнути цей код до ядра, щоб їм не потрібно було розщедритись одного дня.

Бачите, це справа складна. Дозвольте мені задати свої питання:

  • Які переваги я отримаю за допомогою домашнього користувача UEFI та Secure Boot?
  • Як це підписання ?
  • Хто може отримати підписи / довідки? Це заплачено? Чи може це бути публічним? (Він повинен бути доступний у вихідному коді Linux, чи не так?)
  • Є Microsoft єдиним органом, що надає підписи? Чи не повинен бути незалежний фонд, який би їх забезпечував?
  • Як це вплине на відкриті джерела та вільні ядра, розробники ядрів / академічних ядер тощо . Наприклад, чи буде це завантаження ( дуже базовий код сектору завантаження ):

    hang:
       jmp hang
    times 510-($-$$) db 0
    db 0x55
    db 0xAA
    

Новина на цьому веб-сайті була основою для цього питання. Іспанська група користувачів Linux під назвою Hispalinux подала скаргу на Microsoft з цього приводу на компанію Europan Comission.

Чи варто мене турбувати? Я відмовляюся використовувати ні власницьке програмне забезпечення, ні програмне забезпечення, підписане компаніями, що довіряють . Я робив це досі, і хочу продовжувати так. Заздалегідь спасибі.


2
UEFIсама по собі не є великою проблемою, але безпечне завантаження може бути.
Йорданм

3
Ви завжди можете завантажувати UEFI із захищеним завантаженням ...
jasonwryan

1
Згідно з цією статтею Microsoft вимагає від постачальників запобігання відключенню SecureBoot на пристроях на основі ARM для надання ліцензії на використання сумісного логотипу Windows-8.

1
Я не дивився, але якщо ви не можете перенести його на материнську плату і все ще працює (кожен пристрій у належному стані при передачі POST-OS), це не дуже допоможе. А тут є вбудована програма для відеокарт. Прошивка на жорсткому диску? Клавіатура? ... Однак це все ближче до обговорення, ніж прохання про роз'яснення. (І звичайно, принаймні ця цитата лише стверджує, що UEFI - це зусилля громади, а не конкретна реалізація.)
CVn

1
Перегляньте документ Linux Foundation про UEFI та захистіть його.
фонбранд

Відповіді:


9

Цей процес запобіжить завантаження несертифікованого програмного забезпечення. Це може мати переваги, хоча я їх не бачу.

У вас є новий механізм захисту, який дозволяє контролювати, що можна, а що не можна завантажувати зі свого обладнання. Особливість безпеки. Ви не відчуваєте, що вам це потрібно, поки не пізно. Але я відволікаюсь.

Я прочитав нитку в списку розсилки Linux, коли співробітник Red hat просить Лінуса Торвальдса витягнути набір змін, який реалізує об'єкт для розбору бінарних файлів PE та здійснить складний набір дій, щоб ядро ​​завантажувалося в режимі захищеного завантаження (наскільки я можу зрозуміти ).

Драйвери, як і ваша прошивка GPU, повинні бути підписані відповідно до Secure Boot, інакше це може бути ще один руткіт. Статус-кво полягає в тому, що ці драйвери підписані у форматі PE. Ядро може завантажуватися і без цього, але апаратне забезпечення не працюватиме. Розбір формату PE в ядрі - це просто технічно простіший вибір для цього, ніж просити кожного постачальника обладнання підписати свої краплі для кожного дистрибутива або створити для цього рамку користувача. Лінус вирішує не смоктати член Microsoft. Це не технічний аргумент.

Які переваги я отримаю за допомогою домашнього користувача UEFI та Secure Boot?

Найбільш помітна особливість - швидке завантаження UEFI. У мене є руки на декількох настільних логотипах Windows 8, і вони завантажуються так швидко, що я часто пропускаю спливати меню завантаження. Intel та OEM-виробники отримали досить багато техніки для цього.

Якщо ви є типом користувачів Linux, котрі ненавидіють ненажерливість та дублювання коду із захопленням, ви також можете захотіти керувати багатозавантажуваними пристроями на рівні прошивки та повністю позбутися завантажувачів. UEFI надає диспетчер завантаження, за допомогою якого ви можете завантажувати безпосередньо в ядро або вибирати для завантаження іншої ОС за допомогою меню прошивки. Хоча може знадобитися певний розмитнення.

Крім того, більш приваблива графіка під час завантаження та в меню прошивки. Краща безпека під час завантаження (Secure Boot). Інші функції (IPv4 / 6 netboot, 2TB + пристрої завантаження тощо) здебільшого призначені для корпоративних користувачів.

У будь-якому випадку, як сказав Лінус , BIOS / UEFI повинен "просто завантажити ОС і вийти звідти", а UEFI, безумовно, з'являється таким для домашніх користувачів із швидким завантаженням. Це, безумовно, робить більше речей, ніж BIOS під кришкою, але якщо ми говоримо про домашніх користувачів, їм це буде не байдуже.

Як здійснюється це підписання?

Теоретично двійковий код шифрується приватним ключем для створення підпису. Тоді підпис можна перевірити відкритим ключем, щоб довести, що двійковий файл підписується власником приватного ключа, потім двійковий підтверджений. Детальніше дивіться у Вікіпедії .

Технічно підписується тільки хеш двійкового файлу, а підпис вбудовується у двійковий файл із формою PE та додатковим подвійним форматом.

Процедуально відкритий ключ зберігається у вашій прошивці вашим OEM, і це від Microsoft. У вас є два варіанти:

  1. Створіть власну пару ключів та безпечно керуйте ними, встановіть власний відкритий ключ до вбудованого програмного забезпечення та підпишіть двійковий код своїм власним приватним ключем ( підписка від Ubuntu або pesign від Fedora) або
  2. Надішліть свій двійковий файл Microsoft і нехай він підпише його.

Хто може отримати підписи / довідки? Це заплачено? Чи може це бути публічним? (Він повинен бути доступний у вихідному коді Linux, чи не так?)

Оскільки підписи / сертифікати вбудовуються у двійкові файли, очікується, що їх отримають усі користувачі. Будь-який бажаючий може створити власну ЦА та створити сертифікат для себе. Але якщо ви хочете, щоб Microsoft створила сертифікат для вас, вам потрібно пройти Verisign, щоб перевірити свою особу. Процес коштує 99 доларів. Відкритий ключ знаходиться в прошивці. Приватний ключ знаходиться в безпеці Microsoft. Сертифікат знаходиться у підписаному двійковій справі. Немає вихідного коду.

Є Microsoft єдиним органом, що надає підписи? Чи не повинен бути незалежний фонд, який би їх забезпечував?

Технічна сторона є досить тривіальною, порівняно з процесом управління PKI, перевірки ідентичності, координації з кожним відомим постачальником OEM та обладнання. Це коштує дорого. Майкрософт має інфраструктуру (WHQL) та досвід для цього протягом багатьох років. Тому вони пропонують підписати бінарні файли. Будь-яка незалежна фундація може запропонувати одне і те ж, але ще ніхто цього не зробив.

З сесії UEFI на IDF 2013, я бачу, що компанія Canonical також почала вводити свій ключ до деяких програмних засобів планшетного ПК. Тож Canonical може підписувати власні бінарні файли, не проходячи через Microsoft. Але вони навряд чи підпишуть бінарні файли для вас, оскільки вони не знають, хто ви.

Як це вплине на відкриті джерела та вільні ядра, розробників ядрів / академічних ядер тощо.

Ваше вбудоване ядро ​​не завантажиться під захищеним завантаженням, оскільки воно не підписане. Ви можете вимкнути його.

Модель довіри Secure Boot блокує деякі аспекти ядра. Наче ви не можете знищити своє ядро, написавши в / dev / kmem, навіть якщо ви зараз root. Ви не можете перезимувати на диск (працюючи вище за течією), оскільки немає можливості переконати, що зображення ядра не буде змінено на завантажувальний код під час відновлення. Ви не можете скинути ядро, коли ваше ядро ​​панікує, тому що механізм kdump (kexec) може використовуватися для завантаження завантажувального коду (також працює над потоком). Вони суперечливі і не приймаються Лінусом до основного ядра, однак деякі дистрибутиви (Fedora, RHEL, Ubuntu, openSUSE, SUSE) все одно поставляються із власними патчами Secure Boot.

Особисто підписання модуля, необхідне для створення ядра Secure Boot, коштує 10 хвилин, а фактична компіляція займає лише 5 хвилин. Якщо я вимкну підпис модуля і ввімкнув кеш-пам'ять, на створення ядра потрібно лише одна хвилина.

UEFI - це зовсім інший завантажувальний шлях від BIOS. Прошивки UEFI не завантажуватимуть усі завантажувальні коди BIOS.

Іспанська група користувачів Linux під назвою Hispalinux подала скаргу на Microsoft з цього приводу на компанію Europan Comission.

Як було сказано вище, ніхто, окрім Microsoft, не почав займатися державною службою. Наразі немає жодних доказів наміру Microsoft робити якесь зло з цим, але також нічого не заважає Microsoft зловживати своєю фактичною монополією та відправлятися у владу. Тож, хоча групи користувачів FSF та Linux можуть не виглядати досить прагматично і насправді не сідати, щоб конструктивно вирішити проблеми, цілком потрібно, що люди чинять тиск на Microsoft і попереджають його про наслідки.

Чи варто мене турбувати? Я не відмовляюся від використання ні власного програмного забезпечення, ні програмного забезпечення, підписаного надійними компаніями. Я робив це досі, і хочу продовжувати так.

Причини прийняття безпечного завантаження:

  • Це виключає реальний вектор атаки безпеки.
  • Це технічний механізм, який дає користувачеві більше свободи контролювати своє обладнання.
  • Користувачі Linux повинні зрозуміти безпечний механізм завантаження і діяти проактивно , перш ніж Microsoft стає занадто далеко від монополії безпечного завантаження політики .

2
Дякую за цю детальну, приголомшливу відповідь! Дуже всебічно. UEFI звучить досить круто, хоча я ні для цього не використовував, ні писав код.

1
Дуже гарна відповідь, дійсно. Лише дві речі: 1) зазвичай є можливість завантажити власні ключі у свій UEFI - таким чином ви можете надійно завантажувати все, що підписуєте самі; 2) Безпечне завантаження є безпечним лише до того, до якого можна довіритися UEFI - якщо використовується зловмисне оновлення програмного забезпечення, ланцюжок довіри буде порушений. І це немислимо .
петерф

Отже, чи використовує дистрибутив GNU / Linux FastBoot / QuickBoot? Я не бачу, чому це було б важко зробити, але ні я не можу знайти інформацію про це - але оскільки ви згадуєте про це як видиму функцію для кінцевого користувача, я думаю, що вона остаточно використовується?
Привіт-Ангел

9

Я щойно пережив це через нещодавню покупку ноутбука, що постачалася разом із Windows 8 та безпечним завантаженням UEFI. Після багато часу та досліджень, ось що я можу відповісти:

  • Не здається, що ви входите в категорію "домашній користувач".

Переваги UEFI, які пересічний користувач помітить, це те, що першим, що вони побачать на своєму екрані, буде дисплей завантажувача UEFI фірми Microsoft / Vendor. Жодна з таких страшних речей, як "Натисніть Del для установки, F11, щоб вибрати завантажувальний пристрій" тощо.

Потім він буде добре переходити на екран очікування ядра / завантажувача Microsoft. Це дає «можливість підказувати» тематичний досвід Microsoft. Якщо це фактична користь, то в очах того, хто дивиться. Мене досить позначено, що у мене не було нормальної інформації, яку я очікую побачити під час завантаження. Наприклад, удачі, якщо ваш постачальник не використовує стандартний ключ для входу в базовий параметр UEFI / Bios.

О, так, і теорія полягає в тому, що це зупинить завантаження вірусних секторів або, принаймні, змусить творців створити / викрасти хтось ідентифікатор і заплатити 99 доларів Verisign (маршрут RedHat Fedora. Google it.)

Ах, і там є руб. Кожен може підписати код будь-яким ключем. Проблема полягає в тому, що машина запускатиме лише код, який підписується ключем довірених авторитетів. Загальнодоступна половина ключа встановлюється в системному ядрі UEFI на заводі і використовується для перевірки підпису програм UEFI (код завантаження), підписаних приватним ключем.

Здогадайтесь, хто відкритий ключ встановлений на заводі? Здогадайтесь, хто вимагає, щоб захищене завантаження було включено за замовчуванням?

Кожен виробник системи, очевидно, вкладе ключ Microsoft. Вони також можуть ввести ключ Canonical (Ubuntu), ключ Red Hat, ключ Apple, і т.д.

  • Ваш код завантажувального сектора? Ні. Це перенесення BIOS. Якщо ви хочете експериментувати з написанням коду UEFI, перегляньте http://x86asm.net/articles/uefi-programming-first-steps/

І яке рішення для повсталого користувача комп'ютера, як ви?

  • Сподіваємось, ваш постачальник систем дозволяє отримати доступ до конфігурації завантаження системи

  • Сподіваємось, вони дозволять вам вимкнути безпечне завантаження. Код завантаження Windows як і раніше буде працювати без безпечного завантаження.

  • Якщо вам справді пощастило, постачальник системи дозволить вам вставити власні ключі авторизації сертифікатів, і ви можете підписати власні речі. Це дійсно потрібно лише в тому випадку, якщо ви хочете пограти з Secure Boot.

Мій ноутбук MSI дозволяє мені робити все вищезазначене.

Я хотів би побачити світ, де кожен може забрати безкоштовну копію Linux Distro та замінити свою ОС. Це те, що ми мали перед безпечним завантаженням. У нас також було багато вірусів завантажувального сектора. Наявність відключення безпечного завантаження в конфігурації системи, ймовірно, є досить невеликим перешкодою, щоб перевірити, чи є у вас мозок для встановлення ОС, чи ви знаєте когось, хто це робить.

Не мати можливості вимкнути це - це погано, і це залежить від Виробника. Не звинувачуйте Microsoft, якщо вони не переконують виробника у запобіганні відключення безпечного завантаження.


Ласкаво просимо і дякую! Дуже класна відповідь, але я зачекаю ще трохи, перш ніж приймати, як я хочу бачити думки інших людей.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.