SekoKrypt

Edellinen Seuraava

JBA-sivustolla kun on Agenda, joka käsittelee salakirjoitusta, kuten Salaiselle Agentille sopii, niin välillä täytyy galleriaan tuottaa myös salaukseen liittyvää sisältöä. Tämä ei kuitenkaan ole mikään Höpökrypt vaikka lopputuloksen halutaankin näyttävän samalta.

Edellä haaveilin "salakirjoitusmenetelmästä joka mahdollistaa edes jonkinlaisen tietoturvan verkkoon kytketyissä tietokoneissa." Millainen se voisi olla, sitä pohdin tässä.

Korostan että tämä ei ole varmuudella kryptograafisesti vahva menetelmä. Vain lyhyitä tekstejä kryptataan, esim. joitakin avainsanoja. Tarkoitus on lähinnä suojautua satunnaiselta "olkapään yli kurkistelijalta" ja henkilöltä joka voi verkon kautta seurata sekä tietokoneen näyttöä että näppäimistöä, vaikka ei olekaan seurattavan tietokoneen vieressä fyysisesti. Oikeaa kryptoanalyysiä menetelmä ei välttämättä kestä.

Mietintämyssy
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
J K L D U X M N O Y Z V W E I P Q A F G H B C R S T
1 7 ii ij ik ka uk mi na en at la bu ai äi öl he et ja po er su wk zi fa ss öi qu 3 0
2 3 nam ert op kk öö aa ee tun saa hot kaa haa pei gg mun hat qw i d sen tuo zu bt åå cc xy 9 9
3 3 71 69 88 41 31 28 45 53 90 93 67 77 11 00 99 13 76 60 84 33 07 32 26 29 75 16 6 8
4 9 V D C T Y X W Q P O S R Z N B A U M H G L K J I F E 7 7
5 4 R S T A W X K L P Q Y B F G H I J U V C D M N O E Z 1 6
6 1 F E U T Q D X W V P O N M S R I H G C Z Y B A L K J 3 5
7 8 E K L A B M F S T U J N O P Q C D X Y Z G H I R V W 5 4
8 0 Ä Ö Å Ü Z W V F E X T S P O N A D M L R Q K J C U Y 8 3
9 5 ge br es 12 sel 94 α β γ δ ε ζ η ο ω π ρ £ © X Y Z 1 2
0 2 yy upa abc na hh uu yy al kai da sad dam hus se in haf al as s ad li by an gad daf fi 8 1
N M U Z Y X Q P J I H O G F E D L W V K C B T S R A
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

Menetelmä ei ole valmis, tämä on vain pohdintaa millainen se voisi olla. Tässä esitetty taulukko ei ole menetelmän lopullinen taulukko, se on vain "taideteos" joka auttaa miettimään mikä olisi käytännöllistä ja silti kyllin turvallista. Taulukkoja olisi useita erilaisia netissä vapaasti saatavissa. Huomiotaherättämättömiä tummahkoja taulukoita pienellä fontilla jota voi lukea vain läheltä.


Ehkä havainnollisuuden vuoksi ensin demonstroin mikä olisi turvallista jos reunaehdot olisivat erilaiset ... ja miten tuollainen muuttuu täysin turvattomaksi tietokoneverkossa.

Jos hyökkääjä näkisi vain lopullisen tuloksen, ei sitä miten se syntyy, niin aidolla OTP-kerta-avaimella tuotettu teksti olisi 100% turvallinen (jos tekstin pituus tai muut seikat eivät paljasta sisältöä). Se voisi syntyä esim. niin että kirjoittaja saa näyttöönsä pienen apuikkunan jossa hän avaimen osa kerrallaan valitsee selvätekstin merkkiä vastaavan kryptatun merkin ja kirjoittaa sen esim. sähköpostiinsa. Apuikkunan sisältö olisi erilainen jokaiselle erilaiselle avaimen osalle.

Tuo toteutus kuitenkin hajoaa täysin jos joku voi seurata samanaikaisesti näytössä olevaa apuikkunaa ja näppäimistöltä painettua näppäintä, tai ehkä jopa tallentaa tämän yhdistelmän myöhempää analyysia varten.

Esimerkki, yhden merkin kryptaus
selvätekstin merkki A B C D E F G H I J K L M N O P Q R S T U V X Y Z
vastaava koodattu merkki D E F G H I J K L M N O P Q R S T U V X Y Z A B C

Esimerkiksi seitsemännen salattavan merkin kohdalla kirjoittajan näytöllä apuikkunassa näkyy avaimen AKRABADAKRA seitsemättä osaa eli kirjainta D vastaava muunnos selvätekstin ja kryptogrammin välillä (muille osille muunnos on luultavasti erilainen). Salakatselija näkee kirjoittajan valitsevan kirjaimen S. Valittua kirjainta vastaava selvätekstin merkki hänen on helppo löytää apuikkunasta, se voi olla vain P. Salakatselijan ei edes tarvitse tietää avainta jos hän voi havainnon avulla päätellä selvätekstin ja kryptogrammin merkkien vastaavuuden.


