Symmetrinen avainsalaus: määritelmä, algoritmit ja esimerkit (AES)
Symmetrinen avainsalaus: selkeä määritelmä, AES- ja muut algoritmit sekä käytännön esimerkit — nopea, turvallinen opas salauksen perusteisiin ja käyttöön.
Symmetrisen avaimen algoritmi on salausmenetelmä. Se tarkoittaa, että avaimet salauksen purkamiseen ja salaamiseen ovat täsmälleen samat jaetut salaisuudet. Salaisuus voidaan luoda satunnaisesti tai salasanasta tai salaisen avaintenvaihtomenettelyn, kuten Diffie-Hellmanin, avulla. Symmetrisessä salauksessa avain pitää suojata huolellisesti: jos avain paljastuu, kaikki siihen liittyvät viestit ovat vaarassa.
Miksi symmetrinen salaus on tärkeä
Symmetrisen avaimen algoritmit ovat erittäin tärkeitä, koska ne ovat käytännössä paljon nopeampia tietokoneilla kuin julkisen avaimen algoritmit. Julkisen avaimen kryptografiassa (epäsymmetrisessä kryptografiassa) salausavain voidaan antaa yleisölle, mikä helpottaa avainten jakamista — tämän etuna on, että kuka tahansa voi lähettää salatun viestin ilman aiempaa turvallista kanavaa. Julkisen avaimen järjestelmät ovat kuitenkin laskennallisesti raskaampia, joten niitä käytetään yleensä vain avaintenvaihtoon tai digitaalisiin allekirjoituksiin. Sen sijaan symmetristä salausta käytetään laajalti varsinaiseen datan salaukseen, koska se tarjoaa paremman suorituskyvyn suurten tietomäärien käsittelyssä.
Virta- ja lohkosalaus
On olemassa kahdenlaisia symmetrisen avaimen algoritmeja, joita kutsutaan virta- ja lohkosalauksiksi. Virtasalaimet (stream ciphers) tuottavat avainvirtana bittivirran, jota yhdistetään selkotekstiin esimerkiksi XOR-operaatiolla ja joka tuottaa salatun bittivirran. Ne toimivat bitti tai tavutasolla ja soveltuvat hyvin jatkuvaan bittivirtaan tai reaaliaikaisiin sovelluksiin.
Lohkosalaimet (block ciphers) käsittelevät tietoa kiinteän kokoisina lohkoina. Ne ottavat bittilohkoja (esim. 64 tai 128 bittiä), salaavat ne yhtenä kokonaisuutena ja voivat käyttää erilaisia toimintatiloja (modes of operation) kuten ECB, CBC, CTR tai GCM, jotka vaikuttavat siihen, miten lohkot linkittyvät toisiinsa ja miten salausturva säilyy. Yleisesti on aiemmin käytetty 64-bittisiä lohkoja, mutta nykyaikaiset salakirjoittajat, kuten Advanced Encryption Standard, käyttävät 128-bittisiä lohkoja, mikä parantaa turvallisuutta suurten datamäärien salaamisessa.
Suosittuja symmetrisen avaimen algoritmeja
Esimerkkejä suosituista symmetrisistä salakirjoituksista ovat Twofish, Serpent, AES (eli Rijndael), Blowfish, CAST5, RC4, TDES ja IDEA. Jokaisella näistä on omat ominaisuutensa, vahvuutensa ja heikkoutensa:
- AES on nykystandardin mukainen, tehokas ja laajalti käytetty lohkosalaus (katso lisätietoja alla).
- Twofish ja Serpent ovat AES-kilpailun finalisteja ja tarjoavat korkean turvallisuustason.
- Blowfish ja CAST5 ovat kevyempiä vaihtoehtoja tietyissä käyttötapauksissa, mutta vanhenevat osin avainkoko- tai turvallisuussyistä.
- RC4 on virta-algoritmi, joka on kuitenkin osoittautunut haavoittuvaksi useissa käytännön sovelluksissa ja sen käyttöä suositellaan vältettäväksi.
- TDES (Triple DES) on vanha tapa parantaa DES:n turvallisuutta, mutta se on hidas ja sen käyttöä on vähennetty nykyaikaisempien algoritmien hyväksi.
AES (Advanced Encryption Standard) — käytännön tiedot
AES on laajasti käytetty lohkosalaus, jonka lohkokoko on 128 bittiä. AES tukee eri avainpituuksia: 128, 192 ja 256 bittiä. Näitä kutsutaan usein AES-128, AES-192 ja AES-256. Algoritmin kierrosmäärä riippuu avaimen pituudesta: 10, 12 tai 14 kierrosta vastaavasti. AES on suunniteltu tehokkaaksi sekä ohjelmassa että laitteistossa — esimerkiksi monet prosessorit tukevat AES-NI -komentoja, jotka nopeuttavat AES-salausta merkittävästi.
Käytännössä AES toimii aina yhdessä toimintatilan kanssa. Tavallisimmat toimintatilat ovat:
- ECB — ei suositella, koska identtiset lohkot salaavat identtisiksi lohkoiksi.
- CBC — perinteinen tila, vaatii satunnaisen IV:n ja oikeaoppisen täytön (padding).
- CTR — muuntaa lohkosalaimen virtasalaimeksi; mahdollistaa satunnaisen pääsyn tiettyihin kohtiin streamia.
- GCM — tarjoaa sekä salauksen että autentikoinnin (AEAD), suositeltava monissa modernissa sovelluksissa.
Turvallisuus, hyökkäykset ja käytännön varotoimet
Historiassa jotkin salausmenetelmät käyttivät symmetriaa hyväkseen, joten symmetriset järjestelmät olivat vähemmän turvallisia. Joitakin hyökkäyksiä kutsutaan tunnetun selkotekstin hyökkäyksiksi, valitun selkotekstin hyökkäyksiksi, differentiaaliseksi kryptoanalyysiksi ja lineaariseksi kryptoanalyysiksi. Näiden lisäksi on syytä muistaa käytännön hyökkäykset, kuten:
- Brute force (täydellinen avainetsintä) — torjutaan riittävällä avainpituudella.
- Sivukanavat (timing, sähkönkulutus, EM-päästöt) — vaativat huolellisia toteutuksia ja mahdollisesti suojausmekanismeja.
- Heikot avain- ja IV-käytännöt — sama avain/IV-parin uudelleenkäyttö, heikko satunnaisuus tai avaimen uudelleenkäyttö rapauttavat turvallisuuden.
Käytännön suosituksia:
- Käytä riittävää avainpituutta (vähintään 128 bittiä, mieluummin 256 bittiä, jos haluat pitkän aikavälin suojaa).
- Käytä autentikoivaa salausta (AEAD-menetelmiä kuten AES-GCM tai AES-CCM) kun mahdollista, jotta estät salaamatonta manipulointia.
- Generoi avaimet ja IV:t turvallisella satunnaislähteellä (cryptographically secure RNG).
- Älä kehitä omia salaustapojasi — käytä hyväksi todettuja kirjastoja ja standardeja.
- Suojaa avainten elinkaari: niiden luonti, säilytys, jakelu ja tuhoaminen tulee suunnitella ja toteuttaa turvallisesti (esim. avaimille erillinen avainhallinta, KMS).
Käyttötapaukset ja avaintenvaihto
Symmetristä salausta käytetään kaikkeen salamassuureen datan salaamiseen: salatut tiedostot, verkkoyhteydet (esim. TLS:n symmetrinen osio), salatut levyt ja viestintäpalvelut. Koska symmetrisen avaimen jakaminen turvallisesti voi olla haaste, käytetään usein hybridiratkaisua: julkisen avaimen järjestelmää (esim. RSA tai Diffie-Hellman) käytetään salaisen avaimen vaihtoon, ja itse tiedon salaukseen käytetään sitten nopeaa symmetristä algoritmia.
Salasanapohjaisissa järjestelmissä kannattaa käyttää vahvoja avainderivaatiofunktioita (KDF) kuten PBKDF2, bcrypt, scrypt tai Argon2, jotta heikosta salasanasta ei muodostu helposti murrettavaa salausta.
Yhteenveto
Symmetrinen avainsalaus on nopea ja tehokas tapa suojata dataa, kunhan avainten hallinta ja toteutus ovat kunnossa. Modernit lohkosalaimet kuten AES tarjoavat vahvan ja standardoidun ratkaisun suurimpaan osaan käytännön tarpeita, kun niitä käytetään oikeassa toimintatilassa ja yhteensopivien turvallisuusohjeiden mukaisesti. Muita tunnettuja algoritmeja (esim. Twofish, Serpent) voivat olla vaihtoehtoja tietyissä tilanteissa, mutta yleisesti suositus on käyttää hyväksi todettuja standardeja ja kirjastoja.
Muita symmetrisen avaimen salauksen termejä ovat salaisen avaimen, yhden avaimen, jaetun avaimen, yhden avaimen ja lopulta yksityisen avaimen salaus. Viimeksi mainitulla termillä ei ole samaa merkitystä kuin termillä yksityinen avain julkisen avaimen salauksessa.

