Uudised

Juhtumianalüüs: Eesti ID-kaardi turvanõrkuse kõrvaldamine

13. dets. 2017

Probleemi olemus

2017. aastal avaldasid Nemec, Svenda jt oma uurimuse RSA võtmete genereerimisest mitmetel laialt levinud riistvaraplatvormidel. Oluline nõrkus leiti ka Infineoni kiibil, mis on Eesti ID-kaardi aluseks. Järgnevalt anname lühikese ülevaate probleemi krüptograafilisest sisust.
RSA võtmepaari loomine algab kahe enam-vähem võrdse bitipikkusega algarvu p ja q genereerimisest, misjärel avalik moodul arvutatakse kui nende korrutis N = pq. Näiteks kui moodul N peab sisaldama 2048 bitti, valitakse nii p kui ka q umbes 1024-bitised.
Kahjuks pole suurte algarvude genereerimine lihtne ülesanne ning selle lahendamiseks kasutatakse piiratud arvutusvõimsusega platvormidel (nagu kiipkaardid) mitmeid optimeerimisvõtteid. Just Infineoni kiibil kasutatud optimeerimismeetodit Nemec, Svenda jt ründasidki.
Nende uuringud algasid tähelepanekust, et Infineoni kiibi poolt genereeritud avalike moodulite jäägid jagamisel väikeste algarvudega ei ole ühtlaselt jaotatud. Edasine analüüs näitas, et algarve p (ja q) genereeritakse vastavalt valemile

kus M on n esimese algarvu korrutis. Seejuures on n valitud nii, et arvu M bitipikkus oleks umbes sama, mis p ja q oma. Näiteks 1024-bitiste algarvude genereerimiseks leitakse M esimese 126 algarvu korrutisena; niisiis on arv M = 2 · 3 · 5 · … · 701 ise 961-bitine.

Arvu N = pq naiivne tegurdamismeetod oleks valemis erinevate a väärtuste läbiproovimine. Vastava suuruse k saab leida Coppersmithi algoritmiga. Paraku nõuab see lähenemine arvu a jaoks ordM(65537) ≈ 2254 kandidaadi läbivaatamist (kus ordM(65537) tähistab arvu 65537 järku modulo M).

Samas on Coppersmithi algoritmi rakendamisel valikuruumi. Nimelt läheb selle algoritmi edukaks rakendamiseks vaja infot ainult 1/4 osa kohta mooduli N bittidest. Seega saab tegurdamiseks asendada arvu M tema mingi jagajaga M’, millel oleks vähemalt bitti, kuid mille jaoks ordM’(65537)-elemendiline hulk oleks mõistliku ajaga läbi vaadatav. Paneme tähele, et niisuguse M’ korral saab ka arvu p esitada kujul

Arvu M’ täpset väärtust pole artiklis antud, kuid selle leidmise meetodit kirjeldatakse küllaldase üksikasjalikkusega. Samuti märgime, et hea aja- õnnestumistõenäosuse suhte saamiseks ei pea M’ olema optimaalne.

Artikli autorid väidavad, et nende poolt 2048-bitiste moodulite tegurdamiseks leitud M’ väärtuse korral on arvu a’ otsinguruumi suurus umbes 234. Arvestades Coppersmithi algoritmi rakendamisele kuluvat aega (umbes 0,2 sekundit), on ühe mooduli keskmine oodatav tegurdamisaeg umbes 140 protsessoriaastat. Kui maksta tuleks ainult arvutamisele kulutatud elektri eest, tähendaks see umbes 1000-dollarilist kulu. Dan Bernstein on väitnud, et seda rünnet saab veel 5…25% efektiivsemaks muuta.

 

Probleemi lahendamine ja õppetunnid

 

ID-kaart on Eestis laialdaselt kasutusel. Paljud protsessid sõltuvad riikliku eID toimimisest ning on mitmeid süsteeme, mis toetavad vaid ID-kaarti (ja mitte mobiil-ID-d). ID-kaardi “väljalülitamine” oleks tõsiselt kahjustanud riigi ja ettevõtete toimimist. Ilmselt oleks tulnud kasutusele võtta ebaturvalisemaid asendusmeetmeid, mitmed toimingud oleks läinud hinnanguliselt palju aeglasemaks ja kulukamaks.

Kaartide väljavahetamine turvaveata kaartide vastu oleks võtnud väga kaua aega. Kõigepealt oleks tulnud uued kaardid luua: valida kiip, programmeerida ja testida rakendus, kõik sertifitseerida ning tellida uue kiibiga toorikud. Seejärel oleks tulnud käivitada kaartide väljavahetamine, mille läbilaskevõime oleks olnud piiratud PPA klienditeenindajate arvuga. Tõenäoliselt oleks see protsess kestnud aasta kui mitte rohkem. Lisaks tuleb arvestada, et leping senise teenusepakkujaga oli lõppemas ning see oleks selle pikaajalise protsessi veel keerukamaks muutnud.

