Sef v telefonu
Moderni telefoni vsebujejo tudi digitalni sef v pravem pomenu besede. Na ločenem čipu hranijo najpomembnejše skrivnosti, od ponazoritve uporabnikovih prstnih odtisov do šifrirnih ključev. Niti procesor in jedro operacijskega sistema nimata dostopa do njega, temveč ga lahko le ponižno prosita za odklepanje.
Svet je velik, svet je nevaren in svet je poln ljudi z nečednimi nameni. Zaradi tega je treba pri razvoju računalniške opreme enako pozornost kot razvoju novih funkcionalnosti nameniti zaščiti. Luksuz zgodnjega računalništva in interneta, ko so se akademski uporabniki večidel vsi poznali med seboj in jih je gnala v glavnem radovednost, je nepreklicno mimo. Današnja resničnost so pametni telefoni, ki jih imajo sleherniki, na njih pa dostop do mobilnih bank, vse elektronske pošte in biometričnih podatkov. To so telefoni, ki jih prenašamo naokoli, zato se redno izgubljajo in kradejo. Le kaj bi lahko šlo narobe in kako to omejiti?
Applov iPhone 5S je prvi prinesel varno enklavo.
Pristopov k zaščiti je več, eden najosnovnejših pa je izolacija. Ker nihče ne more pomisliti na vse mogoče načine za vdor ali napad pa tudi ker nihče ne izumi računalnika od začetka, temveč se uporabljajo že izdelani gradniki – od prevajalnikov do knjižnic –, je treba ravnati preventivno. Namesto da bi mrzlično iskali in krpali vse luknje, je smiselno ubrati drugačno pot. Zmanjšati želimo število izpostavljenih delov sistema, torej skrčiti površino za napad. Najobčutljivejše informacije je treba ločiti od preostalega sistema in poskrbeti, da je dostop do njih omejen. Najlaže je to storiti tako, da ne zaupamo ničemur in neposrednega dostopa ne dovolimo nikomur, niti samemu operacijskemu sistemu. Izvedb je več.
Prva sta bila Apple in ARM
Apple ima v zgodovini pametnih telefonov posebno mesto, ker je mnoge danes samoumevne funkcionalnosti uvedel prvi, precej preden je v laični javnosti dozorelo spoznanje o njihovi koristnosti. Več pomembnih novosti je leta 2013 prinesel iPhone 5S, ki je imel procesor A7. To je bila Applova izvedenka referenčnega dizajna ARMv8, ki je poleg podpore za 64 bitov in koprocesorja za senzorje premikanja prvikrat vključeval tudi varno enklavo (Secure Enclave). Tako se imenuje ločeni koprocesor, ki je sčasoma dobil več funkcij in danes skrbi za TouchID, FaceID in šifriranje. To je bilo mogoče uvesti, ker je ARM s tehnologijo TrustZone/SecurCore uvedel ustrezno strojno podporo na ravni čipa.
Patent US8832465B2 je opisal delovanje Applove varne enklave.
O delovanju varne enklave Apple noče izdati preveč, kar je tudi razumljivo. Še največ splošnih informacij dobimo v ameriškem patentu 8832465B2 (Security Enclave Processor for a System on a Chip), ki ga je Apple vložil septembra 2012 in dobil odobrenega natanko dve leti pozneje. Kasneje je vložil še nekaj drugih patentnih prijav za opis funkcij, ki jih lahko taka varna enklava opravlja (npr. 20130308838, Efficient Texture Comparison).
Funkcije varnega elementa:
̶ Preprečevanje nepooblaščenih dostopov in sprememb.
̶ Začetek verige zaupanja v šifriranju (root of trust).
̶ Varna shramba za šifrirne ključe, biometrične podatke, bančne podatke.
̶ Kriptografsko varno generiranje naključnih števil.
̶ Ustvarjanje šifrirnih ključev.
Da bo Apple vgradil bralnik prstnih odtisov v iphone, se je začelo govoriti že leta 2008, torej le leto dni po izidu prve različice. Čeprav bi tehnično to lahko storil že pred letom 2013, je bilo treba z varnostnega vidika počakati na varno enklavo. Prstni odtis je namreč zelo osebni podatek, pravzaprav biometrična informacija, ki je povrhu še nespremenljiva. Če nam enkrat pobegne, bomo morali s tem živeti, saj posameznik prstnih odtisov ne more spremeniti. Da bi imeli shranjene prstne odtise (oziroma iz njih enolično in enosmerno izračunano funkcijo) na navadnem telefonu, je zato varnostno nesprejemljivo. Ker problema ni moč rešiti programsko – vsaj tako, da bi bil odporen tudi na vse napade v prihodnosti –, je Apple posegel po strojni rešitvi.
To je bilo v resnici logično in zgodovinsko neizbežno, in če ne bi tega prvi storil Apple, bi gotovo kdo drug. Da to drži, pove ARM, ki je že leta 2008 v beli knjigi pisal o pomembnosti varovanja osebnih podatkov, elektronske pošte, bančnih podatkov in gesel za mobilne transakcije. Takrat je predvidel rešitev, ki so jo poimenovali Varni svet (Secure World). Leta 2012 je ARM že sodeloval s podjetjema Gemalto (proizvajalec telefonskih kartic SIM) in Giesecke & Devrientto pri razvoju rešitev za varovanje mobilnih plačil. ARMv8 je imel že vse predpripravljeno za koncept fizično ločenih varnih čipov, kar je Apple z veseljem uporabil. In tako je leta 2013 izšel iPhone 5S, ki je znal brati prstne odtise in je šifriral podatke. Let 2017 je iPhone X prinesel še prepoznavanje obrazov (FaceID). Vse to je omogočila varna enklava, kjer so shranjeni kriptografski ključi, podatke o prstnih odtisih, podatki za prepoznavanje obraza itd.
Applova varna enklava
Evolucija je že pred milijoni let »ugotovila«, da je treba najpomembnejše funkcije fizično ločiti od ponorelega sveta. Vretenčarji imajo skoraj neprodušno krvnomožgansko pregrado, ki večino molekul ustavi in jim ne dovoli vstopa v možgane. Podobno je ločena tudi varna enklava. Večina operacij poteka v centralnem procesorju (application processor), ki poganja operacijski sistem in aplikacije. Nekatere naloge, zlasti analizo podatkov iz senzorjev, kot so pospeškomeri, kompasi in žiroskopi, od iPhona 5S naprej izvajajo pomožni čipi (koprocesorji M), a to ni povezano z varnostjo, temveč učinkovitostjo in manjšo porabo energije. Bolje je, da te naloge prevzamejo specializirana vezja in ne večnamenski potratni centralni procesor. Analogno – tudi vezalke si zavezujemo avtomatično, ne da bi zavestno razmišljali o vsakem gibu prstov.
Shema delovanja Applove varne enaklave.
Povsem drugačna zgodba pa je varna enklava. Tudi to je dodatni procesor, a z zelo omejenim dostopom. Strojni filter centralnemu procesorju preprečuje, da bi dostopal do varne enklave. Namesto tega lahko z njim komunicira le z vnaprej določenimi klici in funkcijami, predvsem pa ne more dobiti nobenih shranjenih informacij. Varno enklavo lahko le sprašuje, ali je neki podatek pristen, oziroma prosi za dešifriranje, ne more pa prebrati šifrirnih ključev ali kako drugače dostopiti do vsebine. Še več, ključev vanj tudi ne more zapisovati, saj se ti ustvarijo v varni enklavi in tam tudi ostanejo. Centralni procesor jih nikoli ne vidi. Velja tudi obratno – podatke, ki jih varna enklava pridobi iz zunanjega sveta (npr. predstavitev prstnega odtisa), prejme po posebej določenih protokolih in vodilih.
Uporaba varnega elementa:
̶ Preverjanje pristnosti.
̶ Digitalno podpisovanje.
̶ Brezstična plačila.
̶ Varne denarnice za kriptovalute.
̶ Shranjevanje biometričnih podatkov.
V varni enklavi je SEP (secure enclave pocessor) oziroma lasten procesorski čip (Kingfisher), ki ima svoj operacijski sistem (SEPOS, osnovan na Darbat/L4) z lastnim jedrom, gonilniki, servisi in aplikacijami. V A7 je tekel s 300–400 MHz, v naslednjih inačicah pa so ga nadgrajevali, pri čemer je bila večina sprememb usmerjenih v okrepitev integritete in zaščite pred nepooblaščenim dostopom. Enklava ima cel kup lastnih vezij, na primer za tvorjenje naključnih števil ali ustvarjanje šifrirnih ključev, do katerih centralni procesor in drugi čipi (torej celoten SoC) ne morejo. Ima tudi lastne vhodno-izhodne povezave (I/O), prek katerih komunicira z drugimi komponentami na matični plošči (SPI, UART, I2C), denimo s čitalnikom prstnih odtisov. Vse to omogoča, da SEP svoje bistvene funkcije izvaja neodvisno od glavnega procesorja. S tem se omeji škoda, ki bi jo lahko povzročile zlonamerne aplikacije na telefonu, saj se te izvajajo v glavnem procesorju, ki fizično nima dostopa do SEP, zato ga tudi zlobna koda ne more prisiliti v to (lahko ga poskusi, a efekta ne bo). Za komunikacijo s SEP se uporablja orodje seputil.
Ni pa SEP popolnoma neodvisen, saj nekatere komponente vendarle deli s centralnim procesorjem. To so upravljanje energije (power manager), pomnilniški krmilnik (memory controller), narekovanje frekvence (phase-locked loop clock generator), vmesnik za komunikacijo med jedroma (secure mailbox) in pomnilnik (RAM). Čeprav deli glavni pomnilnik, to ni varnostno tveganje, saj je njegov del (poimenovan TZ0) ločen in šifriran z AES. Do drugega dela zaščitenega pomnilnika (TZ1) pa ima dostop hipervizor v centralnem procesorju. SEP ima tudi lasten pomnilnik, a je 4.096 bajtov SRAM premalo za delovanje, služi zgolj za prvo stopnjo pri zagonu. Za shranjevanje podatkov pa ima na voljo 4 MB.
Strojna in programska infrastruktura TEE v ARM TrustZone.
Z leti je SEP pridobival dodatne funkcije. V A9 je dobil DPA zaščito čipa za šifriranje AES in PKA (public key accelerator), v A10 je AES prejel še zaščito semen za generacijo ključev (lockable seed bits), v A11 zaščito pred ponavljanjem ali zamikanjem komunikacije (replay protection), od A12 pomnilnik ni več EEPROM, temveč Secure Storage Component (nespremenljiv ROM, generator naključnih števil, unikaten kriptografski ključ in pogon, strojna zaščita pred spreminjanjem), v A13 ima še Boot Monitor itd. Od A11 do A13 je bil v SEP integriran tudi algoritem za prepoznavanje obrazov (Secure Neural Engine), ki je od A14 del varnega dela centralnega procesorja. Apple se torej trudi, da bi SEP še dodatno okrepil in izničil potencialne vektorje napada na izolirani čip.
Moderna varna enklava (Security Enclave) ima torej: svoj procesor (SEP), na katerem teče mikrojedro L4; zaščito pomnilnika (memory protection engine), ki ima shranjen ključ za sprotno šifriranje in dešifriranje (AES XEX) pomnilnika; zagonski nespremenljivi pomnilnik (Secure Enclave Boot ROM), ki ob zagonu preveri pristnost slike s SEPOS, ustvari šifrirne ključe za pomnilnik in vanj naloži SEPOS ter mu preda nadzor; nadzor zagona (Secure Enclave Boot Monitor), ki prepreči zaganjanje nepooblaščene kode ob zagonu; generator naključnih števil (True Random Number Generator), ki služi kot vir entropije za generiranje šifrirnih ključev; nespremenljive vrhovne ključe (Root Cryptographic Keys) in unikatno številko naprave (UID); vezje za AES (AES Engine), ki izvaja simetrično šifriranje; vezje za asimetrično šifriranje (Public Key Accelerator), ki podpira standarda RSA in ECC (eliptične krivulje); varen spomin za shranjevanje.
V praksi
SEP nudi zaščito pred napadi, ko ima zlikovec poln dostop do celotnega čipa (SoC). Skrajna različica tega je odtujen telefon, ko ga lahko napadalec razstavi in fizično dostopi do SEP. Tudi v tem primeru varna enklava zagotavlja dobro zaščito.
Za odklep telefona vsakokrat nastavimo geslo, ki je lahko zgolj številčno ali pa alfanumerično. Tega je seveda teže uganiti, ker je možnosti precej več, a SEP preprečuje napade s silo, zato so tudi lažja gesla sprejemljiva. Preverjanje vpisanega gesla traja približno 80 milisekund, kar je veliko. To je algoritemska omejitev in posledica zapletene matematike v ozadju. Algoritem je namenoma počasen, ker se tako ovira možnost preizkušanja vseh gesel (brute-force attack). A še vedno bi vsa šestmestna numerična gesla preverili približno v enem dnevu, kar je prekmalu.
Ob vsakem neuspelem poskusu zato iphone podaljša čas, preden lahko vnesemo novo geslo. Ker je geslo zapisano neposredno v varni enklavi, preverjanje pa izvaja SEP, tega ni mogoče skrajšati. Centralni procesor nima druge možnost, kot da počaka, da mu SEP odgovori. Pomagati si ne moremo niti s fizičnim kopiranjem. Tudi če bi skopirali celotno vsebino iphona (celoten flash), ne bi mogli gesel preverjati na drugem, hitrejšem računalniku, ker je odklepanje povezano s strojno opremo SEP.
Skupna merila
Čeprav enotnosti še ni, so najširše sprejeti način za certificiranje izdelkov in storitev na področju kibernetske varnosti Skupna merila (Common Criteria) po standardu ISO 15408. Lestvica predvidena več stopenj zagotovila ocen (Evaluation Assurance Level) in sega od EAL1 do EAL7. EAL4 pomeni metodično dizajnirano, preverjeno in pregledano, EAL5 pa semiformalno dizajnirano in preverjeno. To sta tudi najpogostejši stopnji certifikatov varnih elementov. Oznaka + pa pomeni, da izdelek presega standard, a še ne dosega višje stopnje.
Vsak iphone ima tudi unikatno identifikacijsko številko (UID), ki je ob izdelavi zapisana neposredno v strojno opremo. Prebrati je ne more nobena programska oprema niti jedro operacijskega sistema z najvišjimi privilegiji. UID je dostopen le delu SEP, ki skrbi za šifriranje (AES encryption engine). Ta ga prebere in uporabi za ustvaritev (de)šifrirnih ključev. To je razlog, da vsebine telefona ne moremo prebrati drugje, četudi jo skopiramo. Šifrirana je s ključem, ki se ustvari iz UID in gesla. Varnost gre še dlje. Če v iphone 10-krat napačno vpišemo geslo, nepovratno izgubimo dostop do vseh podatkov. Tedaj se namreč nepovratno onemogočijo vsi osebni podatki, ki so zaščiteni z geslom, ker se zavrže ključ.
Poanta varne enklave je torej odpornost na napade iz jedra. V večini sistemov ima jedro absolutno vse pravice, zato je vdor vanj katastrofa. Ker pa je varna enklava svoj procesor, ki poganja svoj operacijski sistem in do katerega jedro glavnega operacijskega sistema nima neposrednega, kaj šele neomejenega dostopa, to ni mogoče.
Na drugi strani
Često je Apple pionir, a redko ostane osamljeni jezdec. Tudi z varnimi enklavami se je zgodilo enako, ko so tudi proizvajalci iz Androidovega tabora z zamudo spoznali, da je zamisel koristna. Izziva so se lotili podobno in približno istočasno, a ne vsi enako.
Še preden so telefoni Android dobili varne čipe in podobne strojne rešitve, so uporabljali dobri stari TEE (trusted execution environment). Gre splošen izraz, s katerim označujemo bodisi bolje zavarovan del procesorja z omejenim dostopom bodisi zgolj samo del operacijskega sistema (jedra), ki je ločen od preostanka. V dizajnih procesorjev ARM je to tehnologija TrustZone. Gre za dve okolji, ki tečeta v istem jedru. Eno je namenjeno nevarnemu svetu, drugo pa varnemu. V praksi sta to dva operacijska sistema, ki se izvajata sočasno v istem jedru. Operacijski sistem v nevarnem okolju nima dostopa do varnega okolja ne glede na privilegije. TrustZone imajo procesorji Cortex-A in Cortex-M. TEE je načelno lahko bolj prilagodljiv od strojnih varnih elementov, a je tudi manj varen, zato smo naposled vendarle dobili zadnje.
Qualcomm je decembra 2017 predstavil SoC Snapdragon 845, ki je imel varen podsistem (SPU– Secure Processing Unit System). V Snapdragonu 855 so ga še nadgradili, tako da ga je certificiral tudi nemški Urad za varnost v informacijski tehniki (Bundesamt für Sicherheit in der Informationstechnik). SPU je izolirano strojno jedro, ki ima svoje ROM, RAM, procesorski čip, generator naključnih števil, enoto za šifriranje in varno shrambo podatkov. Podobno je Huawei svoj integrirani varni element (Integrated Secure Element) v SOC dodal leta 2018 z modelom Kirin 960. Tudi zgrajen je kot koprocesor, torej je jedro fizično ločeno, dostop do njega je omejen, v njem pa se ustvarjajo šifrirni ključi in shranjujejo biometrični podatki. Ker Qualcommove SoC uporabljajo številni proizvajalci, denimo Xiaomi, One Plus, LG, imajo tudi njihovi dražji telefoni strojne elemente za varnost. Android ima programsko podporo za njihovo uporabo že vgrajeno.
Samsung se je sprva odločil za drugo rešitev. V SoC Exynos 9820 so leta 2018 dodali funkcije, ki jih fizično ni moč klonirati (PUF – physically unclonable function). PUF so deli čipa, katerih lastnosti se pokažejo šele, ko je čip pod napetostjo. Zaradi namerne variabilnosti v proizvodnem postopku je PUF v vsakem čipu različen, a nato v življenjski dobi čipa nespremenljiv. Gre torej za anomalije, vtisnjene v čip, ki nastanejo naključno in jih ni mogoče prekopirati. Ker so pokažejo šele med delovanjem, jih tudi ni mogoče prebrati, če napravo razstavimo. Če karakteristike PUF uporabimo kot enega izmed vhodov pri tvorjenju šifrirnih ključev (drugi vhod pa je, na primer, geslo), bo dalo isto geslo na drugem enakem čipu drugačen šifrirni ključ. To je načelno enako kot enolični identifikatorji (UID), ki so nepovratno vtisnjeni v Applovo varno enklavo.
Google je že leta 2017 v Pixel 2 vgradil varnostni modul (Trust Platform Module), ki je leto pozneje v Pixlu 3 postal čip Titan M. Gre za ločen mikroprocesor (v Pixlu 3 je bil to Cortex-M3), ki je dodatno zaščiten pred posegi iz zunanjosti, ima lasten pomnilnik in ROM, generator naključnih števil, vezje za šifriranje in spomin. Skratka, izvedba je zelo podobna kot pri Applu in ima tudi iste funkcije: šifriranje, varen zagon, shranjevanje občutljivih podatkov.
Samsungov trezor
Poglejmo podrobneje Applovega največjega konkurenta. Samsung je leta 2013, torej istočasno kot Apple, uvedel svoj sistem za varnost. Tedaj je bil Samsung Knox vsebnik (container), ki je shranjeval kritične aplikacije in podatke v TEE. Sprva je bil Knox namenjen ločevanju med poslovnim in zasebnim svetom, že leto pozneje pa so pripravili Personal Knox. Leta 2019 so Knox Workspace prenehali uporabljati. Še drugi sestavni delni Knoxa so zaščita jedra (Real-time Kernel Protection), varni zagon, posodobitve za Android, VPN itd. Na strojni ravni je Knox uporabljal ARM TrustZone. Skratka, Knox ni bil toliko strojna zaščita kot ekosistem orodij in funkcij za varovanje integritete naprave.
Samsung je lani uvedel svoj varni element Samsung Knox Vault.
To se je spremenilo z uvedbo tehnologije Samsung Knox Vault, ki jo je prvi lani dobil Galaxy S21. Ta prinaša ločen procesor, ki teče neodvisno od glavnega in ima svoj operacijski sistem. Shranjuje ključe, biometrične podatke in identifikacijske podatke za veriženje blokov (blokchain credentials). Poleg klasičnih načinov zaščite pred napadi iz glavnega procesorja je Knox Vault odporen tudi na fizične poskuse vdora. Če zazna močan laser, ekstremne temperature ali ekstremne električne napetosti, ki kažejo na poskus odprtja, se bo samouničil. Njegovi sestavni deli so podobni kot v varni enklavi: varno jedro, pomnilnik, ROM, senzorji, upravljalnik pomnilnika v procesorju, vezje za šifriranje, senzorji.
Samsung uporablja tudi funkcije, ki jih ni mogoče klonirati (PUF).
Smer je jasna
V podjetju Counterpoint so ocenili, da je predlani 89 odstotkov telefonov imelo varen element, 10 odstotkov pa PUF. Trend se lahko le še nadaljuje. Končni uporabnik sicer nima kaj dosti besede pri tem, ker dosti izbire dandanes več ni. Varni elementi so tu. Zagotovo predstavljajo korak naprej v varnosti, a prinašajo tudi pasti.
Doslej smo pisali le, kako zelo varni so ti elementi, a hekerji ne počivajo. Leta 2017 jim je uspelo dešifrirati firmware v Applovi varni enklavi, kar je omogočilo vpogled vanj. Podatkov ni bilo mogoče pridobiti. Še več pozornosti je požela ranljivost, ki so jo julija 2020 raziskovalci predstavili na Mobile Security Conference v Šanghaju. Šlo je za ranljivost v pomnilniškem krmilniku, ki upravlja TZ0, kar bi teoretično omogočilo dostop do podatkov iz TZ0, ki so namenjeni le SEP. V novejših iphonih (XS in XR) ranljivosti ni mogoče izkoristiti, v starejših pa le s fizičnim dostopom, pa še to zelo težko. Varne enklave so se za zdaj izkazale kot – varne.
Tisti, za kogar je varnost absolutno najpomembnejša, jih je lahko le vesel. Spomnimo se primerov odklepanja iphonov, ki jih celo slavni FBI v kazenskih postopkih ni mogel odkleniti. Druga plat medalje pa je, če gre kaj tako narobe, da telefona ne moremo nikakor obuditi niti po servisu nebistvenih komponent ali če se varna enklava poškoduje. Če so podatki šifrirani, ne pomaga niti fizična prestavitev spominskega medija (flasha) v drug telefon ali eksterno branje, saj ne more obnoviti podatkov. Varnost pred vsiljivci pomeni tudi varovanje pred samim seboj. V takem primeru nam pomagajo oblačne shrambe, denimo Applov iCloud in Google Drive, kamor se lahko vsebina telefona sproti shranjuje. Tedaj varnost v obeh pomenih besede – pred nepooblaščenim deljenjem naokoli in pred izgubo – zaupamo upravljavcu oblaka.