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.