Alternatiivina tuli valja töötada lahendus, mis võimaldaks vigasest kohast mööda minna ning olemasolevad kaardid uuendada. Katki oli RSA võtmete genereerimine ID-kaardi kiibis. ID-kaardi kasutamine kvalifitseeritud digitaalallkirja andmise vahendina nõuab, et salajane võti genereeritaks kiibis ega lahkuks sealt kunagi. Seega ei tulnud kõne alla ka võimalus genereerida võtmed kaardist väljas ning need siis kaarti importida. RSA kasutamisest tuli loobuda. Õnneks pakub ID-kaardi riistvara võimalust kasutada elliptkõveratele tuginevaid krüptosüsteeme ning nende teostust leitud turvanõrkus ei mõjuta. Analüüsisime võimalust jätkata RSA-ga, minnes üle alternatiivsete võtmepikkuste peale, kuid välistasime selle mitmetel kaalutlustel (näiteks oli üleminek 3k võtmetele välistatud, kuna kaart ei olnud suuteline 3k võtmeid genereerima). Lisaks tuli otsused vastu võtta enne kõnealust turvanõrkust kirjeldava artikli avaldamist ning selles olukorras oli turvakaalutlustel kõige mõistlikum üle minna elliptkõveratele.

ID-kaardi riistvara poolt toetatud elliptkõverate seast valiti kasutamiseks NIST-i kõver P-384. Valiku peamiseks kriteeriumiks oli lahenduse toetatus operatsioonisüsteemide ja rakenduste poolt. Mitte-NIST-i kõverate tugi jõuab teostustesse kahjuks väga aeglaselt. Märgime siinkohal, et tulevikku silmas pidades on oluline nõuda uute ja paremate krüptograafiliste primitiivide kasutuselevõttu tootjate poolt. Tulevikus tekkivate võimalike probleemide lahendamine võib nõuda praegu kasutatavate algoritmide täielikku väljavahetamist ning selleks tuleb valmis olla.

Kuna mobiil-ID oli juba mõned aastad varem elliptkõveratele üle läinud, oli suur osa ökosüsteemist (sealhulgas digitaalallkirja rakendused) üleminekuks valmis. Olemas oli ka kaartide kauguuendamise süsteem, mida oli varem kasutatud vigaselt kodeeritud sertifikaatide väljavahetamiseks. Probleemiks kujunes läbilaskevõime – kauguuendamise süsteem ei olnud mõeldud nii suure arvu ID-kaartide üheaegseks uuendamiseks.

Lisaks kaardirakendusele oli vaja muuta ka ID-kaardi draivereid operatsioonisüsteemide jaoks, töötada välja uus lahendus failide krüpteerimiseks-dekrüpteerimiseks ning uuendada teenusepakkujate veebirakendusi. Töö käigus tuli välja ID-kaardi mitmeid huvitavaid kasutusviise, mis olid ühel või teisel moel RSA-spetsiifilised ning vajasid elliptkõverate toetamiseks järeleaitamist.

Üldiselt toetasid uuemad operatsioonisüsteemid ja veebibrauserid elliptkõveraid hästi. Probleeme esines mõnel juhul riistvaralistel krüptoseadmetel olevate elliptkõverate kasutamisega.

Põhimõttelise lahenduse väljamõtlemine ei võtnud kaua aega, sest kiiresti teostatavaid variante eriti palju ei olnud. Põhiaeg kulus ID-kaardi baastarkvara loomisele ja testimisele koos kaardirakendusega, uuendussüsteemi ümberhäälestamisele ning teenusepakkujate süsteemide uuendamisele ja elliptkõverate toega varustamisele.
Käsitleme lühidalt ka kriisi praktilisi tagajärgi. Kuna Eestis on juriidilist jõudu omavad digitaalallkirjad olnud alati varustatud ajatempliga, siis ei sattunud ühegi seni allkirjastatud dokumendi autentsus ohtu. Alati on võimalik tõestada, et dokument allkirjastati enne, kui nõrkus teatavaks sai. See on hea näide sellest, kuidas põhjalik töö digitaalallkirja seaduse loomisel ja rakendamisel on end positiivselt ära tasunud.

Ka ID-kaardi autentimisfunktsioon ei saanud kannatada – kui teenusepakkujad kontrollivad korrektselt sertifikaatide kehtivust, ei pääse ebaturvaliseks muutunud ja nüüdseks tühistatud sertifikaatide alusel keegi e-teenustele ligi.

Edaspidi tuleb kindlasti vähendada taristu sõltuvust ühest elektroonilise identiteedi platvormist, alternatiivide kasutuselevõttu tuleb laialdaselt soodustada ja propageerida. Samuti tuleb parandada eID massilise uuendamise ja asendamise protsesside läbilaskevõimet – seda nii elektrooniliste kui füüsiliste kanalite (klienditeenindajad) osas. Riik peab partneritelt (eID teenuse osutajad) ostma ka võimekuse ja valmisoleku toimida force majeure tingimustes, mida kaartide kiirkorras vahetamine kahtlemata on. Uute eID platvormide valikul tuleb arvestada vajadusega kasutatavad krüptograafilised primitiivid välja vahetada, võimalusel ka niisuguste algoritmide vastu, mida platvormi loomise ajal veel olemaski ei ole.