RSA opozorila na stranska vrata v šifrirnem algoritmu NSA
RSA je v elektronskem sporočilu svojim strankam odsvetovala uporabo enega izmed šifrirnih algoritmov, ki ga kot privzetega ponuja njena programska oprema (RSA BSAFE Toolkits in RSA Data Protection Manager), ker obstoji resna nevarnost, da je ameriška Agencija za nacionalno varnost (NSA) vanj vstavila stranska vrata za prisluškovanje. RSA, ki jo poznamo predvsem po mehanizmu SecurID za dvostopenjsko zagotavljanje pristnosti, je prvo podjetje, ki je javno odsvetovalo uporabo šifriranega algoritma, ki sta ga razvila NSA in ameriški NIST (Nacionalni inštitut za standarde in tehnologijo). Pri tem je bila RSA toliko previdna, da ni neposredno obtožila NSA, ampak so zapisali, da so razlog nedavni pomisleki glede varnosti algoritma. Informacije, ki jih je zbral New York Times, kažejo, da gre za Dual EC DRBG.
Dual EC DRBG je okrajšava za Dual Elliptic Curve Deterministic Random Bit Generator, ki je vrsta generatorja psevdonaključnih števil. Za šifriranje v teoriji potrebujemo vir naključnih števil, česar v računalniku sploh ni enostavno realizirati. Čeprav obstajajo generatorji naključnih številk (TRNG, true random number generator), jih večina računalnikov nima, zato se moramo zateči k programski rešitvi. Tako imenovana psevdonaključna števila, ki jih tvorijo PRNG-ji (pseudorandom number generator), so deterministična in periodična, a imajo dobri algoritmi dovolj dolgo periodo in distribucijo, da se zdijo povsem naključna in da jih ni mogoče napovedati. Seveda pa potrebujemo dober algoritem in vir entropije. Vir entropije je lahko karkoli, česar ne moremo napovedati in se spreminja – aktivnost pisanja po disku, premikanje miške, temperatura procesorja, stanje omrežja itn.
Velika težava pa so slabi (šibki) algoritmi za PRNG, saj v tem primeru lahko tvorjena števila napovemo z neničelno verjetnostjo. Če napadalec pozna algoritem in ve, da za vir entropije jemljemo lokalni čas v milisekundah, potem lahko enostavno preveri vse možnosti. V eni uri se pojavi le 3.600.000 milisekund. To je zelo trivialen primer; v resnici je slab (šibek) PRNG izjemno težko odkriti, če imamo vpogled le v rezultate in ne poznamo algoritma. Hkrati pa je njegova uporaba katastrofalna, saj so šifrirane informacije v resnici dostopne napadalcu, mi pa tega ne vemo, kar je še slabše kot odprto pošiljanje po internetu, ko to vsaj vemo.
Zakaj toliko pozornosti naključnim številom? Ker so za šifriranje ključna, saj lahko z njihovim poznavanjem šifriranje zlomimo. Šifriranje pa je ključno za obstoj civilizacije (brez pretiravanja), saj omogoča bančništvo, zaščito telefonskih klicev, delovanje elektronskih ključev itn. NSA in NIST sta v letih 2004-2005 razvila nove PRNG-je, za katere smo verjeli, da so dobri. Štirje novi PRNG-ji so našli pot v Special Publication 800-90, ki je kasneje postala del standarda ISO 18031. Trije algoritmi so precej standardni, izstopa pa ravno Dual EC DRBG, ki uporablja drugačne matematične metode. Ta je bil že od začetka čuden, saj je tisočkrat počasnejši od ostalih treh, kar je sprejemljivo le, če imamo dokaze in argumente, da to poveča varnost. Pa jih nimamo. Avtoriteta na področju računalniške varnosti Bruce Schneier je bil že leta 2007 kritičen do tega algoritma. Podrobna analiza pa sedaj kaže, da ima algoritem številne pomanjkljivosti in ranljivosti – med njimi je celo nekaj konstant, ki se pojavijo v standardu, pa nikjer ne piše, zakaj ravno te, kar je znak za velik alarm – zaradi česar je neuporaben za svoj namen.
NIST je že 9. septembra letos dejal, da bodo ponovno začeli javno razpravo o SP 800-90A, hkrati pa odsvetoval uporabo Dual EC DRBG. Dan pozneje je Snowden razkril, da ranljivosti v standardu niso naključne, ampak so tam zaradi NSA. Ta teden je RSA kot prvo podjetje odsvetovalo uporabo lastnih izdelkov, ki uporabljajo ta algoritem. Kje vse ga še najdemo, ni znano, je pa dostopen seznam programske opreme, ki jo je odobril NIST, skupaj z uporabljenimi algoritmi.
Maslo na glavi imajo v tej zgodbi vsi. NSA je seveda glavni krivec, saj so zmanipulirali standard, ki je namerno oslabljen, da ga lažje razbijejo. A tudi proizvajalci programske opreme niso nedolžne ovce, saj je bilo že najpozneje leta 2007 kristalno jasno, da z Dual EC DRBG ni vse tako, kot bi moralo biti. Šifriranje je namreč občutljiv posel, kjer je dokazno breme obrnjeno. Ni treba dokazovati, da ima algoritem ranljivosti, ampak bi moral biti dovolj že sum, posredni indici, preveliko število naključij, čudne in nepojasnjene konstante v implementaciji ali zgolj slab občutek, da bi standard odromal na smetišče zgodovine. In obratno, vsakokrat potrebujemo trdne matematične dokaze, da je algoritem dober. V tem primeru je bilo kazalcev več kot dovolj, a je Dual EC DRBG vseeno postal privzeti algoritem marsikod.
Matematične podrobnosti delovanja algoritma: http://blog.cryptographyengineering.com/2013/09/the-many-flaws-of-dualecdrbg.html