Symmetrisen avaimen algoritmissa salausavain on sama kuin salausavain, jota käytetään salauksen purkamiseen. Tästä syystä se on pidettävä salassa.
Symmetriset vs. epäsymmetriset algoritmit
Toisin kuin symmetrisissä algoritmeissa, epäsymmetrisissä avainalgoritmeissa käytetään eri avainta salaukseen kuin salauksen purkamiseen. Käyttäjä, joka tietää epäsymmetrisen algoritmin salausavaimen, voi salata viestejä, mutta ei voi laskea salausavainta eikä purkaa kyseisellä avaimella salattuja viestejä. Seuraavassa vertaillaan lyhyesti näitä kahta algoritmityyppiä:
Nopeus
Symmetrisen avaimen algoritmit ovat yleensä paljon vähemmän laskentaintensiivisiä kuin epäsymmetrisen avaimen algoritmit. Käytännössä epäsymmetrisen avaimen algoritmit ovat yleensä satoja tai tuhansia kertoja hitaampia kuin symmetrisen avaimen algoritmit.
Avainten hallinta
Yksi symmetrisen avaimen algoritmien haittapuoli on vaatimus jaetusta salaisesta avaimesta, josta molemmilla osapuolilla on sama kopio kummassakin päässä. Jotta voidaan varmistaa turvallinen viestintä kaikkien n henkilön ryhmän jäsenten välillä, tarvitaan yhteensä n(n - 1)/2 avainta, mikä on mahdollisten viestintäkanavien kokonaismäärä. Jotta kryptografisen hyökkääjän mahdollisen löydön vaikutuksia voitaisiin rajoittaa, avaimia olisi vaihdettava säännöllisesti ja ne olisi pidettävä turvassa jakelun ja käytön aikana. Avainten valintaa, jakelua ja säilytystä kutsutaan avainten hallinnaksi, ja sitä on vaikea toteuttaa luotettavasti ja turvallisesti.
Hybridikryptojärjestelmä
Nykyaikaisissa salausjärjestelmissä käytetään sekä epäsymmetrisiä (julkisen avaimen) että symmetrisiä algoritmeja, jotta voidaan hyödyntää molempien parhaat puolet. Epäsymmetrisiä algoritmeja käytetään symmetristen avainten jakamiseen istunnon alussa. Kun symmetrinen avain on kaikkien istunnon osapuolten tiedossa, tätä avainta käyttäviä nopeampia symmetrisen avaimen algoritmeja voidaan käyttää istunnon loppuosan salaamiseen. Tämä yksinkertaistaa avainten jakeluongelmaa, koska epäsymmetriset avaimet on jaettava vain aidosti, kun taas symmetriset avaimet on jaettava sekä aidosti että luottamuksellisesti.
Tällaista hybridilähestymistapaa käyttäviä järjestelmiä ovat muun muassa SSL, PGP ja GPG.
Aiheeseen liittyvät sivut
- Epäsymmetrisen avaimen algoritmit
Kysymyksiä ja vastauksia
K: Mikä on symmetrisen avaimen algoritmi?
V: Symmetrisen avaimen algoritmi on kryptografiassa käytetty menetelmä, jossa avaimet salauksen purkamiseen ja salaamiseen ovat täsmälleen sama jaettu salaisuus.
K: Miten salaisuus voidaan luoda?
V: Salaisuus voidaan luoda satunnaisesti tai salasanasta tai salaisen avaintenvaihtomenettelyn, kuten Diffie-Hellmanin, avulla.
K: Miksi symmetriset avainalgoritmit ovat tärkeitä?
V: Symmetrisen avaimen algoritmit ovat erittäin tärkeitä, koska ne ovat tietokoneilla nopeampia kuin julkisen avaimen algoritmit.
K: Mitä on julkisen avaimen salaus (epäsymmetrisen avaimen salaus)?
V: Julkisen avaimen kryptografiassa (epäsymmetrisen avaimen kryptografiassa) salausavain voidaan ongelmitta antaa yleisölle, ja kaikki voivat lähettää salaisia viestejä. Salausavain on "avoin", koska käytännössä sen avulla ei voi saada avainta salauksen purkamiseen.
Kysymys: Mitä kahdenlaisia symmetrisiä salakirjoituksia on?
V: Kahdenlaisia symmetrisiä salakirjoituksia ovat virtasalakirjoitukset ja lohkosalakirjoitukset. Virtasalakirjoittajat salaavat viestin bittivirtana yksi kerrallaan, kun taas lohkosalakirjoittajat ottavat bittilohkoja, salaavat ne yhtenä yksikkönä ja käyttävät joskus myös vastausta myöhemmin.
K: Minkä kokoisia lohkoja nykyaikaiset salakirjoittajat käyttävät?
V: Nykyaikaiset salakirjoittajat, kuten Advanced Encryption Standard, käyttävät 128-bittisiä lohkoja.
K: Millaisia hyökkäyksiä on käytetty symmetrian hyödyntämiseen historiassa?
V: Historiassa jotkin salausanalyysimenetelmät käyttivät symmetriaa hyväkseen, joten symmetriset järjestelmät olivat vähemmän turvallisia. Joitakin hyökkäyksiä, joita on käytetty, ovat tunnetun selkotekstin hyökkäykset, valitun selkotekstin hyökkäykset, differentiaalinen kryptoanalyysi ja lineaarinen kryptoanalyysi.
Etsiä