петак, 26 априла, 2024
Хардвер

Firmware и secure boot, FUD или претња? (2. део)

Аутор: Иван Булатовић

У прошлом броју смо се дотакли теме којом смо се осврнули на утицај firmware-а на кориснике Linux-а. Док нам је BIOS задавао главобољу на desktop тржишту, на тржишту сервера се још од Itanium архитектуре појавио EFI (енгл. Extensible Firmware Interface). EFI је Intel-ов firmware интерфејс којим су се одређена ограничења BIOS-а, а која нису прихватљива на серверима, решила. Осим тога, EFI је омогућио учитавање дијагностичких алата путем његове шкољке и одређених модула, подршку за мрежну конективност и др. без инсталације оперативног система. EFI се развијао до 2005. године, када се Intel прикључио UEFI форуму, и од тада UEFI налази своје место на тржишту сервера, а од скоро и на тржишту desktop PC рачунара. Када се Intel-ов Sandy Bridge појавио почетком 2011. године, велики део OEM произвођача матичних плоча је понудио своје производе са UEFI firmware интерфејсом. Маркетиншки је представљен као BIOS са уграђеним графичким корисничким интерфејсом и могућношћу задавања команди мишем, чиме је комерцијализована, уништена и злоупотребљена до тада одлична имплементација UEFI-ја на серверима. Иако је Linux још од 2000. године имао подршку за учитавање на EFI омогућеним серверима помоћу ELILO bootloader-а, на desktop рачунарима је подршка Linux дистрибуција за UEFI мало закаснила. Већина дистрибуција је користила GRUB bootloader, који је тек после одређеног времена добио квалитетну подршку за boot са UEFI-ја (GRUB 1.99 од 05.2011) те је тих неколико месеци било паклено за кориснике Linux-а. Осим тога, подршка за UEFI на преносивим и desktop рачунарима је била лоша, исправке за одређене моделе су додате тек у kernel 3.0.

Да све буде тако црно, побринули су се вишеструки извештаји од оних о немогућности инсталације Linux-а на рачунарима, па до оних о уништењу хардвера. Тачније, реч је о неколико модела Samsung-ових преносивих рачунара, када се Linux преко LiveCD-а учита на одређеним моделима. Узрок проблема је тај што је требало да одређени сегменти меморијске регије буду резервисани, а UEFI је дозволио писање по њима. Lenovo се потрудио да на свом врхунском моделу desktop рачунара омогући учитавање само оних оперативних система који у свом опису (који би могао да гласи Пера Детлић и да опет нема никаквог утицаја на boot процес) садржи кључне речи „Windows Boot Manager” или „Red Hat Enterprise Linux”. Замислите да вас после куповине desktop рачунара дочека hardcoded GRUB који дозвољава учитавање само оног оперативног система који у свом GRUB мени уносу садржи кључну реч „Arch Linux”. Овакав, назовимо га bug, врло бисмо лако заобишли променом наслова у мени уносу, али тешко је поверовати да постоји валидан разлог програмерима да направе овакав гаф, а ако им се он провукао поставља се питање на какве још „мине” можемо нагазити у свакодневном раду. Lenovo је још и промотер и један од водећих компанија у UEFI форуму и сигурно су упознати са чињеницом да такво парче UEFI кôда не подлеже спецификацији у чијој разради и сами учествују.

Оно што представља незаобилазан део спецификације, захваљујући Microsoft компанији, је secure boot протокол. Овим протоколом је значајно отежана примена bootkit софтвера, чиме је могуће заобилажење енкрипције диска и приступ заштићеним подацима. Принцип функционисања secure boot протокола се огледа у чувању једног или више сертификата у UEFI заштићеном меморијском простору који потом проверава да ли је софтвер, углавном bootloader, који се учитава, дигитално потписан од стране издавача сертификата. Microsoft Windows 8 има подршку за secure boot и сви рачунари који имају лого MS Windows 8 certified морају у UEFI-ју да садрже Microsoft сертификат. Тиме је њихова монополистичка позиција на desktop тржишту и тржишту преносивих рачунара само учвршћена. Међутим, и била је таква пре појављивања secure boot протокола, а оно што је занимљиво је да би и за Linux кориснике било паметно да купују Windows 8 сертификоване матичне плоче. Наиме, ова сертификација гарантује да је secure boot протокол могуће онеспособити у самом UEFI-ју, а сама UEFI спецификација не обавезује OEM произвођаче да ову опцију омогуће (или аутор овог текста то није нашао на 2284 стране UEFI 2.4 спецификације). Иначе UEFI спецификација је помало флексибилна јер се на неколико места, за иначе виталне променљиве везане за сигурност целог система, помиње „требало би”. Слободно преведено, secure boot променљива са „BS,RT” атрибутима дефинише да ли firmware на платформи функционише у secure boot режиму или не и да би ова променљива требалo да се третира као read-only (страна 131. UEFI спецификације). Тако да се самом UEFI спецификацијом доста простора оставља OEM произвођачима да одлуче како ће одређене сегменте спецификације имплементирати. Ако их Windows 8 сертификација једино обавезује да омогуће кориснику да искључи secure boot, онда је то и једини гарант да ће то стварно тако и бити, а пракса ће можда показати другачије. У сваком случају, пре куповине desktop или laptop рачунара, препоручљиво је проверити да ли је имплементирана опција за искључење secure boot протокола.