Voiko se olla näin turvatonta! Mutta hetkinen ... onhan olemassa vahvoja salausmenetelmiä, kuten AES! Eikö se pelasta tietokoneverkossa tai muiden havaintojen piirissä kirjoittelevan henkilömme tietoturvaa?

Ei.

Yksityisyytensä suhteen valveutuva henkilö voi esim. sähköpostissa käyttää vahvaa salausta salatakseen näytölle kirjoittamansa selvätekstin. Nyt on vaan niin ikävästi että ensin hän kirjoittaa sen selvätekstin ihan normaalisti. Noh, silloin hänen vakoilijansa pääsee vielä helpommalla, tarvitsee vain kaapata tuo selväteksti silloin kun se näkyy uhrin näytössä - tai vaihtoehtoisesti ne selväkieliset näppäinpainallukset joilla tuo pahaa-aavistamaton rassukka on tekstinsä tuottanut! Hyvästi henkilökohtainen tietoturva.

Vahvakaan salaus ei auta jos selväteksti kirjoitetaan suoraan ja vihollinen voi verkossa seurata uhrin näyttöä, hiirtä ja näppistä.


Jos voisimme luottaa siihen että käyttäjät käyttävät aidosti satunnaisia kertakäyttöisiä salasanoja ja myös muistavat ne kirjoittamatta niitä muistiin, niin yksi kaikki yhdistelmät sisältävä OTP-menetelmän mukainen taulukko olisi riittävä (Esimerkki tällaisesta on Agendan aputaulukko ../a/ohjeet/otp/yhteen.html ), varsinkin jos voisimme myös luottaa siihen että käyttäjät huolehtivat ettei sanojen pituus vuoda viholliselle käyttökelpoista tietoa.

Tuontapaisen taulukon ja aidosti satunnaisen avaimen avulla voi muuttaa merkin miksi tahansa muuksi merkiksi samalla todennäköisyydellä. Jos vihollinen ei voi seurata esim. hiiren tai kirjoittajan silmien liikkeiden avulla mitä taulukon selväkielistä merkkiä vastaavan koodimerkin hän valitsee, niin hän ei koskaan pysty murtamaan viestiä vaikka hänellä olisi kvanttitietokone käytössään.

Tuo on kuitenkin käytännössä epärealistista. Esimerkiksi Iltalehden lööppi "Nykänen ryyppää taas raskaasti!" ei ole mikään satunnainen, rakenteeton merkkijono. Aidosti satunnainen merkkijono voisi olla esim "CKDJJEXITMLPQOAASRSTHYIWF", mutta eihän tuollaista kukaan ulkoa muista vaikka se on Iltalehden lööppiä lyhyempi.

Riittävän pitkiä aidosti satunnaisia avaimia kukaan ei kuitenkaan muista, tai ei viitsi käyttää. Niinpä "salasana" onkin paremminkin jonkinlainen fraasi, jossa väistämättä on sitä kryptograafisessa mielessä heikentävää kielellistä rakennetta, mutta jonka normaali ihminen voi muistaa kirjoittamatta sitä ylös. Olkoon vaikka isämeitänrukous kunhan sitä käytetään vain yhden ainoan kerran. Salaisessa fraasissa on pituuteen nähden vähemmän entropiaa kuin aidosti satunnaisessa salasanassa, eikä se ole yhtä turvallinen kuin aito OTP.

Yksi taulukko ei riitä salaista fraasia käytettäessä, se olisi liian iso mahtuakseen mukavasti näytölle. Eikä kannata luottaa että käyttäjät muistaisivat salata myös selväkielen sanojen pituudet. Sanojen pituuden salaus pitäisi olla menetelmässä sisäänrakennettuna. Tämä voidaan tehdä käyttämällä esim. kirjainpareja joita on hallittavissa oleva määrä, esim. 26 merkin merkistössä erilaisia merkkipareja on 26*26 = 676 ja jos suomalaisessa tekstissä merkkipareja muodostetaan vain esim. kirjaimista ADEGHIJKLMNOPRSTUVYÄ niin pareja on vain 20*20 = 400. Merkkiparien käytöllä rikotaan selvätekstin ja kryptogrammin sanapituuksien vakiosuhde.

Esimerkiksi jos vihollinen tietää että kirjoittaja lähettää kryptattuna joko viestin "EI" tai viestin "KYLLÄ" niin mitäs luulette, kumpaa vaihtoehtoa vihollinen veikkaa jos lopullinen kryptogrammi kaikessa komeudessaan on "LP"?


