Friday, April 16, 2010

Krüptograafia

Hiljuti jäi raamatukogus pihku "Code Book" nimeline raamat. Nagu sisekaanel mainitud annab see infot salakirja ajaloost, koostamisest ja lahtimuukimisest. Ajalugu esimestest (üllatavalt lihtsatest aga geniaalseist ideedest) kuni tänapäevase moodsa krüptograafiani. Minule kõige üllatavamaks on fakt, et ala, mida pidasin üksikute geeniuste pärusmaaks põhineb lihtsatel alustel, millest saab aru ka keskoolimatemaatikat tundes. Koodi koostamine on suht lihtne kuid lahtimurdmine keeruline ja tugevamate šifrite puhul lausa võimatu.

Salakirjad jagunevad laias laastus transpositsioonil ja substitutsioonil põhinevaiks. Esimese puhul lihtsalt vahetatakse tähtede asukohad tekstis, teise puhul asendatakse originaaltähed teistega teatud salajase valemi alusel. Näiteks Ceasar kasutas lihtsat lineaarset tähestiku nihutust asendades iga originaalse tähe temast kolm positsiooni edasi jäävaga (SIGA = VLJD). Selline on lihtsalt lahti murtav tuima katsetamise teel. Järgmine samm oli kasutada kas keerulisemat valemit või eelnevalt kokkulepitud täheasendusi. Et võimalikke variante oli 4 x 10 astmes 26 peeti seda lahtimurdmatuks.

Aga võta näpust, araablased nuputasid juba 6 sajandil välja statistilisel analüüsil põhineva koodi lahtimurdmise tehnika. Nimelt on igas keeles tähtede kasutustihedus kindlalt määratud ja piisavalt pika teksti korral suhteliselt lihtsalt lahendatav. Lisaks teatud tähtede asetused teineteise suhtes, teatud kaksiktähtede esinemine ... j.n.e. Kui selgus, et sellist tüüpi kood pole sugugi kindel lisati juurde märke, mis tähendasid teatud koodsõnu või mis ei tähendanud midagi, et dešifreerijat segadusse ajada. Need trikid tegid küll koodi murdmise raskemaks, kuid ei muutnud seda palju kindlamaks kuna alati vastas ühele tähele mingi kindel teine täht või märk.

Ja siis astuti järgmine loogiline samm - selleks, et muuta statistilise analüüsi kasutamine "võimatuks" oli lihtsalt vaja kasutada sama tähe esitamiseks erinevaid sümboleid. Lihtsaima ja lollikindlaima lahenduse peale tuli kuueteistkümnenda sajandi keskel prantslane Blaise de Vigenere - Vigenere šiffer. Kodeerimiseks ja lahtikodeerimiseks on vaja vaid teada tähestikku (moodustada Vigenere ruut - tähed järjestikku reas ja iga järgmine rida nihutatud ühe tähe võrra) ning koodsõna. Koodsõna tähed määravad ära rea, mille alusel teksti šifreerid ja avad. Koodsõna teadmata paistis see meetod olevat praktiliselt lahtimurdmatu, sest sama tähe kujutamiseks kasutati erinevaid tähti.

Paraku suutis Inglane Babbage selle šifri murda 19'da sajandi keskel. Selgus, et tänu koodsõna lühidusele võrreldes tekstiga tekkisid süstemaatilised kordused, mida analüüsides oli tihtipeale võimalik sõnumit avada. Esimeseks ülesandeks oli koodsõna pikkuse väljaselgitamine (see andis infi kui tihti kindlat tähte asendati teise kindla tähega) ja peale seda sai rakendada statistilist analüüsi. Nüüd küll tublisti keerulisem, sest tõnäosused jagunesid palju ühtlasemalt kuid siiski lahendatav. Avalikkus sellest teada ei saanud, sest inglased hoidsid avastust saladusena kasutades Venelaste vastu Krimmi sõjas.

