utorak, 23 aprila, 2024
Hardver

Firmware i secure boot, FUD ili pretnja? (2. deo)

Autor: Ivan Bulatović

U prošlom broju smo se dotakli teme kojom smo se osvrnuli na uticaj firmware-a na korisnike Linux-a. Dok nam je BIOS zadavao glavobolju na desktop tržištu, na tržištu servera se još od Itanium arhitekture pojavio EFI (engl. Extensible Firmware Interface). EFI je Intel-ov firmware interfejs kojim su se određena ograničenja BIOS-a, a koja nisu prihvatljiva na serverima, rešila. Osim toga, EFI je omogućio učitavanje dijagnostičkih alata putem njegove školjke i određenih modula, podršku za mrežnu konektivnost i dr. bez instalacije operativnog sistema. EFI se razvijao do 2005. godine, kada se Intel priključio UEFI forumu, i od tada UEFI nalazi svoje mesto na tržištu servera, a od skoro i na tržištu desktop PC računara. Kada se Intel-ov Sandy Bridge pojavio početkom 2011. godine, veliki deo OEM proizvođača matičnih ploča je ponudio svoje proizvode sa UEFI firmware interfejsom. Marketinški je predstavljen kao BIOS sa ugrađenim grafičkim korisničkim interfejsom i mogućnošću zadavanja komandi mišem, čime je komercijalizovana, uništena i zloupotrebljena do tada odlična implementacija UEFI-ja na serverima. Iako je Linux još od 2000. godine imao podršku za učitavanje na EFI omogućenim serverima pomoću ELILO bootloader-a, na desktop računarima je podrška Linux distribucija za UEFI malo zakasnila. Većina distribucija je koristila GRUB bootloader, koji je tek posle određenog vremena dobio kvalitetnu podršku za boot sa UEFI-ja (GRUB 1.99 od 05.2011) te je tih nekoliko meseci bilo pakleno za korisnike Linux-a. Osim toga, podrška za UEFI na prenosivim i desktop računarima je bila loša, ispravke za određene modele su dodate tek u kernel 3.0.

Da sve bude tako crno, pobrinuli su se višestruki izveštaji od onih o nemogućnosti instalacije Linux-a na računarima, pa do onih o uništenju hardvera. Tačnije, reč je o nekoliko modela Samsung-ovih prenosivih računara, kada se Linux preko LiveCD-a učita na određenim modelima. Uzrok problema je taj što je trebalo da određeni segmenti memorijske regije budu rezervisani, a UEFI je dozvolio pisanje po njima. Lenovo se potrudio da na svom vrhunskom modelu desktop računara omogući učitavanje samo onih operativnih sistema koji u svom opisu (koji bi mogao da glasi Pera Detlić i da opet nema nikakvog uticaja na boot proces) sadrži ključne reči „Windows Boot Manager” ili „Red Hat Enterprise Linux”. Zamislite da vas posle kupovine desktop računara dočeka hardcoded GRUB koji dozvoljava učitavanje samo onog operativnog sistema koji u svom GRUB meni unosu sadrži ključnu reč „Arch Linux”. Ovakav, nazovimo ga bug, vrlo bismo lako zaobišli promenom naslova u meni unosu, ali teško je poverovati da postoji validan razlog programerima da naprave ovakav gaf, a ako im se on provukao postavlja se pitanje na kakve još „mine” možemo nagaziti u svakodnevnom radu. Lenovo je još i promoter i jedan od vodećih kompanija u UEFI forumu i sigurno su upoznati sa činjenicom da takvo parče UEFI kôda ne podleže specifikaciji u čijoj razradi i sami učestvuju.

Ono što predstavlja nezaobilazan deo specifikacije, zahvaljujući Microsoft kompaniji, je secure boot protokol. Ovim protokolom je značajno otežana primena bootkit softvera, čime je moguće zaobilaženje enkripcije diska i pristup zaštićenim podacima. Princip funkcionisanja secure boot protokola se ogleda u čuvanju jednog ili više sertifikata u UEFI zaštićenom memorijskom prostoru koji potom proverava da li je softver, uglavnom bootloader, koji se učitava, digitalno potpisan od strane izdavača sertifikata. Microsoft Windows 8 ima podršku za secure boot i svi računari koji imaju logo MS Windows 8 certified moraju u UEFI-ju da sadrže Microsoft sertifikat. Time je njihova monopolistička pozicija na desktop tržištu i tržištu prenosivih računara samo učvršćena. Međutim, i bila je takva pre pojavljivanja secure boot protokola, a ono što je zanimljivo je da bi i za Linux korisnike bilo pametno da kupuju Windows 8 sertifikovane matične ploče. Naime, ova sertifikacija garantuje da je secure boot protokol moguće onesposobiti u samom UEFI-ju, a sama UEFI specifikacija ne obavezuje OEM proizvođače da ovu opciju omoguće (ili autor ovog teksta to nije našao na 2284 strane UEFI 2.4 specifikacije). Inače UEFI specifikacija je pomalo fleksibilna jer se na nekoliko mesta, za inače vitalne promenljive vezane za sigurnost celog sistema, pominje „trebalo bi”. Slobodno prevedeno, secure boot promenljiva sa „BS,RT” atributima definiše da li firmware na platformi funkcioniše u secure boot režimu ili ne i da bi ova promenljiva trebalo da se tretira kao read-only (strana 131. UEFI specifikacije). Tako da se samom UEFI specifikacijom dosta prostora ostavlja OEM proizvođačima da odluče kako će određene segmente specifikacije implementirati. Ako ih Windows 8 sertifikacija jedino obavezuje da omoguće korisniku da isključi secure boot, onda je to i jedini garant da će to stvarno tako i biti, a praksa će možda pokazati drugačije. U svakom slučaju, pre kupovine desktop ili laptop računara, preporučljivo je proveriti da li je implementirana opcija za isključenje secure boot protokola.