Paremman menetelmän oleellisia tekijöitä voisivat olla esimerkiksi nämä:

  • Avaimien on oltava hyvälaatuisia ja kertakäyttöisiä
  • Jonkinlaista avainta tarvitaan myös apuikkunan sisältöä tulkittaessa
  • Erilaisia apuikkunan sisältöjä on oltava suuri määrä
  • Apuikkunan sisällön oltava sekava ja moniselitteinen, sekä jokaiselle avaimelle erilainen
  • Apuikkunassa on oltava samanaikaisesti näkyvissä useita erilaisia muunnoksia
  • Apuikkunaa on voitava käyttää eri tavoin, osapuolten välisen ei-globaalisti-pätevän sopimuksen mukaan
  • Salattavan tekstin pituus ei saa säilyä kryptogrammissa ; kryptogrammin pituus oltava suurella todennäköisyydellä hiukan erilainen kuin selvätekstin pituus
  • Ainakin osa merkeistä olisi hyvä olla grafiikkaa jonka tulkintaa ei ole helppo automatisoida, siis ei tekstiä jota tietokone lukee suoraan
  • Saman selväkielen merkin täytyy aina johtaa useaan erilaiseen koodimerkkiin ja kääntäen tietyyn koodimerkkiin täytyy olla yhteys monesta eri selväkielen merkistä (tai sitten salaus ja avaus käyttävät eri taulukoita)

    Avaimesta on luonnollisesti sovittava etukäteen toisen osapuolen kanssa tapauskohtaisesti turvallista kanavaa käyttäen.

    Menetelmällä ei pidä pyrkiä salaamaan kaikkea, ainoastaan tärkeimmät kohdat viestistä. Selväkielen sanoja ei pidä aina kirjoittaa oikein, vaan tulee satunaisesti tehdä sellaisia virheitä jotka vastaanottaja pystyy korjaamaan, siis pieniä virheitä jotka eivät estä kryptogrammin dekoodaamista eivätkä tee siitä liian tulkinnallista. Ennustettavuus ja säännöllisyys on ei-toivottava ominaisuus. Kryptatun sanan pituus on hyvä olla erilainen, käyttäen ylimääräisiä merkkejä jotka eivät estä selväkielisen sanan tulkintaa. On pyrittävä käyttämään salakielisiä koodeja mahdollisimman tasaisesti jos on erilaisia vaihtoehtoja. Lopputuloksen tulisi muistuttaa "valkoista kohinaa", satunnaisia merkkejä tasaisella jakautumalla ; salattavien sanojen rakenne ei saa näkyä kryptogrammissa. Viestissä tulee lisäksi fiksusti käyttää osapuolten kesken sovittuja koodisanoja joiden merkitys on ulkopuolisille suuri mysteerio.

    Lopuksi on hyvä vielä tarkistaa ettei kryptogrammiin sattumalta tule jotakin mitä siinä ei missään tapauksessa saa olla. Todennäköisyys on pieni, mutta se on olemassa. Jos esimerkiksi haluamme kryptata viestin "ÄRRÄLLÄKAHDEKSALTA" ja käyttämämme salasanan kanssa kryptogrammiksi muodostuu "R-KIOSKILLAKLO20", niin luultavasti haluamme muotoilla sanoman uudelleen.

    Jos olemme vaikkapa SPEKTR -nimisen salaisen järjestön leivissä, emme varmaankaan halua että tuo kirjainten yhdistelmä esiintyisi meidän kryptogrammeissamme tuossa järjestyksessä. Tuollainen yhteensattuma herättäisi vihollisessa tarpeetonta uteliaisuutta ja voisi aiheuttaa lisäresurssien allokointia koodin murtamiseen. Tällaista vaaraa ei tietenkään ole jos selväkielen merkistö ja kryptogrammin merkistö ovat täysin erilaiset, esim. selvätekstissä on vain kirjaimia ja kryptogrammissa vain numeroita.

    Joskus on ihanteellista vaihtaa viestit jonkinlaisen julkisen puolueettoman foorumin tai ilmoitustaulun kautta niin että sivullisen on vaikea tietää keitä keskustelevat osapuolet ovat ... Tai ainakin viestin lukevan henkilön identiteetti on vaikea selvittää jos sivustolla on kävijöitä runsaasti.

    Tässä on vielä miettimistä ja kehittelemistä, mutta uskon lopulta löytäväni jonkinlaisen tyydyttävän kompromissin helppokäyttöisyyden ja turvallisuuden välillä. Pyrin ainakin osittaiseen PHP-toteutukseen. Palaan asiaan myöhemmin tämän sivun puitteissa.

    Huom: Tätä menetelmää ei kuitenkaan ole tarkoitettu erittäin tärkeille viesteille. Kriittisen tärkeitä tietoja en suosittele lainkaan käsiteltäväksi verkkoon kytketyssä tai yhteiskäytössä olevassa tietokoneessa!


    Kryptografia-piireissä tunnettu John J. G. Savard on jonkin verran käsitellyt olkapään yli kurkkijoiden ongelmaa kirjoituksessaan When Someone's Looking Over Your Shoulder , mutta hänen ehdotuksensa linjoille tässä ei ole tarkoitus lähteä, vaan mielessäni nyt kytevä suunnitelma on erilainen.