- CS-EJ4404
- 5. Avaimen käyttö, jono- ja lohkosalain
- 5.5 Voinko koodata kryptografian elementtejä itse?
Voinko koodata kryptografian elementtejä itse?¶
Kaikki vastuunsa tuntevat kryptografian tai tietoturvan kanssa työskentelevät antavat luultavasti seuraavan ohjeen:
Opettele käyttämään valmiita kryptografisia kirjastoja oikein.
Kryptografia muodostaa pohjan toimivalle tietoturvalle. Opettele käyttämään testattuja ja tutkittuja menetelmiä itse koodaamisen sijaan.
Kryptografisia toimintojen toteuttaminen itse kuulostaa houkuttelevalta. Tästä huolimatta:
Opettele valmiiden kryptografisten kirjastojen tehokas ja aukoton käyttö.
Kryptografisten toiminteiden koodaminen on huomattavasti haastavampaa kuin alkuun voisi kuvitella.
Kuvitellaan tilanne, että olet saanut itse koodattua salaimen. Testaat koodin kaikilla testikirjastoilla ja testitulokset näyttävät hyvältä. Luomasi salain toteuttaa kryptografisen erottamattomuuden (IND) ja taipumattomuuden (NM).
Sitten kuulet jonkun käyttäneen juuri luomaasi kirjastoa avainten murtamiseen. Miten tämä on mahdollista? Oheinen lista käy läpi yleisimmät syyt:
Mustan laatikon hyökkäykset eivät pysty selvittämään vikaa, koska salaimesi toimi funktionaalisesti oikein. Todennäköisesti käyttämäsi kryptografiakirjaston funktiot ovat olleet alttiita harmaan laatikon hyökkäyksille.
Looginen virhe : Tuottamasi koodi voi sisältää virheen, jota valmiit testit eivät saa kiinni, mutta jota mustahattu-häkkeri on onnistunut hyödyntämään.
Luottamusvirhe : Luotat johonkin toiseen kirjastoon, joka on itseasiassa murrettavissa ja paljastaa riittävästi tietoa omasta koodistasi avaimen murtamiseen.
Ajoitushyökkäys : Tuottamasi koodin suoritusaika riippuu käytettävästä avaimesta tai laskentaympäristön kuormituksesta.
Lisäinformaatio : Tuottamasi koodi antaa liikaa informaatiota virhekäytöistä ja siten vuotaa tietoa, jota hyökkääjä voi hyödyntää.
Energiankulutus : Tuottamasi koodi ei hajauta laskentaa, joten virrankulutuksesta on mahdollista mitata kuinka monta nollaa tai ykköstä avaimessa on, tai jopa mitkä avaimen bitit ovat ykkösiä ja mitkä nollia.
Energian säteily : Tuottamasi koodi on niin deterministinen, että prosessorin tuottamat säteilyspektrin vaihtelut paljastavat avaimen bitit.
Yllä olevat esimerkit ovat pelkkä pintaraapaisu selkeimpiin ongelmiin, joita kokeneetkin kryptografian toteuttajat joutuvat pohtimaan. Huomaathan, että edellisessä ohitimme jo kokonaan menetelmän tarkistamisen. Siinäkin luotamme johonkin. On oleellista ymmärtää, miten voimme varmistua jonkin menetelmän luotettavuudesta ja siitä, miten menetelmiä toteuttavia kryptografisia kirjastoja on testattu.
Usein pelkkä tunnettujen ja testattujen kryptografisten kirjastojen oikea valinta ovat melkoisia haasteita kryptografian käyttäjien arjessa.
Tiedä mitä teet
Älä kehitä kryptografisia menetelmiä itse!
Valitettavasti lähihistoriassa on runsaasti esimerkkejä epäonnistuneista kryptografisista toteutuksista ja algoritmeista. Vuosia käytössä olleita kryptografisia menetelmiä on pystytty murtamaan pienienkin koodivirheiden takia.
Sen lisäksi että käytämme valmiita kirjastoja, on meidän pystyttävä luottamaan siihen, että:
Kryptografinen algoritmi on sellainen, ettei sitä ole murrettu (etsi tietoa esimerkiksi SIKE-salaimesta).
Turvallisuusprotokollasta ei ole löydetty heikkouksia. Näistä emme puhu tällä kurssilla, mutta esimerkki murretuista menetelmistä on esimerkiksi vanha SSL-protokolla ja vielä käytössä oleva TLS 1.2.
Käyttämämme kryptografiset kirjastot ja toiminteet on luonut luotettava taho.
Kirjastoja ja toiminteita on testattu riittävästi muidenkin tahojen kuin kryptografisten palvelujen tarjoajien toimesta.
Seuraavassa moduulissa aloitamme oikeiden kryptografisten kirjastojen käytön ja sukellamme lohkosalaimen eri toimintamoodeihin.