Kryptografia

Alustusvektori (IV) ja sen haavoittuvuudet kryptografiassa

Helppo
15 min

Mikä on alustusvektori (IV)?

Alustusvektori (Initialization Vector, IV) on satunnainen bittijono, jota käytetään kryptografisissa operaatioissa, kuten salaus ja purku, parantamaan turvallisuutta ja estämään tiettyjä hyökkäyksiä. Se toimii ylimääräisenä "suolana", joka sekoitetaan itse viestiin, jotta saadaan aikaan ainutlaatuinen salausteksti joka kerta.

IV:tä ei saa uudelleenkäyttää

On erittäin tärkeää ettei samaa IV:tä koskaan käytetä kahdesti. Jokaiselle salattavalle viestille on käytettävä ainutlaatuista ja arvaamatonta IV:tä. Jos IV:tä käytetään uudelleen, hyökkääjät voivat hyödyntää tätä haavoittuvuutta purkaakseen viestejä tai manipuloidakseen niiden sisältöä.

Esimerkki

Alla on Python-esimerkkikoodi, jossa käytetään alustusvektoria (IV) vaarallisesti AES-CBC-salausmoodissa. Tässä esimerkissä alustusvektori (IV) on asetettu kiinteäksi arvoksi, joka on huono käytäntö:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
import os

# Oletetaan, että meillä on salattavaa dataa
data_to_encrypt = b"Salainen viesti, joka tarvitsee salauksen"

# Käytetään kiinteää IV:tä (huono käytäntö!)
iv = b"1234567890123456"

# Generoidaan satunnainen salausavain
key = get_random_bytes(16)  # AES vaatii, että avain on joko 16, 24 tai 32 tavua pitkä

# Luodaan AES-CBC -salausobjekti
cipher = AES.new(key, AES.MODE_CBC, iv)

# Salaus
encrypted_data = cipher.encrypt(data_to_encrypt.ljust(16, b"\0"))  # Data pitää täyttää oikeaan blokkikokoon

Haavoittuvuus kiinteän IV:n käytössä

Kiinteän alustusvektorin (IV) käyttö, erityisesti julkisesti tiedossa olevan arvon käyttäminen, on turvallisuusriski kryptografiassa. Se aiheuttaa seuraavia haavoittuvuuksia:

Ennustettavuus: Kun IV on kiinteä tai ennustettavissa, hyökkääjä voi ennustaa salauksen ensimmäisen blokin ennen salausprosessin alkua. Tämä vähentää merkittävästi salauksen turvallisuutta, sillä hyökkääjä voi valmistautua mahdollisiin hyökkäyksiin tietäen, miten salaus alkaa.

Samat viestit tuottavat saman salauksen: Jos samaa IV:tä ja salausta käytetään toistuvasti, samat alkuperäiset viestit tuottavat identtiset salatut viestit. Tämä voi paljastaa tietoa viestien sisällöstä ja mahdollistaa kuvioihin perustuvien hyökkäysten, kuten valittujen tekstihyökkäysten (chosen-plaintext attacks).

Paljastettu viestin alku: Erityisesti CBC-moodissa ensimmäisen blokin salaus riippuu ainoastaan IV:stä ja alkuperäisestä viestistä. Jos hyökkääjä tietää tai voi arvata osan alkuperäisestä viestistä, kiinteän IV:n käyttö voi helpottaa lopun viestin purkamista.

Käytä IV:tä oikein

Oikea käytäntö on käyttää kryptografisesti turvallista satunnaisesti generoitua IV:tä jokaiselle salausoperaatiolle. IV ei yleensä tarvitse olla salainen, mutta sen tulisi olla arvaamaton ja uniikki jokaiselle salauskerralle. Tämä parantaa merkittävästi turvallisuutta, estäen edellä mainitut haavoittuvuudet.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.