Za enim bolj nenavadnih naslovov se skriva resnični problem, ki bo nastopil prihodnje leto, priprave pa zahteva že letos. Paradoksalno Microsoft svetuje, naj ukrepamo takoj, obenem pa ta hip kaj dosti storiti ne moremo. Vseeno velja pogledati pod pokrov oziroma v matično ploščo.
Eden najbolj kritičnih trenutkov za varnost naših računalnikov se zgodi pogosteje, kot si predstavljamo. Najboljša priložnost, da se namesto legitimnega operacijskega sistema z vsemi znanimi programi naloži kakšna nemarnost, ki bi s tem pridobila popoln dostop do vseh virov v sistemu, je – vsak zagon računalnika.
Dolgo je bil koncept virusa, ki bi se zapisal v BIOS ali firmware zgolj teoretična grožnja, ki je ni bilo treba zares odvračati. Iz zelo starih časov, še pred razmahom Windows, se spominjamo celo virusov, ki so ždeli izključno v pomnilniku in jih je odstranil že ponovni zagon. Običajnejši so bili seveda takšni, ki so se zapisali na disk. Ko so si utrli pot do administratorskih privilegijev, so se zapisali na sorazmerno odporna mesta, recimo kar na zagonski sektor na disku. Formatiranje diska je bil tedaj učinkovit način za dezinfekcijo. Kasneje, po letu 2000, so se razpasli bootkiti in rootkiti, ki so se aktivirali že pred zagonom operacijskega sistema.
Nato pa so leta 2011 »v divjini« opazili virus Mebromi, ki se je zapisal v Awardov BIOS. Postalo je jasno, da nevarnost ni le teoretična, z naraščajočo pomembnostjo računalnikov v modernem svetu, kjer krmilijo vse od jedrskih centrifug do bančnih sistemov, pa se je pojavila potreba po zaščiti.
V tem smislu je zagonski cikel v računalnikih prehodil najbolj običajno pot, kot so jo praktično vse komponente. Elektronska pošta je bila nekoč podobna razglednicam, danes jo lahko šifriramo. Spletne strani smo nekoč obiskovali po povezavah, ki so bile vidne vsem strežnikom na poti, danes imamo vsi dostop prek https, kdor želi, pa celo večkrat šifrirani Tor. DNS je včasih deloval na zaupanje, danes se uvaja DNSSEC. Na diskih so bili podatki včasih zapisani v berljivi obliki, danes jih BitLocker šifrira. Ni presenetljivo, da želimo zaščititi tudi zagon računalnika. Zaščita že dolgo ne temelji več na skrivalnicah, temveč matematiki.
Leta 1975 je Gary Kildall skoval kratico, ki jo uporabljamo še danes. Del svojega operacijskega sistema CP/M, ki se naloži pred sistemom in je odvisen od strojne opreme, s katero neposredno komunicira in jo ob zagonu preveri, je poimenoval Basic Input/Output System ali BIOS. Koncept se je obdržal, ime pa tudi, celo ko se je koncept že zdavnaj spremenil.
Njegova naloga je omogočiti začetek zagona, ki je nekakšen kavelj 22. Da se operacijski sistem lahko zažene, mora imeti dostop do strojne opreme, za kar potrebuje – operacijski sistem. Zagon se zato izvaja stopenjsko, ko si čedalje večji kosi kode predajajo nadzor.
Sistem najprej izvede samodiagnostiko oziroma POST (power on self test), v katerem preveri procesor, pomnilnik, grafično kartico, diske, tipkovnico, miško in drugo strojno opremo, ki jo potrebuje za uspešen zagon. Nato poišče zagonsko napravo (disk, USB-ključek, disketo, optični pogon …) in zagonski nalagalnik (bootloader), ki mu preda nadzor. Ta poskrbi za zagon operacijskega sistema, ki mu pripada. V praksi je podrobnosti še nekaj, ki jih bomo pogledali kasneje.
BIOS je leta 2006 dobil več kot dostojnega naslednika z imenom UEFI, ki je nazaj združljiv z BIOS-om, če bi to potrebovali, a v vseh pogledih naprednejši. Formalno je odprt standard, medtem ko je bil IBM-ov BIOS de facto standard. UEFI omogoča hitrejši zagon, podpira več strojne opreme, ima več funkcionalnosti, preglednejši (celo grafični) vmesnik s podporo za miško. Za to zgodbo pa je pomembna podrobnost, da UEFI podpira šifriranje in varnost, k čemur se bomo še vrnili. Z vidika zagona UEFI ne išče več zagonskega sektorja na disku z aktivno particijo (active partition), temveč je zaganjalnik (boot manager) del specifikacije UEFI. Ta zna prepoznati zagonske nalagalnike na različnih medijih, kar poenostavi zagon, na primer s ključka USB. In četudi imajo že desetletje vsi novi računalniki UEFI, se pogovorno še vedno pogosto uporablja izraz BIOS, celo proizvajalci na spletnih straneh posodobitve firmware ponujajo v razdelku BIOS.
BIOS in zgodnje implementacije UEFI so implicitno zaupali vsej kodi, zato so brezpogojno izvedli, kar jim je bilo predstavljeno kot zagonski nalagalnik. To je – kot vemo v retrospektivi – zelo slaba ideja. Leta 2012 je zato standard UEFI 2.3.1 Errata C ponudil Secure Boot, ki preprečuje nalaganje nepreverjene programske opreme. V računalniškem svetu se zaupanje preverja z digitalnimi podpisi in tako deluje tudi Secure Boot. Ta ob zagonu preveri, da so vse komponente digitalno podpisane, sicer njihovega izvajanja ne dovoli. Podpisani morajo biti vsi deli, od seznama zaupanja vrednih certifikatov pa vse do jedra operacijskega sistema (ni pa podpisan ves operacijski sistem).
Istega leta je Microsoft storil odločilni korak pri popularizaciji Secure Boota, saj je od proizvajalcev oziroma sestavljavcev računalnikov (OEM) zahteval, da mora biti Secure Boot omogočen, če jih želijo prodajati s prednameščenim Windows 8. Na tem mestu se moremo vprašati, kdo začenja verigo zaupanja certifikatov, s katerimi so podpisane zagonske komponente. Načelno bi to lahko storil vsak sam, a samopodpisani certifikati so varnostna tveganja. Namesto tega je podpisovanje prevzel Microsoft, kar je sprva močno prestrašilo odprtokodno skupnost. Zlobni Microsoft bi lahko elegantno preprečil namestitev drugih operacijskih sistemov, denimo Linuxa.
A to se ni zgodilo, ker je Microsoft zahteval, da računalniki na arhitekturi x86-64 omogočajo izklop Secure Boota in pa ročno dodajanje zaupanja vrednih ključev. Prav tako lahko tudi odprtokodna skupnost podpisuje svoje zagonske nalagalnike z Microsoftovimi ključi. V partnerstvu z Verisignom so proti plačilu skromnega nadomestila (tedaj 100 dolarjev) omogočili podpis neomejenega števila datotek. Microsoft ima danes celo certifikat, ki je izrecno namenjen podpisovanju zagonskih komponent drugih operacijskih sistemov.
Poglejmo podrobneje, kaj se zgodi ob vklopu računalnika. Najprej se izvede prvi kos kode, ki se imenuje CRTM (Core Root of Trust Measurement), ki je a priori zaupanja vreden. Ta preveri podpis zagonskega nalagalnika za UEFI in mu preda nadzor. Zadnji preveri podpis celotnega UEFI (torej njegove slike v firmwaru) in ga nato zažene. Firmware za UEFI preveri podpise osnovnih gonilnikov v UEFI in osnovnih aplikacij v UEFI, nato pa preveri podpis zagonskega Windows Boot Managerja (bootmgfw.efi). Ta nato prebere podatke o zagonski konfiguraciji (Boot Configuration Data) na sistemski particiji, kar mu omogoči najti dejanski zagonski nalagalnik operacijskega sistema (winload.efi). Ta nato pokliče še winload.exe, ki naloži jedro operacijskega sistema, s čimer se konča varni del Secure Boota.
Če katerakoli izmed vpletenih komponent ni digitalno podpisana (oziroma njene zgoščene vrednosti SHA256 ni v zbirki dovoljenih), se bo zagon ustavil. Za preverjanje pristnosti potrebujemo še verigo zaupanja, ki se mora nekje začeti. Ta začetek je ključ platforme oziroma PK (platform key), ki je na računalniku en sam, ustvari pa ga proizvajalec. Ta ključ ustvari zaupanje med lastnikom platforme in firmwarom, ki ga je proizvajalec zapisal v trajni pomnilnik.
Naslednji v verigi je KEK (Key Exchange Key), ki vzpostavlja zaupanje med firmwarom in operacijskim sistemom. Vsak operacijski sistem v firmware shrani svoj javni ključ KEK. Z njim so podpisane zbirke dovoljenih podpisov (DB), preklicanih podpisov (DBX) in v nekaterih implementacijah še zbirka za časovno žigosanje (DBT).
Vsi ključi so shranjeni v varnem delu UEFI in jih ni mogoče prepisati ali spremeniti, ne da bi bila posodobitev tudi ustrezno podpisana (z zasebnim ključem, ki ustreza javnim ključem v UEFI). To je podrobnost, ki bo v nadaljevanju še zelo pomembna. Medtem ko je ključ PK v formatu X509, so drugi ključi običajno RSA2048. Ključe KEK lahko posodabljamo le, če so novi podpisani s PK. V zbirkah DB in DBX pa lahko spremembe izvajamo le, če so podpisane s KEK.
Vsi certifikati imajo rok trajanja, ki ga izdajatelj določi ob izdaji. Ko se je Secure Boot prvič pojavil, se je zdelo 15 let dolga doba, v računalniškem svetu hitrih inovacij domala večnost. A leta tečejo.
Prvi certifikati, ki jih bo treba zamenjati, potečejo prihodnje leto. Microsoft Corporation KEK CA 2011, ki je shranjen v KEK in podpisuje DB in DBX, poteče junija 2026. Istega meseca poteče tudi Microsoft Corporation UEFI CA 2011, ki je shranjen v DB in podpisuje druge operacijske sisteme in strojne komponente. Oktobra 2026 pa bo potekel še Microsoft Windows Production PCA 2011, ki v DB podpisuje Microsoftove zagonske komponente in Windows. Novi certifikati, ki jih nadomeščajo, so bili izdani leta 2023 in so na novih sistemih že nameščeni.
Vključeni so vsi računalniki, ki poganjajo Windows 10, Windows 11, Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 ali Windows Server 2012 R2 in še nimajo posodobljenih certifikatov. Letošnji sistemi Copilot+PC nove certifikate že imajo. Enako velja za sisteme, na katerih teče Linux, če uporabljajo Secure Boot in s tem Microsoftov certifikat.
Ko bodo omenjeni certifikati pretekli, bodo imeli neposodobljeni sistemi več težav. Lahko se zgodi, da se ne bodo več zagnali, kar bi teoretično lahko rešili z izklopom Secure Boota ali (začasnim) premikom ure v UEFI. V praksi ta problem ni preveč verjeten, ker implementacija UEFI ne predpisuje preverjanja časa. To je po svoje logično, saj lokalni čas v UEFI (še preden se sistem poveže s čimerkoli) ni zaupanja vreden, hkrati pa bi predstavljal vektor napada, če bi uro prestavili globoko v prihodnost in izsilili ponovni zagon sistema.
Ob pretečenih certifikatih se bržčas ne bo dalo več posodabljati Windows Boot Managerja in različnih komponent Secure Boota. Uporabnikom nevidno se te komponente občasno posodobijo, da se zakrpajo novoodkrite luknje. Microsoft zato opozarja, da bo potrebna zamenjava certifikatov z »novimi«, ki so bili izdani leta 2023. Mogoče je tudi, da se sistemi ne bodo zagnali, če bomo v njih nadgradili strojno opremo, ker se pri zagonu preverja tudi povzetek strojne slike računalnika. Novi certifikati pa morajo biti podpisani z veljavnimi, ki jih sistem prepozna, zato je treba nadgradnje izvesti pred pretekom.
K sreči to ne bo predstavljalo večjega izziva za uporabnike. Microsoft svetuje, da redno preverjajo, ali je proizvajalec matične plošče pripravil kakšno posodobitev firmwara zanjo oziroma novo različico UEFI. Microsoft pa bo svoj del opravil prek Windows Updata, kjer bomo trčili ob konec podpore za Windows 10, ki se bo zgodila oktobra letos. O tem pišemo v tokratni temi številke, a poanta je, da lahko tudi navadni uporabniki brezplačno pridobijo leto odloga, če aktivirajo varnostno kopiranje v oblak, poslovni uporabniki pa kar tri kot ESU (Extended Security Updates).
Domači uporabniki, ki bodo uporabljali Windows Update, so pretežno varni. Poslovni uporabniki imajo posodabljanje sistemov centralizirano. Kdor ima vključeno pošiljanje diagnostičnih podatkov in prejemanje posodobitev, mu ni treba ukrepati. Kdor pa ima izključeno pošiljanje diagnostičnih podatkov, mu Microsoft svetuje vklop. Nato lahko v registru na naslovu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Secureboot ustvari novo vrednost DWORD z imenom MicrosoftUpdateManagedOptIn in jo postavi na 0x5944. Na ta način bo sistem sam poiskal nove ključe in jih namestil. To bo v prihodnosti storila tudi posodobitev prek Windows Updata.
Kdor pa želi ukrepati doma že zdaj, to prav tako lahko stori. Vrednost DWORD z imenom AvailableUpdates v KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Secureboot mora postaviti na 0x40 in nato v Powershellu pognati Start-ScheduledTask-TaskName \Microsoft\Windows\PI\Secure-Boot-Update. Po dveh ponovnih zagonih bo sistem posodobil certifikat Windows UEFI CA 2023, ki podpisuje zagon Windows.
Nekoliko več dela bodo imeli OEM-i, ki pa jim je Microsoft poskušal čim bolj olajšati življenje. Pripravil je binarne datoteke s PK, KEK, DB in DBX. Te so na voljo na uradnem Githubu v formatu EDKII, ki se integrira v firmware. Končni uporabniki pa lahko vse tri nove certifikate najdejo tudi na Microsoftovih straneh (learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-secure-boot-key-creation-and-management-guidance).
Če deluje vse skupaj precej zapleteno, brez strahu. Microsoft ne bo nikogar silil, da ročno namešča certifikate in ali posodablja firmware in UEFI. Oba je že vrsto let mogoče posodobiti kar prek Windows Updata in to se bo tudi zgodilo. Problema, ki ga bodo povzročili pretečeni certifikati, se Microsoft in OEM-i zavedajo že vrsto let, zato ga bodo tudi pravočasno rešili. Nekaj več odgovornosti bodo imeli le skrbniki velikih poslovnih sistemov, a tudi tu jim gre Microsoft močno naproti.
Nauk te zgodbe je dvojen. Po eni strani je zanimivo opazovati, kako na videz nepomembne podrobnosti iz preteklosti, kot je potek certifikatov čez 15 let, hitro postanejo sedanjost in resničnost. Po drugi strani pa so časi računalnikov, ki smo jih uporabljali kot vse druge stroje, nespremenjene in zamrznjene v času, nepreklicno minili. Stalno posodabljanje je nuja, za kar razlog niso vedno varnostne ranljivosti, temveč včasih – kot na primer zdaj – preprosto čas. Iz tega lahko izpeljemo že izrabljeni nasvet: ne uporabljajte nepodprtih sistemov, denimo Windows 7 ali 8. Če sistema ne morete ali ne želite nadgraditi na Windows 11, pa obstajajo tudi alternative.