Зашто би Linux корисници желели да искључе secure boot? Разлога је неколико, почев од тога да сте, у супротном, приморани да користите дистрибуцију која дистрибуира bootloader који је потписан од стране Microsoft-а (Fedora, Ubuntu, Sabayon, опростићете ако постоји још нека) или у случају да учитавате custom kernel, мораћете сваку верзију да потписујете ручно, јер secure boot спречава учитавање управљачких програма који нису потписани.

Можда је касно да на крају подужег чланка дефинишемо шта је то FUD (скр. Fear, Uncertainty and Doubt), али ако овај акроним потражите на интернету, добићете одличан опис истог, а то је да се ради о тактици и стратешком покушају да се ширењем дезинформација циљаној групи корисника дозира одређена количина страха, несигурности и сумње у одређени производ или решење.

Secure boot је толико окружен разноразним FUD-ом, који, на жалост, шире највише Linux корисници између себе самих. Најчешће је то комбинација „Linux не можете инсталирати на рачунарима који долазе са преинсталираним Windows-ом 8” и „Dual boot између Linux-а и Windows-а 8 није могућ”. Чињенице су:

  • Windows 8 је могуће учитати са онемогућеним secure boot протоколом.
  • Linux дистрибуције је могуће инсталирати са омогућеним secure boot протоколом (макар одређен број њих „out of the box”).
  • Secure boot је могуће искључити (дефинитивно на Windows 8 сертификованим матичним плочама).

Чему онда страх од secure boot протокола? Веће муке су далеко иза нас, када је поступак инсталације Linux-а на UEFI рачунарима од пре две-три године представљао прави мајсторски посао због захтеваних промена у GRUB bootloader-у. Једину стварну претњу можемо видети у одлуци Microsoft компаније да спречи онемогућавање secure boot протокола на уређајима базираним на ARM архитектури, макар на онима који су Windows сертификовани. То тренутно нема неког значаја, зато што и Google и Apple закључавају своје уређаје, међутим може да носи одређену тежину када ARM заузме део desktop/laptop тржишта. ARM архитектура је одавно подржана у Linux kernel-у, софтверска подршка такође није лоша, Microsoft је ту тек закорачио, те би овом одлуком могли да осигурају своје парче колача када за то дође време. Одлуку да ли ће ARM рачунари бити Windows сертификовани, доносе OEM произвођачи, а прву прилику за њу ће вероватно добити nVIDIA, ако пројекат „Denver” заживи.

Оно што представља стварну претњу свим корисницима рачунара, без обзира који оперативни систем користили, јесте лоша имплементација firmware-а на нивоу платформе као и на нивоу појединачних компоненти. Модели рачунара, матичних плоча, графичких картица се смењују и до два-три пута годишње, квалитетна подршка за њих или не постоји од самог изласка на тржиште или траје до тренутка изласка новог модела. Трошкови се смањују, произвођачи тестирају производ за рад на само једном оперативном систему, ако и толико. UEFI није надоместио недостатке BIOS-а, већ напротив, уведене су нове, назовимо их функционалности, попут fast boot опције, где вам USB тастатура неће бити иницијализована док се оперативни систем не подигне, па нећете бити у могућности да мењате поставке у UEFI-ју или чак ни да подигнете други оперативни систем са неког измењивог уређаја при „хладном” boot-у. Међутим, ни ово није необично, BIOS/UEFI програмери су се побринули да у неким случајевима тастатура не функционише док оперативни систем не учита управљачки програм за њу, fast boot опција нам на таквим системима није ни била неопходна, тј. већ је била имплементирана кроз једну од бројних ACPI „буба”. Нико не очекује 3D акцелерацију пре учитавања оперативног система или рад комбо макроа на најновијој „gamer” тастатури, али основни графички приказ на монитору и улаз преко тастатуре би био пожељан. Ваљда се толико може очекивати од једног савременог уређаја са напредним firmware интерфејсом.

Уместо трке за представљањем апсолутно безвредних опција сервираних нам у виду иновација, произвођачи би требало да „стану на лопту”, поправе оно што је већ годинама покварено и тржишту понуде прави правцати уникат – desktop или laptop рачунар који ће бити доследно израђен по стандардима и спецификацијама, који ће имати дугорочну подршку која неће зависити од оперативног система који се користи и чија функционалност неће бити осакаћена зарад неколико секунди брже иницијализације до учитавања софтвера из MBR-а.

Корисни линкови:

[1] http://www.uefi.org/specs/download

[2] http://mjg59.livejournal.com/