Difference: UEFItietoturva (r3 vs. r2)

Samppa Toiviainen

UEFI tietoturvan näkökulmasta

Johdanto

The Unified Extensible Firmware Interface eli lyhennettynä UEFI on spesifikaatio, joka määrittää rajapinna ohjelmiston ja laiteohjelmiston(engl. firmware) välille. UEFI luotiin korvaamaan jo IBM PC -arkkitehtuurista tuttu iäkäs BIO-järjestelmä. Alkuperäisen EFI-järjestelmän kehittivät yhdessä Intel ja HP. UEFI perustuu tähän, mutta se on julkinen yhdentoista yrityksen hallinnoima versio.[1] Tämän työn tarkoituksena on avata UEFI-järjestelmää tietoturvan näkökulmasta, esitellään sen turvallisuusriskejä ja verrataan sitä BIOS-järjestelmään. Erityisesti tarkastellaan UEFI:n tarjoamaa Secure boot -protokollaa ja sen ongelmia.

Käynnistysprosessi

UEFI uudisti tietokoneen käynnistysprosessia monella tapaa verrattuna BIOS-järjestelmään. BIOS-järjestelmä ei edellytä varmistamaan laiteohjelmiston eheyttä tai oikeellisuutta. Jotkut BIOS-valmistajat ovat tosin toteuttaneet järjestelmiä, joissa ensin ladataan luotettu BIOS käynnistyspalikka, joka varmistaa lopun laiteohjelmiston eheyden. Kun BIOS on valmistellut laitteiston ja oheislaitteet se luovuttaa suorittimen käynnistyslaitteella sijaitsevalle käyttöjärjestelmän lataajalle ilman mitään varmistuksia. [2]

BIOS-järjestelmästä poiketen UEFI-järjestelmässä mitään ei suoriteta ennen kuin sen eheys tarkistetaan. Käynnistysprosessi alkaa SEC-vaiheesta(Security), jossa ensin alustetaan prosessori ja välimuisti. Kaikki tässä vaiheessa suoritettu ohjelmakoodi on joko varmasti luotettua tai sen eheys on tarkistettu.SEC-vaiheen jälkeen on PEI-vaihe(Pre EFI Initialization), jossa jatketaan laitteiston alustamista ja sen aikan saadaan CRTM ladattua. CRTM on osa laiteohjelmistoa joka on varmasti luotettu. Sen avulla voidaan varmistua että koko järjestelmä on luotettu. Tähän tarkoitukseen käytetään PCR-rekistereitä(Platform Configuration Registers). PCR -rekisterin arvo muodostetaan laskemalla tiiviste laiteohjelmistosta SHA-1 -algoritmilla ja vertaamalla sitä odotettuun arvoon, jos arvo ei täsmää tilanne hoidetaan riippuen kyseisen kokoonpanon UEFI-politiikan mukaan. [2]

UEFI Secure boot

UEFI:n määrittelyn versio 2.3.1 määrittelee mahdollisuuden Secure boot -protokollan käyttämiseen. Secure boot -protokollan perusidea on allekirjoittaa suoritettava ohjelmakoodi käyttämällä julkisen avaimen menetelmää. Käytössä on RSA 2048 bitin avaimella ja tarkistussummassa on käytössä SHA-1 tai vaihtoehtoisesti SHA-256. Käytettäessä Secure boot-protokollaa, tarvittavat julkiset avaimet tallennetaan laiteohjelmistoon. Tälläisiä avaimia on PK-avain(platform key) ja mahdollisesti KEK(engl. key exchange keys) -avaimet. Näitä avaimia voidaan käyttää varmistamaan kaikki UEFI:n käyttämät komponentit ja ajettava ohjelmakoodi. Tämä avaimien tietokanta sisältää toimivien avainten lisäksi listan vanhentuneista avaimista. Tätä avainten listaa hallinnoi laitevalmistaja.[3]

Julkisten avainten syöttö UEFI-järjestelmään toimii siten että järjestelmä on setup-tilassa, jossa kuka tahansa voi kirjoittaa laiteohjelmistoon PK-avaimen. Kun PK-avain on kirjoitettu laiteohjelmistoon, UEFI-järjestelmä siirtyy user-tilaan. Tässä tilassa uuden PK-avaimen kirjoittaminen ja uusien KEK-avainten lisääminen vaatii sen että nämä avaimet ovat allekirjoitettuja käytössä olevan PK-avaimen yksityisellä avaimella. PK-avainta käytetään siis tunnistamaan alustan omistaja ja KEK-avaimia käytetään tunnistamaan alustan komponentteja. Esimerkkinä komponentista on käyttöjärjestelmä.[3]

Tälläisenään UEFI:n Secure boot-protokolla voi olla ongelmallinen, kun halutaan käyttää vapaita ohjelmistoja, koska PK- ja KEK- avainten lataaminen laiteohjelmistoon jää laitevalmistajien vastuulle. Tästä seuraa että laitteen käyttäjä ei voi ajaa laitteessa mitä tahansa koodia haluaa Secure boot -protokollan ollessa käytössä. Tämän ominaisuuden käyttö on rajoitettu tietyille tahoille, joiden avaimet laitevalmistaja on sisällyttänyt laiteohjelmistoon. Esimerkiksi Linux-jakeluversioita on paljon ja jokaisen tahon avaimen lisääminen laiteohjelmistoon on työlästä. Ongelmia aiheuttaa myös GPL v3 -lisenssi, joka löytyy esimerkiksi monessa jakeluversiossa käytössä olevasta GRUB 2 -lataajasta, mikä edellyttää lähdekoodin paljastamisen lisäksi avainten paljastamista. Lisäksi jos käyttäjän on jostain syystä tarpeen muokata laitteessa ajettavaa käyttöjärjestelmää, ei se ole mahdollista Secure boot-ominaisuuden ollessa päällä. [3]

Secure boot-protokolla tarjoaa suojaa haittaohjelmia vastaan, mutta sillä on myös potentiaalia tarjota tietyille yrityksillä kilpailuetua. Esimerkkinä tälläisestä on Microsoftin asettamat vaatimukset siitä että Windows 8:n sisältävissä ARM-pohjaiset tablet-koneissa Secure boot -protokollan käyttö on pakollista. Tämä estää tuotteen käyttäjää vaihtamasta laitteeseen toista käyttöjärjestelmää. [4]

UEFI:n tietoturvaongelmat

Päätelmät / yhteenveto

Vastaukset ongelmaan tiivistetään tässä luvussa, jonka maksimipituus on sama kuin johdantoluvunkin. Tässä ei toisteta aiempia ilmaisuja eikä viitata aiempiin kohtiin. Toisaalta uusia näkökulmia ei tuoda esille, paitsi ehkä mainintoja siitä, miten työtä voisi jatkaa: syvemmälle tai laajemmalle. Lukija voi lukea vain johdannon ja päätelmät. Päätelmäluku on hyvä, jos lukija tällöin haluaakin lukea, mitä välissä on.

Lähteet

SivuTiedotLaajennettu edit
Vaativuus Jatko
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Titu-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa

View topic | View difference side by side | History: r4 < r3 < r2 < r1 | More topic actions
 
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback