Elektroninės prekybos pasaulyje galima būti arba labai patikliam,
arba labai kvailam. Iš kur galite žinoti,
ar tinklapis, kuriame užsisakote knygą
ar kompaktinę plokštelę, neteisėtai
nepasinaudos jam nusiųstu jūsų
kredito kortelės numeriu? Net ir tuomet, kai sumanėte pasiimti grynus pinigus,
ar galite būti įsitikinę, kad kas nors
nėra prisijungęs prie bankomato, nekopijuoja klientų PIN kodų ir
nesiruošia klonuoti atsiskaitymo kortelių?
Daugeliu atvejų galima save raminti tuo, kad šiuos sandorius
saugo kodavimas - įvairūs matematiniai
triukai, neleidžiantys jūsų informacijos
iššifruoti tiems, kuriems ji nepriklauso. Duomenims kodavimas yra tas
pat, kas seifui stipri ir patikima spyna - pati stipriausia gynybos barikada.
Kodavimas leidžia bet kada ir bet kur pasiekti savo duomenis, likusiai
pasaulio daliai neleisdamas kišti nosies ten, kur nereikia.
Todėl tikrai gali šokiruoti
faktas, kad žmonės, kurie tvirtina
duomenų kodavimo standartus, toli gražu
nėra įsitikinę jų saugumu. Metų
pradžioje svarbiausia Europos Sąjungoje
kriptografija užsiimanti institucija, NESSIE
(New European Schemes for Signatures - naujos europinės,
[elektroniniams] parašams skirtos schemos) paskelbė ilgai lauktą patvirtintų
kriptografijos metodų sąrašą, į kurį
įtraukti tokie duomenų kodavimo būdai,
kuriuos komitetas laiko pakankamai patikimais, kad juos būtų galima
naudoti kasdien. Sąrašo pradžioje rasime
du vadinamuosius 128 bitų kodus: AES (Advanced Encryption
Standard - tobulesnis kodavimo standartas) ir
japonų kodą, vadinamą Camellia.
Tačiau NESSIE ataskaitoje pastebėsime ir menkai paslėptą susirūpinimo
gaidelę: "Daug NESSIE partnerių
reiškia abejones, ar paprasta algebrinė AES ir, kiek mažesniu mastu,
Camellia sandara ateityje nenulems šių
kodų iššifravimo". Kitais žodžiais
tariant, niekas negali pasakyti, ar ilgai tie kodai dar bus saugūs.
Ypač apmaudu turėtų būti
JAV vyriausybės Nacionaliniam
standartų ir technologijų institutui (NIST),
nes 2000 m. pabaigoje jis sertifikavo AES kaip patvirtintą kriptografijos
būdą, naudotiną visiems sandoriams
tarp JAV vyriausybės ir privačių jos
partnerių. Atrodė, kad toks
pripažinimas suteiks AES milžinišką
pranašumą programinės kodavimo įrangos,
kuria milijonai žmonių kasdien
naudojasi elektroninėje komercijoje ir
siųsdami duomenis kompanijų vidaus
tinklais, rinkoje. Išties, praėjusių metų
spalio mėnesį Microsoft užregistravo savo
pačių sukurtą, tinklams skirtą
programą, kuri naudoja AES pagrįstą
kodavimą. Kas gali nepavykti, kai tave remia
ir JAV vyriausybė, ir Microsoft? Pasirodo, kad gali daug kas.
Pavojaus signalai pasigirdo praėjusių metų rugpjūtį, nepraėjus
nei dvejiems metams po to, kai NIST oficialiai pasirinko AES. "AES gali
pavykti nulaužti... arba gali nepavykti... panikai dar nėra pagrindo. Kol
kas. Bet toks pagrindas gali netrukus atsirasti. Gal būt". Šiuos žodžius
parašęs plačiai skaitomo saugos
tematikos žurnalo "Crypto-Gram"
redaktorius Bruce Schneieris sukėlė
kriptografijos pasaulėlyje nemažą sumaištį.
Viskas prasidėjo nuo 31 m. kriptografo, dirbančio firmai
Schlumberger-Sema, kuri gamina elektronines bankų
korteles. Nicolas Courtois atskleidė, kaip galima pulti AES saugomą sistemą.
Courtois, kuris dirbo kartu su Josefu Pieprzyku iš Macquarie
universiteto Sidnėjuje (Australija),
sumąstė visiškai naują užpuolimo būdą,
kurio AES kūrėjai paprasčiausiai nebuvo
iš anksto numatę. Dėl to netrukus
kilo labai karšti ir kartais ne visai korektiški debatai. Nors AES gal ir
išgyventų po tokios naujoviškos atakos, ši
nelaukta užpuolimo strategija gali duoti pavojingų rezultatų. "Žmonės
visame pasaulyje dabar dirba, tobulindami šią strategiją", - sako Larsas
Knudsenas iš Danijos technikos universiteto. "Jau vien tai yra tikras ženklas,
kad čia kažkas yra". AES, kuri buvo
kuriama šimtmečiui, gali tapti lavonu
nepraėjus ir dešimčiai metų.
Ko gero, labai stebėtis nereikėtų. Įrodomai saugaus ir tuo pat
metu tinkamo naudoti šifro sukūrimas visada buvo rimta problema. Pats
AES buvo tam tikro prieštaravimo pasekmė. Dar aštuntajame
dešimtmetyje NIST (tuomet vadinama
Nacionaliniu standartų biuru) suvokė vieningo
kodavimo būdo, kurį naudotų visos
su vyriausybe kontraktus sudariusios firmos, reikalingumą. Tada NIST
nutarė nesikreipti dėl šifro sukūrimo į
slapukę Nacionalinę saugumo
agentūrą, o paskelbė konkursą, kuriame
galėjo dalyvauti ir privačios kampanijos.
Atsiliepė IBM, kuri sukūrė
skaitmeninį kodavimo standartą DES
(Digital Encryption Standard).
Skirtingai nuo "viešojo rakto"
sistemų, sukėlusių revoliuciją
minimo dešimtmečio pabaigoje, DES
remiasi senamadišku "simetriško rakto"
šifru. Tai reiškia, kad ir žinutės siuntėjas,
ir gavėjas šifruodami ir dešifruodami
žinutę naudojasi tuo pačiu raktu -
lygiai taip pat, kaip tai buvo daroma dar Julijaus Cezario laikais. Aišku,
kriptografija nuo antikos laikų gerokai pažengė į priekį. Naudojant
primityvų šifrą, žinutė yra koduojama raidė
po raidės, o DES atveju koduojamoji žinutė buvo skaidoma į 64 bitų
blokus. Sekant principais, suformuluotais dar kriptografijos pionieriaus
Claude Shannono, DES veikia naudodamas "maišymą" su "sklaidymu".
Maišymas pasireiškia tuo, jog kai kurie
žinutės bitai yra pakeičiami netikrais,
kaip klasikiniame šifre; sklaidymas šią
gudrybę perkelia visiems 64 bitams, pavyzdžiui, sumaišant jų seką.
Rimti kriptografai nuo pat pradžių tvirtino, kad slaptųjų raktų
(tai yra, instrukcijų, paaiškinančių,
kaip reikia atlikti DES koduojamų duomenų maišymą ir sklaidymą) ilgis yra
nepakankamas. Juos tesudarė vos 56 bitai, o tai reiškė, kad iš viso buvo
galima sugalvoti tik 256 (apytikriai 72
milijonus milijardų) skirtingų raktų.
Taigi, priešininkas galėjo iššifruoti
žinutę pasitelkęs vien tik grubią jėgą,
bandydamas vieną raktą po kito, kol
pagaliau neišvys prasmingo teksto. Aštuntajame dešimtmetyje toks
darbas dar viršijo kompiuterių galimybes,
bet dešimtajame dešimtmetyje jau ne. Mirties nuosprendis DES
nuskambėjo 1998 m., kai San Franciske
įsikūrusi ne pelno organizacija,
pasivadinusi Electronic Frontier Foundation,
sukūrė demonstracinį įrenginį -
DES Cracker (DES smulkintuvą), sugebantį
per kelias dienas iššifruoti bet kokią
DES užkoduotą žinutę.
Bet ir anksčiau vartotojai, kuriems itin rūpėjo jų duomenų
sauga, pradėjo naudoti "trigubą DES",
kai žinutė yra koduojama trimis skirtingais raktais. Trigubas DES buvo
pakankamai saugus vartojant jį vienąkart, bet trumpi, 64 bitų ilgio
blokai sąlygojo kitą problemą. Jeigu
tenka tuo pačiu raktu ar tuo pačiu raktų
rinkiniu koduoti daugiau kaip 232 duomenų blokų (apie 4 milijardus),
tikimybė, kad toks pat blokas pasikartos du kartus, labai padidėja - o tuo
pačiu ir pavojus, kad gali atsiskleisti informacija apie bandomus
apsaugoti duomenis. Kuo ilgesni bus duomenų blokai, tuo mažesnė tikimybė, kad
taip atsitiks.
Taigi, 1997 m. NIST paskelbė konkursą Modernaus duomenų
kodavimo standarto - šifro, kuris
naudotų ilgesnius 128 bitų duomenų blokus
ir turėtų 128, 192 arba 256 bitų ilgio
raktus - sukūrimui. (Verta pastebėti,
kad rakto pailginimas vienu vieninteliu bitu padvigubina jo saugumą,
pridėjus dar vieną bitą, saugumas dar
padvigubėja, ir taip toliau.) Universalaus šifro, kuris būtų naudojamas
dešimtmečius, sukūrimo prestižui
kriptografai negalėjo atsispirti - netgi jei
prisiminsime, kad dalyvaudami konkurse jie turėjo atsisakyti bet kokių
pretenzijų į savo kūrinio patentavimą
ateityje. "Tikrasis konkurso laimėtojas
buvo NIST", - sako Knudsenas, vienas iš penkių finalinio turo dalyvių,
sukūręs šifrą, pavadintą Serpent.
"Geriausi pasaulio kriptografai veltui dirbo jiems trejus ketverius metus".
2000 m. NIST paskelbė nugalėtoją. AES tapo Belgijos
kriptografų Vincento Rijmeno ir Joano Daemeno sukurtas algoritmas Rijndael.
Matematikos puristai džiūgavo, nes Rijndael buvo labai elegantiškas
šifras, veikęs kur kas sparčiau už kitus
finalo dalyvius. Tačiau saugos ekspertai liko kiek nustebę. Nors visos
penkios finale dalyvavusios programos buvo neįveikiamos žinomais šifrų
atskleidimo būdais, būtent Rijndael šiuo
požiūriu buvo laikomas silpniausiu
iš penkių.
Dabar paaiškėjo, kad šios
abejonės nebuvo nepagrįstos. Courtois
ir Pieprzykas netvirtina sulaužę AES taip, kaip DES Cracker sulaužė
DES. Žinutė ar net visas kietasis diskas,
užkoduotas naudojant AES, vis dar yra pakankamai saugūs, bet plyšelis
saugos šarvuose jau aptiktas.
Debatuose garsiai neišsakyta AES garantija buvo tai, kad
priešininkui, siekiančiam prasibrauti prie
užkoduotos jūsų informacijos, tektų
patikrinti 2128 raktų - tai būtų protu
nesuvokiamas darbas. Net jei jam pavyktų sujungti kartu visus pasaulio
kompiuterius, dešifravimas vis tiek
užtruktų trilijonų trilijonus metų.
Jeigu Courtois ir Pieprzykas neklysta, nenaudėliui jau tektų patikrinti
2100 raktų. Tiesa, šis skaičius irgi yra
milžiniškas ir darbas užtruktų ilgiau, negu
gyvuoja Visata, bet saugos lygis nebebus toks, kokį žadėjo AES kūrėjai.
Atsiradus spartesniems kompiuteriams arba dar patobulinus Courtois
ir Pieprzyko procedūrą, garsusis AES gali pasidaryti bevertis.
"Kriptografija privalo saugoti duomenis ne tik
dabar, bet ir nuo bet kokių
iššifravimo bandymų ateityje", - sako
Coutois. "Būtent dėl to dabartinės AES
versijos gali tekti atsisakyti". Bet jis nemano, kad tai įvyks tuojau pat. "AES
saugos laipsnio pakaks dar 5-10 metų".
NIST ekspertai nekalba apie jokius terminus, bet jau pradėjo
atidžiai stebėti įvykius. NIST rizikuoja
prarasti daugiau negu europinis NESSIE komitetas, nes išsirinko tiktai vieną
nugalėtoją ir visi JAV vyriausybei priklausantys kompiuteriai naudoja
to paties tipo saugos sistemą. Jeigu paaiškėtų, kad AES yra iššifruotas,
tai būtų dar viena gera pamoka, kad
niekad negalima laikyti visų kiaušinių
vienoje kraitelėje.
Taigi, kaip Courtois pavyko sukelti tokį sąmyšį? AES kūrėjai
padarė jį atsparų dviejų rūšių atakoms.
Pirmosios, vadinamos diferencine kriptoanalize, esmė - šifro
bombardavims daugybe beveik identiškų tekstų.
Šifras sugrąžina juos atgal jau
užkoduotus, o iš to, kaip šie užkoduoti
tekstai skiriasi vienas nuo kito, galima
sužinoti, kaip šifras veikia. Antros
rūšies atakose, vadinamose tiesiška
kriptoanalize, pasinaudota idėja, kad
"maišomoji" šifro dalis gali būti grubiai
pamėgdžiojama naudojant kitą, ne
tokią maišančią matematikos procedūrą
- vadinamąją tiesišką funkciją.
Ir AES šifras, ir Courtois ir Pieprzyko pasiūlytas jo užpuolimo būdas
remiasi "baigtinių laukų" matematika
- alternatyviu matematinių taisyklių rinkiniu, pritaikytu
kompiuteriuose naudojamai dvinarei sistemai.
Paprasčiausiame iš baigtinių laukų yra vos
du skaičiai: 0 ir 1. Galima manyti, kad jie simbolizuoja "lyginius" ir
"nelyginius" skaičius. Šiame lauke galiojančios
aritmetikos taisyklės yra labai paprastos: 0+0=0, 0+1=1, 1+1=0 (nes
nelyginis + nelyginis = lyginiam). Panašios taisyklės galios ir daugybai. AES
šifre naudojamas laukas yra kiek sudėtingesnis, jame yra 256 skaitmenys,
surašyti iš aštuonių bitų
sudarytomis grandinėlėmis
(pavyzdžiui, 00110101).
Silpniausia, anot Courtois ir Pieprzyko, AES vieta yra
"pakaitos" arba "S-dėžutė". Shannono
skirstyme į maišymą ir sklaidymą, ji atitiktų
maišymo dalį. AES ima 128 bitų
ilgio skaitmeninio teksto grandinėlę,
sukapoja ją į gabalus po aštuonis bitus
ir kiekvieną gabalą paverčia jį
simbolizuojančiu naudojamo baigtinio lauko skaičiumi. Tegu pradiniai
duomenys yra X, o užkoduoti Y. Naudodama tame lauke galiojančias aritmetikos
taisykles, S-dėžutė suskaičiuoja Y
(Y=1/X). Po to Y yra sumaišomas su kitų
8 bitų ilgio gabalų apdorojimo
rezultatais - sklaidymo procesas - ir visa tai pakartojama 10 kartų. Procesas
primena kopūstų kapojimą ir
maišymą ruošiant salotas, tik retkarčiais
S-dėžutė atsitiktinai pakeičia dalį
kopūstų morkomis (arba atvirkščiai).
Bet kadangi Rijmenas ir Daemenas bandė apsaugoti savąjį kodą
nuo labiausiai paplitusių ir pačių
pavojingiausių puolimo būdų, jie,
Courtois manymu, to nenorėdami sukūrė
S-dėžutę, kurios atliekami
skaičiavimai kartojo tam tikrą šabloną. Tarsi
atkakliai stengtumėtės būti
nenuspėjamu, kol galiausiai pasidarytumėte
visiškai nuspėjamas. Pavyzdžiui,
padauginus abi lygybės puses iš X gaunama
X2Y=X. Atrodo panašiai, bet tai jau nėra ta pati išraiška. Pradėjus
įstatinėti vienetus ir nulius, atsiras
papildomi ryšiai tarp X bitų ir Y bitų,
kurių nebuvo pradinėje išraiškoje ir
kurie nebuvo numatyti AES kūrėjų.
Tai ir yra toji "paprasta algebrinė
sandara", sukėlusi NESSIE konsorciumo susirūpinimą. Šie ryšiai leidžia iš
užkoduotosios žinutės Y bitų
numatyti, kaip atrodo pradinės žinutės X
bitai. Kuo daugiau atsiras panašių ryšių,
tuo lengviau įveikiamas bus pats šifras.
Courtois sako, kad AES naudojamoje S-dėžutėje yra tiek daug
panašių ryšių, kad jie gerokai sumažina
šifro saugumą. Tiesa, jį įveikti nebus
labai paprasta: Courtois vertinimu, tam reiktų išspręsti 8000 lygčių,
sudarytų iš 1600 įvairių X ir Y kombinacijų,
bet tai vis tiek galima padaryti kur kas greičiau, negu bandant netyčia
atspėti slaptąjį raktą.
Nors niekas perdaug neginčija šių papildomų ryšių buvimo,
kritikai sako, jog Courtois ir Pieprzykas neįvertino laiko, reikalingo
minėtųjų 8000 lygčių sprendimui. Jie
tvirtina, kad tai užtruks gerokai ilgiau.
Rijmenas, o kartu su juo ir daugelis pramonėje dirbančių profesionalų,
spinduliuoja olimpinę ramybę. "Nėra
jokio pagrindo nerimui", - sako jis.
Kiti nėra tokie tikri. Brisbeno universitete Australijoje
dirbantis kriptografas Billas Millanas sako nebuvęs nustebintas AES šifro
pažeidžiamumo. "Manau, kad
egzistuoja daug daugiau AES užpuolimo
būdų, negu iki šiol buvo aprašyta
literatūroje". Tiktai laikas ir papildomi
tyrimai pasakys, kas yra teisus.
"Neįsivaizduoju, ką dar galėtume dabar padaryti,
be stebėjimo", - sako Burras iš NIST.
Schneieris į tai žiūri
filosofiškai. Nors niekas nenumatė šios
diskusijos dėl AES saugumo, nereikia pernelyg stebėtis, kad kažkas sugalvojo tokį
būdą, apie kurį tenka rimtai pagalvoti,
- sako jis. Tokia yra šiandieninės kriptografijos realybė. "Visuomenė
sukuria algoritmus, kurie yra apsaugoti nuo tuo metu žinomų įsilaužimo
būdų, bet ilgainiui atsiranda nauji
ginklai ir kai kurie iš tų algoritmų
įveikiami", - rašo jis žurnale
Crypto-Gram. Svarbu suvokti, sako Schreieris, kad niekas nebegali būti
įsitikinęs, kad naujas šifras ilgai bus saugus.
Jis mano, jog gyvename tokiame amžiuje, kai niekas negali pasakyti, ar
puolimas pavojingas, ar ne. Puolimo būdai pasidarė tokie sudėtingi ir
naudoja tokius galingus kompiuterius, kad mums jau nebepakanka
procesorių pajėgumų išsamiai jų analizei.
Taigi, NIST, Microsoft ir bet kas kitas, naudojantis AES, dabar
nebežino nieko tikro apie savąją saugos
sistemą. Gali būti, kad AES bus
galima pasitikėti ir iki pat šio šimtmečio
pabaigos. Kita vertus, niekas negarantuoja, kad jis nebus nulaužtas dar
šiame dešimtmetyje. NIST sako, kad paaiškėjus rimtesniems AES
trūkumams, jis pasiryžęs kaip
atsarginius pradėti naudoti Camellia ir
Serpent šifrus. Bet jie taip pat yra
pažeidžiami Courtois ir Pieprzyko atrastos
užpuolimų strategijos požiūriu.
Reikia skelbti naują konkursą ir visą
ilgai trunkantį procesą pradėti iš naujo.