Kahekümnenda sajandi alguseks oli selge, et vanamoodi enam ei saa, šifrid olid lahtimurtavad vaatamata korduvatele jõupingutustele, neid keerulisemaks muuta. Nii sündis sakslaste kuulus Enigma šifreerimismasin, mis muutis nii kodeerimise kui lahtikodeerimise automaatseks. Põhimõte oli sama, mis Vigenere puhul, kuid automatiseeritus ja mitme šifferketta kasutamine muutis kasutatavate eri-alfabeetide arvu nii suureks, et statistilise analüüsi kasutamine paistis võimatuna. Võtmeks oli šifferketaste asend teksti saatmise alguses. Lahtišifreerimine oli seega võimalik vaid juhul kui vaenlasel on nii masin kui võti. Peale paari lisatrikki nagu reflektori ja kontakt plaadi lisamist ning ketaste vahetatavaks muutmist peeti seda šifrit lahtimurdmatuks.

1926 avastasid britid oma ehmatuseks, et vaatamata kõigile pingutustele ei suuda nad enam sakslaste kirju lugeda. Lühikese ajaga andsid ka prantslased ja ameeriklased alla. Aga Poolakatel vedas, neil õnnestus kasutada süsteemi ainust nõrkust - sakslasest reeturit, kes müüs maha nii masina ehituse dokumendid kui ka varustas poolakaid igapäevaste koodidega. Muidugi tuleb tunnistada, et poolakatel olid väga võimekad mehed asjaga tegelemas ning lõpuks suutsid nad sakslaste teateid lugeda. Sõja käiku see algul siiski ei mõjutanud, sest Poola sõjavägi lihtsalt ei pidanud vastu. Kuid Poolakail õnnestus oma koodimasinad ja info inglastele üle anda, kes sellest ajast peale hakkasid saksa šifreeritud tekste lugema. On avaldatud arvamusi, et tänu koodi murdmisele saavutasid liitlased võidu mitu aastat varem kui muidu.

Kõrvalsammuna oli ka juttu teisest huvitavast trikist, mida ameeriklased edukalt kasutasid. Nimelt kui sa keelt ei oska pole šifreerimisoskusest kasu. Navaho keelel põhinevat laevastiku koodi ei suutnud jaapanlased kunagi murda ehkki õhujõudude koodist olid suht lihtsalt aru saanud. See ka põhjuseks, miks kadunud rahvaste ja kultuuride kirja on nii raske mõista kui pole kedagi, kes oskaks seda keelt rääkida.

Lõpuks juttu moodsatest šifritest, mis teevad peavalu valitsustele, sest neid on kodanikel nii lihtne kasutada ja valitsustel pea võimatu murda. Kõige aluseks on matemaatilised asümmeetrilised funktsioonid mida lihtne teha ühte pidi aga oluliselt raskem teist pidi. Näiteks suurte algarvude korrutamine on lihtne kuid korrutisest nende algarvude leidmine väga tülikas ja aeganõudev. Põhimõtteliselt kodeerimine toimubki avaliku võtme ehk korrutise abil kuid lahti saab kodeerida teadet vaid enda algarvust salanumbri abil, mida korrutisest on võimatu leida kui arvud piisavalt suured. Seda kutsutaksegi RSA šifriks.

Momendil saab taolist šifreerimissüsteemi kasutada tasuta ka tavaline kodanik läbi terve hulga erinevate süsteemide (nagu PGP, GPG, ...) Valitsusi ajab see närvi, sest enam pole võimalik pealt kuulata. Kodeerimist on proovitud lausa ära keelata aga seni pole õnneks läinud. Kokkuvõttes on momendil peale jäänud salakirja kirjutajad aga lahtimuukijad töötavad innukalt kuid senini suurema eduta kvantarvuti kallal, millega oleks võimalik ka RSA tüüpi koode murda.

No comments:

Post a Comment