- CS-EJ4404
- 2. Kryptografian tavoitteet, käsitteet ja hyökkäysmallit
- 2.5 Hyökkäysmallit ja turvallisuus
Hyökkäysmallit ja turvallisuus¶
Vihje
Tämä osio sisältää paljon osin teoreettistakin tietoa. Aiheesta kerrotaan tarkoituksella jo tässä vaiheessa, vaikka kurssilla ei ole vielä käsitelty yhtään salainta. Jos tämän osion sisältö tuntuu liian abstraktilta, se kannattaa jättää viimeiseksi jonka suoritat kurssilla.
Tässä osiossa tarkastellaan salaimille asetettuja turvallisuustavoitteita. Samoin käymme läpi ylätasolla hyökkäysmallit, joita käytetään kryptoanalyysissä. Kun ymmärrät salainten turvallisuustavoitteet ja niihin kohdistuvat hyökkäysmallit, sinulla on paremmat edellytykset arvioida, ovatko tiedon salaus ja suojaus toteutettu hyvin.
Määrittelimme aiemmin salainten perustavoitteet: informaation luottamuksellisuuden, autenttisuuden ja eheyden takaaminen. Haluamme kryptografian mahdollistavan nämä kolme perustavoitetta informaation salauksessa ja suojauksessa. Tavallaan turvallisuustavoite siis määrittää salaimen hyvyyden, ei niinkään mitä salaimella saavutetaan käytännössä.
Suunniteltaessa tiedon salauksen ja suojauksen järjestelmiä sekä kryptografisia ratkaisuja, joudumme arvioimaan, millä keinoilla jokin taho voisi yrittää murtaa luottamuksellisuuden, autenttisuuden tai eheyden. Tällaista murtoyritystä kutsumme hyökkäykseksi.
Hyökkäysmallit määrittävät sen, paljonko laskentavoimaa ja kykyä kerätä informaatiota hyökkääjällä on. Kryptografiassa oletetaan, että hyökkääjällä on mittava muttei ääretön laskentakapasiteetti (laskentakapasiteetista voi puhua tarkemmin tietojenkäsittelytieteen keinoilla, mutta emme perehdy niihin nyt).
Lisäksi oletamme, että hyökkääjällä on kyky kerätä informaatiota kryptografisen järjestelmän, esimerkiksi salaimen toteutuksesta sekä sen tuottamasta datasta.
Tavat, joilla hyökkäävä taho voi kerätä informaatiota, hahmotellaan teoreettisten (ja usein myös käytännöllisten) viitekehysten avulla. Näistä hyökkäystavoista merkittäviä ovat mustan laatikon hyökkäykset, joissa tutkitaan sekä primitiivien että algoritmien heikkouksia ja vahvuuksia. Jo toteutettuja kryptografisia järjestelmiä voidaan myös analysoida niin sanotuilla harmaan laatikon hyökkäyksillä, joissa pyritään löytämään mitä tahansa tapaa saada ylimääräistä tieto salaimen toteutuksesta, avaimista tai datasta.
Hyökkäysmallien ansiosta voimme ymmärtää, millaisia hyökkäyksiä vastaan voimme suojautua kryptografialla. Vaikka emme käsittele kurssilla eri hyökkäysmalleja tämän tarkemmin, on hyvä muistaa että eri hyökkäysmalleilla tutkitaan kryptografisten algoritmien ja niiden toteutusten hyvyyttä.
Varsin epämiellyttävää on se tosiasia, että käytännössä on varsin mahdotonta todistaa kryptografisen menetelmän olevan täysin turvallinen. Historian saatossa on löytynyt useita esimerkkejä vaikkapa salaimista, joiden turvallisuus on osoittautunut pitkän käytön jälkeen varsin huonoksi. Näistä DES-salaus ja MD4-tiivistefunktio ovat vain muutama esimerkki monien joukossa.
Kryptografinen primitiivi ja algoritmi¶
Kryptografinen primitiivi määrittää toimintaperiaatteen, esimerkiksi: ”kyky suojata digitaalinen data avaimella niin, että salakieli on erottamatonta, ja menetelmä on taipumaton, ja salakieli vastaa turvallisuudeltaan 256-bitin turvatasoa”. Edellinen lause sisälsi paljon asioita, joita ei vielä ole ehditty käsitellä. Ne kuitenkin esitellään tässä osiossa, minkä jälkeen edellä kuvattu toimintaperiaate on helpompi ymmärtää.
Voimme määrittää, että jokainen kryptografinen primitiivi (toimintaperiaate), jonka toteuttaa algoritmi (menetelmä) on mahdollista kuvata matemaattisena funktiona \(\textbf{f}\). Tällöin tarkastellaan, kuinka kryptografinen algoritmi muuntaa selväkielen \(\textbf{P}\) informaation funktiolla \(\textbf{f}\) salakieleksi \(\textbf{C}\).
Käsite funktio ja sen kyky muuntaa tieto (esimerkiksi funktio kuvaa A:n Ö:ksi) ovat täsmälleen samoja matematiikan käsitteitä, kuin mitä matematiikan opetuksessa käytetään peruskoulussa ja lukiossa.
Turvallisuustavoitteet¶
Turvallisuustavoite (engl. security notion) määrittää, mikä kryptografisen järjestelmän tarkka tavoite on. Turvallisuustavoitteet ovat tarkempia kuin aiemmin mainitut perustavoitteet, jotka voi ymmärtää monella tapaa. Hyökkääjä voi pyrkiä murtamaan jonkin turvallisuustavoitteen, kuten esimerkiksi:
Hyökkääjä pystyy selvittämään yhden viestin sisällön. Hyökkääjä ei kuitenkaan välttämättä pysty selvittämään useamman viestin sisältöä. (Luottamuksellisuus)
Hyökkääjä pystyy tuottamaan alkuperäistä informaatiota matkivan alkukuvan, jolla voi esittää olevansa eri taho tai muuntaa alkuperäistä informaatiota. (Autenttisuus)
Hyökkääjä kykenee tuottamaan tekaistuja selvätekstejä, jotka näyttävät kryptografiselle järjestelmälle eheältä. (Eheys)
Täydellinen murtuminen: Hyökkääjä selvittää avaimen.
Erottamattomuus (engl. indistinguishable, IND)¶
Aiemmassa osiossa mainittiin salaimen yhdeksi hyväksi piirteeksi kyky tuottaa salakieltä, joka muistuttaa tasaisesti jakautunutta kohinaa.
Esimerkki erityisestä turvallisuustavoitteesta on se, että salakieli on erottamaton (engl. indistinguishable) satunnaisesta bittijonosta. Tämä tavoite mahdollistaa muun muassa luottamuksellisuuden. Tähän tavoitteeseen viitataan kirjallisuudessa lyhenteellä IND.
Taipumattomuus (engl. non-malleable, NM)¶
Kryptografisen menetelmän sanotaan olevan taipumaton (engl. non-malleable), jos selväkielen muutokset eivät näytä kuvautuvan merkityksellisellä tavalla salakieleen. Tähän tavoitteeseen viitataan kirjallisuudessa lyhenteellä NM.
Jos menetelmä ei ole taipumaton (NM), niin muutos selväkielessä kuvautuu salakieleen jollain tapaa tunnistettavalla. Jos esimerkiksi selväkielen informaatiossa muutetaan yksi bitti ja salaimen tuottaman salakielen informaatiosta muuttuu vain pieni osa, voidaan tällaista heikkoutta hyödyntäen selvittää selväkielinen informaatio tai jopa käytetty avain.
Kryptografian murtuminen¶
Äärimmäinen esimerkki turvallisuustavoitteiden murtumisesta on se, että jos hyökkääjä kykenee selvittämään avaimen. Tällöin olemme menettäneet kryptografisen järjestelmän tuottaman luottamuksellisuuden, autenttisuuden ja eheyden.
Aina hyökkääjän ei kuitenkaan tarvitse murtaa avainta saadakseen viestin sisällön selville. Joskus riittää, että salatekstistä pystytään tuottamaan riittävä määrä informaatiota, minkä perusteella pystymme päättelemään loput. Jos esimerkiksi murramme Alicen lähettämää viestiä ”HEIBOB”, voisi riittää että kryptoanalyysillä selvitämme selvätekstin sisältävän suurella varmuudella merkkijonon ”HE_B_B”s. Tästä puuttuvien kirjaimien päättely ei ole enää vaikeaa.
Hyökkäysmallit täytyy spesifioida, jotta ne olisi täysin määritelty. Perehdytään siis seuraavaksi eri hyökkäysmalleihin, joita kryptografiassa käsitellään.
Musta laatikko¶
Asetutaan hyökkääjän rooliin. Musta laatikko tarkoittaa sitä, ettei hyökkääjä näe salaimen sisälle, eikä siten pysty suoraan tarkastelemaan sen toimintaa. Mustan laatikon hyökkääjän on kuitenkin mahdollista käyttää salainta ja kerätä sillä tavalla informaatiota kryptografisesta järjestelmästä.
Hyökkääjä voi havainnoida mustan laatikon toimintaa keräämällä tietoa siihen sisään menevästä ja/tai ulos tulevasta datasta. Tällöin hyökkääjä joko monitoroi joko salaimelle menevää tai sieltä lähtevää tietoa. Mahdollisesti hyökkääjä voi jopa käyttää salainta, jolloin hyökkääjä pystyy antamaan selväkieltä salattavaksi tai jopa purkaa salakieltä selväkieleksi. Kerkhoffsin periaatteen mukaisesti salaimen algoritmi ei ole salaisuus ja hyökkääjän tarkoitus onkin selvittää avain tai salatun tiedon sisältö.
Kirjallisuudessa mustan laatikon hyökkäykset on luokiteltu seuraavaan neljään hyökkäystapaan.
1. Vain Salakielen näytteet - COA¶
Ensimmäisessä hyökkäystavassa hyökkääjä saa haltuunsa vain näytteitä salateksistä. Jos viestintää seuraava taho on saanut kerättyä riittävän suuren määrän salatekstinäytteitä, näitä voidaan analysoida kryptoanalyysin työkaluilla. Tällöin hyökkääjä voi kyetä murtamaan haluamansa turvallisuustavoitteen.
Tässä COA-hyökkäysmallissa utelias taho ei kykene itse käyttämään mustan laatikon salaimen enkryptausta tai dekryptausta. Englanniksi hyökkäystä kutsutaan COA - Ciphertext-only attack -hyökkäykseksi.
2. Selväkieli-Salakieli näyteparit - KPA¶
Toisessa hyökkäystavassa hyökkääjä on tiedustelun keinoin pystynyt hankkimaan selväkieli-salakieli-pareja. Analysoimalla selväkielestä tuotettuja salaviestejä on suurempi mahdollisuus murtaa turvallisuustavoite.
Myöskään tässä mustan laatikon hyökkäysmallissa hyökkääjä ei itse pysty käyttämään salainta. Vaikka hyökkääjä ei pysty käyttämään salainta, on salaimen toiminta tunnettu Kerkhoffsin periaatteen mukaisesti. Englanniksi termi on KPA - Known-plaintext attack.
3. Selväkieli-Salakieli parien tuottaminen - CPA¶
Kolmannessa mustan laatikon hyökkäysmallissa hyökkääjällä on mahdollisuus käyttää mustan laatikon salaimen enkryptausta. Tällöin hyökkääjä pystyy tuottamaan periaatteessa rajattoman määrän selväkieli-salakieli-pareja haluamallaan avaimella. Näin hyökkääjällä on huomattavasti suurempi mahdollisuus tuottaa omaan kryptoanalyysiinsä sopivia enkryptauspareja.
Englanniksi hyökkäyksen nimi on CPA - Chosen-plaintext attack.
4. Salakieli-Selväkieli parien tuottaminen - CCA¶
Neljännessä hyökkäysmallissa hyökkääjällä on mahdollisuus käyttää mustan laatikon salaimen enkryptausta ja dekryptausta. Tällöin hyökkääjä voi tuottaa rajattomasti selväkielestä salakieltä tai salakielestä selväkieltä.
CCA-menetelmä on hyökkääjälle antoisin tapa analysoida mustan laatikon suorittamaa tiedon salausta ja suojausta.
Vaikka hyökkääjä voi käyttää salaimen enkryptausta ja dekryptausta vapaasti valitsemallaan avaimella, ei hyökkääjällä ole kuitenkaan pääsyä etsittävään salaiseen avaimeen. Jos avain on järkevästi tuotettu ja salaimen menetelmät matemaattisesti vahvoja, ei tämäkään hyökkäysmenetelmä johda avaimen tai salausmenetelmän murtumiseen.
Englanniksi hyökkäyksen nimi on CCA - Chosen-ciphertext attack.
Harmaa laatikko¶
Kerkhoffsin periaatteen mukaan salausjärjestelmien ja -algoritmien toiminta ei ole salaisuus. Salausalgoritmit toteutetaan usein ohjelmoimalla. Nämä salausjärjestelmät ja -algoritmit ajetaan ohjelmina prosessoreissa. Tämän lisäksi kryptografinen järjestelmä voi toimia osana käyttöjärjestelmää tai käyttöjärjestelmän päällä, jolloin kryptografisen järjestelmän toiminta voi olla riippuvaista käyttöjärjestelmän ominaisuuksista.
Samoin kuin mustan laatikon hyökkäysmalleissa, oletamme harmaan laatikon hyökkäysmalleissa hyökkääjällä olevan valtaisat resurssit ja riittävä osaaminen selvittää heikkouksia salaimen käyttämien algoritmien toteutuksessa.
Harmaan laatikon tapauksessa hyökkääjä kerää salaimelle liikkuvan datan lisäksi mitä tahansa muuta informaatiota, joka helpottaa salausjärjestelmän tai -avaimen tulkintaa. Kryptoanalyysissä tällaisen ylimääräisen tiedon keräämistä kutsutaan sivukanavahyökkäykseksi.
Hyökkääjä voi esimerkiksi kokeilla, muuttuuko salaimen vasteaika kun avainta muutetaan. Lisäksi hyökkääjä voi kuormittaa prosessorin ympäristöä ja siten tutkia, onko salausjärjestelmän toiminta-ajassa muutoksia eri avaimia käyttämällä.
Joskus hyökkääjä voi selvittää laitteiston tarkan virrankulutuksen, laitteiston säteilemän tehon spektrogrammin tai kunkin prosessorikäskyn, välimuistintaulukkohaun tai ohjelma-alirutiinin suorittamiseen kuluneen ajan.
On olemassa myös menetelmiä, jossa hyökkääjä tuottaa järjestelmään erilaisia virheitä ja yrittää siten saada selville sivukanavatietoa.
Yksi äärimmäinen tapa toteuttaa harmaan laatikon hyökkäys on poistaa prosessorin ja muistien pintamateriaalit ja tutkia transistoritasolla bittejä herkillä antureilla. Tällaiset hyökkäystavat kuitenkin vaativat erityisvälineitä ja osaamista, varsinkin jos tutkittavana on mikropiirejä, jotka on suunniteltu tällaisia hyökkäyksiä vastaan.
Testi¶
Alla on Python-koodi, jonka tarkastelu on kurssin suorittamisen kannalta vapaaehtoista. Siitä ei siis saa pisteitä. Poimi alla olevien väittämien perusteella merkit Python-koodissa oleviin viesteihin ja valitse sopiva avain. Aja koodi ja katso, saatko koodiajon jälkeen oikean viestin.
HUOM! VÄITTÄMIÄ EDELTÄVÄT MERKIT ON SYÖTETTÄVÄ PYTHON-KOODISSA VIESTEIHIN SIINÄ JÄRJESTYKSESSÄ, JOSSA NE OVAT OHEISISSA LISTOISSA! Jos esimerkiksi kaikki väittämät ovat mielestäsi totta, syötä viestiin A = ”OKLEN”.
Poimi kaikki ne merkit Python-koodin A-, B- ja C-muuttujiin, joiden yhteydessä esitetty väittämä on totta.
A-väittämät:
O
: Hyökkäysmallit on tunnettava, jotta osaamme käyttää oikeita kryptografisia menetelmiä.K
: Harmaan laatikon hyökkäyksiä on mahdotonta tehdä kotioloissa.L
: Mustan laatikon ei tarvitse olla fyysisesti musta.E
: Jos meillä on vain salakielen näytteitä (eli COA-hyökkäys), on mahdollista tehdä kryptoanalyysiä.N
: Kerckhoffsin periaate sanoo, että kryptografinen järjestelmä perustuu avaimeen, ei menetelmään.
B-väittämät:
H
: Salakieli-selväkieli-parien tuottaminen antaa COA-hyökkäystä enemmän analysoitavaa kryptoanalyysia varten.A
: Selväkieli-salakieli-parien tuottaminen on turhaa, jos voimme tuottaa salakieli-selväkieli-pareja.Y
: CCA-hyökkäys on mahdollista tehdä etänä.V
: Sivukanvahyökkäyksellä voidaan tunnistaa esimerkiksi laskentaan kulunut tarkka aika.Ä
: Salakieli-selväkieli-parien kerääminen julkisesta verkosta vaatii osaamista.
C-väittämät:
EI
: Jos pystyn purkamaan salaimella jotain salakielistä tietoa, on suurin työ salaisen avaimen selvittämiseen tehty.OK
: On olemassa valkoinen laatikko, joka on meille vielä mysteeri.
Avain:
Avain on
NOHEVA
, jos tunnet oppineesi tänään jotain kryptografian käsitteistä.Avain on
EPÄVARMA
, jos tunnet että jotain jäi vielä epäselväksi.
from xip import testaa_hyökkäysmallien_osaaminen
# Tuo alle a-väittämien kirjaimet
A = "NOKU" # <- tuo tähän kirjaimet A-väittämästä.
# Tuo alle b-väittämien kirjaimet
B = "EIOLE" # <- tuo tähän kirjaimet B-väittämästä.
# Tuo alle c-väittämien kirjaimet
C = "IHAN" # <- tuo tähän joko EI tai OK
# Käytä jompaa kumpaa avaimista
avain = "VARMUUTTA" # tuo tähän joko NOHEVA tai EPÄVARMA
# Yhdistellään viesti
viesti = A+B+C
# Tulostellaan testin tulos
print("Sait muodostettua viestin: "+ viesti +" avaimella: "+ avain)
print("Kokeillaan menikö oikein")
testaa_hyökkäysmallien_osaaminen(viesti, avain)
Saitko edellisen koodin tulostamaan miellyttävän sanoman?
Seuraavaksi kokoavaa tehtävää.
Yhteenveto¶
Tämän kurssin puitteissa on oleellisinta tuntea mustan laatikon eri hyökkäysmenetelmät. Kurssin edetessä käytämme itse useaan otteeseen eri menetelmiä tukiessamme kuinka hyvin tai huonosti jokin käyttämämme salain tai algoritmi toimii.