Zašto bi Linux korisnici želeli da isključe secure boot? Razloga je nekoliko, počev od toga da ste, u suprotnom, primorani da koristite distribuciju koja distribuira bootloader koji je potpisan od strane Microsoft-a (Fedora, Ubuntu, Sabayon, oprostićete ako postoji još neka) ili u slučaju da učitavate custom kernel, moraćete svaku verziju da potpisujete ručno, jer secure boot sprečava učitavanje upravljačkih programa koji nisu potpisani.

Možda je kasno da na kraju podužeg članka definišemo šta je to FUD (skr. Fear, Uncertainty and Doubt), ali ako ovaj akronim potražite na internetu, dobićete odličan opis istog, a to je da se radi o taktici i strateškom pokušaju da se širenjem dezinformacija ciljanoj grupi korisnika dozira određena količina straha, nesigurnosti i sumnje u određeni proizvod ili rešenje.

Secure boot je toliko okružen raznoraznim FUD-om, koji, na žalost, šire najviše Linux korisnici između sebe samih. Najčešće je to kombinacija „Linux ne možete instalirati na računarima koji dolaze sa preinstaliranim Windows-om 8” i „Dual boot između Linux-a i Windows-a 8 nije moguć”. Činjenice su:

  • Windows 8 je moguće učitati sa onemogućenim secure boot protokolom.
  • Linux distribucije je moguće instalirati sa omogućenim secure boot protokolom (makar određen broj njih „out of the box”).
  • Secure boot je moguće isključiti (definitivno na Windows 8 sertifikovanim matičnim pločama).

Čemu onda strah od secure boot protokola? Veće muke su daleko iza nas, kada je postupak instalacije Linux-a na UEFI računarima od pre dve-tri godine predstavljao pravi majstorski posao zbog zahtevanih promena u GRUB bootloader-u. Jedinu stvarnu pretnju možemo videti u odluci Microsoft kompanije da spreči onemogućavanje secure boot protokola na uređajima baziranim na ARM arhitekturi, makar na onima koji su Windows sertifikovani. To trenutno nema nekog značaja, zato što i Google i Apple zaključavaju svoje uređaje, međutim može da nosi određenu težinu kada ARM zauzme deo desktop/laptop tržišta. ARM arhitektura je odavno podržana u Linux kernel-u, softverska podrška takođe nije loša, Microsoft je tu tek zakoračio, te bi ovom odlukom mogli da osiguraju svoje parče kolača kada za to dođe vreme. Odluku da li će ARM računari biti Windows sertifikovani, donose OEM proizvođači, a prvu priliku za nju će verovatno dobiti nVIDIA, ako projekat „Denver” zaživi.

Ono što predstavlja stvarnu pretnju svim korisnicima računara, bez obzira koji operativni sistem koristili, jeste loša implementacija firmware-a na nivou platforme kao i na nivou pojedinačnih komponenti. Modeli računara, matičnih ploča, grafičkih kartica se smenjuju i do dva-tri puta godišnje, kvalitetna podrška za njih ili ne postoji od samog izlaska na tržište ili traje do trenutka izlaska novog modela. Troškovi se smanjuju, proizvođači testiraju proizvod za rad na samo jednom operativnom sistemu, ako i toliko. UEFI nije nadomestio nedostatke BIOS-a, već naprotiv, uvedene su nove, nazovimo ih funkcionalnosti, poput fast boot opcije, gde vam USB tastatura neće biti inicijalizovana dok se operativni sistem ne podigne, pa nećete biti u mogućnosti da menjate postavke u UEFI-ju ili čak ni da podignete drugi operativni sistem sa nekog izmenjivog uređaja pri „hladnom” boot-u. Međutim, ni ovo nije neobično, BIOS/UEFI programeri su se pobrinuli da u nekim slučajevima tastatura ne funkcioniše dok operativni sistem ne učita upravljački program za nju, fast boot opcija nam na takvim sistemima nije ni bila neophodna, tj. već je bila implementirana kroz jednu od brojnih ACPI „buba”. Niko ne očekuje 3D akceleraciju pre učitavanja operativnog sistema ili rad kombo makroa na najnovijoj „gamer” tastaturi, ali osnovni grafički prikaz na monitoru i ulaz preko tastature bi bio poželjan. Valjda se toliko može očekivati od jednog savremenog uređaja sa naprednim firmware interfejsom.

Umesto trke za predstavljanjem apsolutno bezvrednih opcija serviranih nam u vidu inovacija, proizvođači bi trebalo da „stanu na loptu”, poprave ono što je već godinama pokvareno i tržištu ponude pravi pravcati unikat – desktop ili laptop računar koji će biti dosledno izrađen po standardima i specifikacijama, koji će imati dugoročnu podršku koja neće zavisiti od operativnog sistema koji se koristi i čija funkcionalnost neće biti osakaćena zarad nekoliko sekundi brže inicijalizacije do učitavanja softvera iz MBR-a.

Korisni linkovi:

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

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