Pereiti prie turinio

Galios analizės ataka

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Procesoriaus galios svyravimai RSA rakto dekodavimo metu. Kairysis pikas – dekodavimo ciklo žingsnis be daugybos operacijos (trumpesnis), dešinysis – su daugybos operacija. Daugybos operacija atliekama tik jei toje rakto pozicijoje yra vienetas, taigi iš kairės į dešinę galima skaityti rakto bitus: nulis, vienas. Taigi šiam pasenusiam algoritmui galima net ir paprasta (ne skirtuminė) ataka

Galios analizės ataka (angl. power analysis) yra bandymas sužinoti kompiuterio raktą ar slaptažodį bandant įvairius slaptažodžius bei tuo pat metu tiksliai, dideliu greičiu matuojant, kaip kinta prietaiso suvartojama elektros srovė. Srovė paprastai matuojama skaitmeniniu osciloskopu, tyrimams ir studijoms galima įsigyti ir specialią įrangą.[1] Galios ataka neretai nelegaliai naudojama mokamos televizijos dekodavimo moduliams atrakinti.[2] Ataka pirmąkart aprašyta 1998 m. Tai viena iš daugelio galimų šoninio kanalo atakų.

Paprasto procesoriaus suvartojama galia laikui bėgant nėra vienoda; ji keičiasi priklausomai nuo to, kokios komandos tuo metu vykdomos. Pavyzdžiui, daugiau galios gali būti suvartojama vykdant daugybos operaciją, kuomet aktyviai dirba daugiau loginių elementų nei atliekant, tarkim, sudėtį. Todėl procesoriaus galios suvartojimo kreivė yra savotiškas „kodo parašas“, kažkiek pasakantis, kokios komandos buvo vykdomos.

Jei programa parašyta kriptografiniu požiūriu neprofesionaliai, reakcijos į visai klaidingą slaptažodį „kodo parašas“ gali skirtis nuo reakcijos į slaptažodį, kuriame vienas ar keli simboliai, ar bitai atitinka. Taip atpažinus dalinai teisingą slaptažodį, jį galima toliau kaitalioti, kol vėl pastebimi nauji skirtumai, rodantys, jog dabar atitinka jau didesnė dalis. Taip pamažu bitas po bito galima nustatyti ir visą raktą.

Norint atlikti šią ataką, būtina galėti labai tiksliai matuoti procesoriaus suvartojamą galingumą. Tą padaryti lengviau kreditinei kortelei ar kitam panašiam prietaisui ir nėra paprasta saugykloje nuo pašalinių apsaugotam serveriui. Ataką lengviau surengti, jei slaptažodį galima siūlyti neribotą kiekį kartų, arba jei kodo parašą galima palyginti su parašu kito lygiai tokio pat prietaiso, kurio kodas žinomas. Tokia lyginamoji galios ataka vadinama skirtumine (angl. differential).[3] Nustatyti raktą iš vieno „kodo parašo“ (paprasta ataka) daug sunkiau, nors gerai žinant prietaisą bei naudojamą algoritmą, geram specialistui kai kada gali būti ir įmanoma.

Šią ataką labai apsunkina speciali elektronika ir gerai apgalvoti algoritmai, parengti taip jog klaidingo ir teisingo rakto atveju vykdoma komandų seka žymiai ar ir visai nesiskirtų (skiriasi tik apdorojami duomenys), ribojant bandymų skaičių, neleidžiant tiesiogiai matuoti suvartojamos srovės (prietaisą maitinti galima per nesudėtingą filtrą, kuris išlygina srovės suvartojimą). Kartais pridedami papildomi elementai, kurie persijungia neatlikdami jokios funkcijos vien tam, jog nesikeistų bendra galia. Naujesni procesoriai turi specialias, gerai apgalvotas kriptografines komandas.[4]

Jei programuojant buvo naudoti teisingi algoritmai, galios ataką atlikti gali ir nebūti paprasta. Šios atakos galimybė yra priežastis gerai saugoti įvairias korteles ir kitus panašius prietaisus, deaktyvuoti pamestus, net jei ir yra papildomai apsaugoti slaptažodžiais.

  1. [1] http://www.cryptography.com/technology/dpa/workstation.html
  2. [2] Archyvuota kopija 2002-11-13 iš Library of Congress http://www.hackhu.com Archyvuota kopija 2002-11-13 iš Library of Congress
  3. P. Kocher, J. Jaffe, B. Jun, "Differential Power Analysis, " technical report, 1998; later published in Advances in Cryptology – Crypto 99 Proceedings, Lecture Notes In Computer Science Vol. 1666, M. Wiener, ed., Springer-Verlag, 1999.
  4. Intel AES komandų apžvalga