Estija ir ROCA pažeidžiamumas (CVE-2017-15361)

Pastaruoju metu vis dažniau sulaukiu klausimo apie Estijos sprendimą atšaukti didžiąją dalį sertifikatų, išduotų su jų eID ir e-Rezidento kortelėmis (https://www.id.ee/?id=30610&read=38341).

Kiek man žinoma, tai Estijos sprendimą įtakojo Infineon Technologies gamintojo lustuose (kurie, be kita ko, naudojami įvairių gamintojų lustinėse kortelėse, kompiuteriuose ir pan.), o tiksliau šiuose lustuose naudojamos RSA kriptografinės bibliotekos,  rastas pažeidžiamumas (žinomas pavadinimu – ROCA), kuris kai kuriais atvejais leidžia santykinai pigiai apskaičiuoti privačius duomenis, naudojamus pasirašymui /autentifikavimuisi (kitaip tariant – RSA privatųjį raktą) ir tam užtenka turėti tik RSA viešąjį raktą. Jei kalbant apie eID scenarijų, tai turint privatųjį raktą galima pasirašyti dokumentus kito asmens vardu jam to nežinant ar jo vardu kur nors prisijungti.

Problema yra susijusi su raktų poros generavimu ir populiariausio ilgio – 2048 bitų – RSA raktą apskaičiuoti kainuotų apie 20-40 tūkstančių dolerių (jei naudojanti Amazon C4 paslaugas). Nors tai yra ganėtinai daug, tačiau jau rimtas argumentas sprendimų priėmimui. Kas įdomiausia, RSA raktų, sugeneruotų luste, turinčiame šį pažeidžiamumą, saugumas nepriklauso tiesiogiai nuo rakto ilgio (pvz., 4096 bitų ilgio raktas yra gerokai mažiau saugus nei 3584 bitų ilgio raktas).

Nors pažeidžiamumas buvo surastas dar vasario mėnesį, tačiau atradėjai (Čekijos, Jungtinės Karalystės ir Italijos universitetų mokslininkai) siekdami duoti pakankamai laiko gamintojui tinkamai sureaguoti į šią problemą, oficialiai apie šį pažeidžiamumą pranešė šių metų spalio 16 d., o dabar jau prieinamas ir visas tyrimo aprašymas: ROCA

Ar tai palietė Lietuvos asmens tapatybės korteles

Lietuvos asmens tapatybės kortelėse yra naudojami kiti lustai ir šis pažeidžiamumas nėra aktualus.

Kaip pasitikrinti ar pažeidžiamumas nepalietė kitų RSA kriptografinių raktų (kodo pasirašymui, PGP, SSL ir pan.)

Patikrinti ar konkreti raktų pora yra saugi galima pasinaudojant viešai prieinamomis priemonėmis ir tam užtenka tik įkelti savo viešąjį raktą: https://keychest.net/roca  ar  https://github.com/crocs-muni/roca.

Na ir jeigu taip nutiko, kad tikrinimo rezultatas  bus teigiamas, tai pirmiausia matyt geriausias sprendimas būtų apsvarstyti sertifikato, sudaryto šiai raktų porai, galiojimo sustabdymą / atšaukimą (ką Estai ir padarė), o toliau jau priklausomai nuo galimybių:

  1. Jei yra galimybė, atsinaujinti lusto programinę įrangą. Ne visada tai pavyks, nes tam reikia atnaujinti įrenginio programinę įrangą, o tai ne visais atvejai yra technologiškai įmanoma (ta lusto dalis, kurios pakeitimus reiktų daryti daugumoje atvejų bus „read-only“). Tai pat gali kilti problemų su tokio patobulinto lusto saugumo sertifikacija.
  2. Sugeneruoti raktų porą kitame įrenginyje ir jį suimportuoti (kadangi problema yra susijusi tik su raktų generavimu, tai padėtų jos išvengti nekeičiant įrenginio). Šį sprendimą rekomendavo Yubico gamintojas savo klientams.
  3. Naudoti saugesnius RSA raktus – pvz., 3936 bitų. arba naudoti kitokį kriptografinį algoritmą – ECC, nes pažeidžiamumas susijęs tik su RSA raktų generavimu (šį kelią mano žiniomis pasirinko Estija).
Tagged with: , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.