Virta-Salaus
Virta-salaus on salakirjoituksessa symmetrinen avainsalaus, jossa selkotekstin bitit yhdistetään pseudosatunnaiseen salausbittivirtaan (avainvirtaan) käyttämällä eksklusiivista tai-operaatiota (xor). Virta-salakirjoituksessa selkotekstin numerot salataan yksi kerrallaan, ja peräkkäisten numeroiden muunnos vaihtelee salaustilan aikana. Vaihtoehtoinen nimi on tilasalaus, koska kunkin numeron salaus riippuu senhetkisestä tilasta. Käytännössä numerot ovat tyypillisesti yksittäisiä bittejä tai tavuja.
Virtasalakirjoitukset edustavat symmetriseen salaukseen erilaista lähestymistapaa kuin lohkosalakirjoitukset. Lohkosalakirjoittajat toimivat suurilla kiinteän pituisilla lohkoilla. Virtapiirisalaimet toimivat yleensä nopeammin kuin lohkosalaimet, ja niiden laitteistovaatimukset ovat alhaisemmat. Virtapiirisalpaajat voivat kuitenkin aiheuttaa vakavia tietoturvaongelmia, jos niitä käytetään väärin; esimerkiksi samaa alkutilaa ei saa koskaan käyttää kahdesti.
Virtasalaus käyttää paljon pienempää ja kätevämpää salausavainta, esimerkiksi 128-bittistä avainta. Tämän avaimen perusteella se luo pseudosatunnaisen avainvirran, joka voidaan yhdistää selkotekstin numeroihin samalla tavalla kuin one-time pad -salausalgoritmi. Koska avainvirta on kuitenkin pseudosatunnainen eikä aidosti satunnainen, kertakäyttöalustaan liittyvää suojausta ei voida soveltaa, ja on täysin mahdollista, että virtasalausmenetelmä on täysin turvaton.
Avainvirtageneraattorin toiminta A5/1:ssä, joka on LFSR-pohjainen virtasalaus, jota käytetään matkapuhelinkeskustelujen salaamiseen.
Virtapiirien tyypit
Virtasalaus tuottaa avainvirran peräkkäiset elementit sisäisen tilan perusteella. Tätä tilaa päivitetään kahdella tavalla:
- Jos tila muuttuu selkoteksti- tai salatekstiviesteistä riippumatta, salaus luokitellaan synkroniseksi virtasalakirjoitukseksi.
- Jos tila päivitetään salaustekstin numeroiden aiempien muutosten perusteella, salaus luokitellaan itsesynkronoivaksi virtasalaimeksi.
Synkroniset virtasalakirjoitukset
Synkronisessa virtasalakirjoituksessa pseudosattumanumerovirta luodaan selvä- ja salatekstiviesteistä riippumatta ja yhdistetään sitten selvätekstiin (salausta varten) tai salatekstiin (salauksen purkua varten). Yleisimmässä muodossa käytetään binäärilukuja (bittejä), ja avainvirta yhdistetään selkotekstiin käyttämällä eksklusiivista tai -operaatiota (XOR). Tätä kutsutaan binääriseksi additiiviseksi virtasalakirjoitukseksi.
Synkronisessa virtasalakirjoituksessa lähettäjän ja vastaanottajan on oltava synkronissa, jotta salauksen purkaminen onnistuu. Jos viestiin lisätään tai poistetaan numeroita lähetyksen aikana, synkronointi katoaa. Synkronoinnin palauttamiseksi voidaan kokeilla systemaattisesti erilaisia siirtoja oikean dekoodauksen saamiseksi. Toinen lähestymistapa on merkitä salausteksti merkinnöillä säännöllisissä kohdissa tulostetta.
Jos kuitenkin jokin numero korruptoituu siirron aikana, eikä sitä ole lisätty tai kadonnut, virhe vaikuttaa vain yksittäiseen numeroon selväkielisessä tekstissä, eikä virhe leviä viestin muihin osiin. Tämä ominaisuus on hyödyllinen, kun lähetysvirheiden määrä on suuri, mutta se vähentää kuitenkin todennäköisyyttä, että virhe havaittaisiin ilman muita mekanismeja. Lisäksi tämän ominaisuuden vuoksi synkroniset virtasalakirjoittajat ovat hyvin alttiita aktiivisillehyökkäyksille - jos hyökkääjä pystyy muuttamaan salatekstin numeroa, hän saattaa pystyä tekemään ennustettavissa olevia muutoksia vastaavaan selkotekstin bittiin; esimerkiksi bitin kääntäminen salatekstissä aiheuttaa saman bitin kääntämisen (Toggled) selkotekstissä.
Itsesynkronoituvat virtasalakirjoitukset
Itsesynkronoituvat virtasalakirjoitukset ovat toinen tekniikka, jossa osa edellisen N salaustekstin numeroista käytetään avainvirran laskemiseen. Tällaisia järjestelmiä kutsutaan myös asynkronisiksi virta-salauksiksi tai salatekstin automaattiseksi avaimeksi (CTAK). Itsesynkronoinnin idea patentoitiin vuonna 1946, ja sen etuna on, että vastaanotin synkronoituu automaattisesti avainvirran generaattorin kanssa saatuaan N salatekstin numeroa, mikä helpottaa palautusta, jos numeroita on pudotettu tai lisätty viestivirtaan. Yhden numeron virheiden vaikutus on rajallinen, sillä ne vaikuttavat vain N:ään selkotekstin numeroon asti. Aktiivisten hyökkäysten suorittaminen itsesynkronoiviin virtauskoodereihin on hieman vaikeampaa kuin synkronoiviin vastaaviin koodereihin.
Esimerkki itsesynkronoivasta virtasalakirjoituksesta on lohkosalakirjoitus salakirjoitusvirtapalautteella (CFB).
Lineaariseen takaisinkytkentään perustuvat siirtorekisteripohjaiset virtasalakirjoitukset
Binäärivirran salakirjoituksissa käytetään usein lineaarisen takaisinkytkennän siirtorekistereitä (linear feedback shift registers, LFSR), koska ne on helppo toteuttaa laitteistolla ja ne voidaan analysoida nopeasti matemaattisesti. Pelkästään LFSR:ien käyttö ei kuitenkaan riitä hyvään tietoturvaan. LFSR:ien turvallisuuden lisäämiseksi on suunniteltu erilaisia järjestelmiä.
Epälineaariset yhdistävät funktiot
Koska LFSR:t ovat luonnostaan lineaarisia, yksi tekniikka lineaarisuuden poistamiseksi on syöttää rinnakkaisten LFSR:ien ryhmän ulostulot epälineaariseen Boolen funktioon yhdistelmägeneraattorin muodostamiseksi. Tällaisen yhdistelmäfunktion erilaiset ominaisuudet ovat tärkeitä tuloksena syntyvän järjestelmän turvallisuuden varmistamiseksi, esimerkiksi korrelaatiohyökkäysten välttämiseksi.
Kello-ohjatut generaattorit
Normaalisti LFSR:t astuvat säännöllisesti. Yksi tekniikka epälineaarisuuden aikaansaamiseksi on se, että LFSR:ää tahdistetaan epäsäännöllisesti toisen LFSR:n ulostulon ohjaamana. Tällaisia generaattoreita ovat esimerkiksi stop-and-go -generaattori, vaihtuvan askeleen generaattori ja kutistumisgeneraattori.
Stop-and-go -generaattori (Beth ja Piper, 1984) koostuu kahdesta LFSR:stä. Toista LFSR:ää kellotetaan, jos toisen LFSR:n ulostulo on "1", muuten se toistaa edellisen ulostulonsa. Tämän jälkeen (joissakin versioissa) tämä ulostulo yhdistetään kolmannen LFSR:n ulostuloon, jota kellotetaan säännöllisellä tahdilla.
Kutistumisgeneraattori käyttää eri tekniikkaa. Käytetään kahta LFSR:ää, jotka molemmat tahdistetaan säännöllisesti seuraavalla tavalla:
- Jos ensimmäisen LFSR:n ulostulo on "1", toisen LFSR:n ulostulosta tulee generaattorin ulostulo.
- Jos ensimmäisen LFSR:n ulostulo on "0", toisen LFSR:n ulostulo hylätään, eikä generaattori anna yhtään bittiä.
Tämä tekniikka kärsii toiseen generaattoriin kohdistuvista ajoitushyökkäyksistä, koska ulostulon nopeus muuttuu tavalla, joka riippuu toisen generaattorin tilasta. Tätä voidaan parantaa puskuroimalla ulostulo.
Suodattimen generaattori
Toinen tapa parantaa LFSR:n turvallisuutta on siirtää yhden LFSR:n koko tila epälineaariseen suodatusfunktioon.
Muut mallit
Lineaarisen ajolaitteen sijasta voidaan käyttää epälineaarista päivitysfunktiota. Esimerkiksi Klimov ja Shamir ehdottivat kolmiomaisia funktioita (T-funktioita), joilla on yksi sykli n-bittisille sanoille.
Turvallisuus
Jotta avainvirta olisi turvallinen, sen jakson (numeroiden määrä, joka tulostuu ennen kuin virta toistuu) on oltava riittävän suuri. Jos jakso toistuu, päällekkäiset salakirjoitustekstit voidaan sovittaa toisiinsa "syvyydellä", ja on olemassa tekniikoita, joiden avulla selkoteksti voidaan poimia näillä menetelmillä tuotetuista salakirjoitusteksteistä.
Käyttö
Virtamuunnoksia käytetään usein sovelluksissa, joissa selkotekstiä on määrällisesti tuntemattoman pituisia määriä, kuten suojatuissa langattomissa yhteyksissä. Jos lohkosalakirjoitusta käytettäisiin tämäntyyppisissä sovelluksissa, suunnittelijan olisi valittava joko siirtotehokkuus tai toteutuksen monimutkaisuus, koska lohkosalakirjoittajat eivät voi suoraan käsitellä lohkokokoa lyhyempiä lohkoja. Jos esimerkiksi 128-bittinen lohkosalauslaite vastaanottaa erillisiä 32-bittisiä selkotekstipätkiä, kolme neljäsosaa lähetetystä datasta tarvitsee täytettä. Lohkosalakirjoituksia on käytettävä salatun tekstin varastamisen tai jäljelle jäävän lohkon lopetustilassa, jotta pehmusteiden lisääminen voidaan välttää, kun taas virtasalakirjoitukset poistavat tämän ongelman toimimalla pienimmällä lähetetyllä yksiköllä (yleensä tavuilla).
Virtapiirien etuna sotilassalauksessa on myös se, että salausvirta voidaan luoda salauslaitteella, johon sovelletaan tiukkoja turvatoimia, ja syöttää sitten muille laitteille, esimerkiksi radiolaitteelle, jotka suorittavat xor-operaation osana toimintaansa. Toinen laite voidaan suunnitella käytettäväksi vähemmän turvallisissa ympäristöissä.
RC4 on ohjelmistoissa yleisimmin käytetty virran salausmenetelmä: A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 ja WAKE.
RC4 on yksi yleisimmin käytetyistä virran salausmalleista.
Virtaussalausten vertailu
StreamCipher | CreationDate | Nopeus | (bittiä) | Hyökkäys | |||
Tehokas | Aloitusvektori | InternalState | Parhaiten tunnettu | ComputationalComplexity | |||
A5/1 | 1989 | Puhe (Wphone) | 54 | 114 | 64 | Aktiivinen KPA TAI | ~2 sekuntia OR239.91 |
A5/2 | 1989 | Puhe (Wphone) | 54 | 114 | 64? | Aktiivinen | 4,6 millisekuntia |
KALAT | 1993 | Melko nopea (Wsoft) | Valtava | Tunnetun tekstin hyökkäys | 211 | ||
Vilja | Ennen vuotta 2004 | Nopea | 80 | 64 | 160 | Avain-derivointi | 243 |
HC-256 | Ennen vuotta 2004 | 4 (WP4) | 256 | 256 | 65536 | ||
ISAAC | 1996 | 2.375 (W64-bit) | 8-8288 yleensä | N/A | 8288 | (2006) Ensimmäisen kierroksen heikko sisäinen valtion sisäinen eroaminen | 4.67×101240 (2001) |
MUGI | 1998-2002 | 128 | 128 | 1216 | N/A (2002) | ~282 | |
PANAMA | 1998 | 2 | 256 | 128? | 1216? | Hash Collisions (2001) | 282 |
Phelix | Ennen vuotta 2004 | enintään 8 (Wx86) | 256 + 128-bittinen nonce | 128? | Differentiaali (2006) | 237 | |
Pike | 1994 | 0,9 x FISH (Wsoft) | Valtava | N/A (2004) | N/A (2004) | ||
Py | Ennen vuotta 2004 | 2.6 | 8-2048? | 64 | 8320 | Kryptoanalyyttinen teoria (2006) | 275 |
Kani | 2003-helmikuu | 3.7(WP3)-9.7(WARM7) | 128 | 64 | 512 | N/A (2006) | N/A (2006) |
1987 | Vaikuttava | 8-2048 tavallisesti | 8 | 2064 | Shamir Initial-Bytes Key-Derivation OR KPA KPA | 213 OR 233 | |
Salsa20 | Ennen vuotta 2004 | 4,24 (WG4) -11 | 128 + 64-bittinen nonce | 512 | 512 + 384 (avain+IV+indeksi) | Differentiaali (2005) | N/A (2005) |
Scream | 2002 | 4 - 5 (Wsoft) | 128 + 128-bittinen nonce | 32? | 64-bittinen kierrosfunktio | ||
SEAL | 1997 | Erittäin nopea (W32-bit) | 32? | ||||
LUMI | Ennen vuotta 2003 | Erittäin hyvä (W32-bit) | 128 TAI 256 | 32 | |||
SOBER-128 | 2003 | jopa 128 | Viesti Forge | 2−6 | |||
SOSEMANUK | Ennen vuotta 2004 | Erittäin hyvä (W32-bit) | 128 | 128 | |||
Trivium | Ennen vuotta 2004 | 4 (Wx86) - 8 (WLG) | 80 | 80 | 288 | Brute force -hyökkäys (2006) | 2135 |
Turing | 2000-2003 | 5.5 (Wx86) | 160 | ||||
LIIVI | 2005 | 42 (WASIC) -64 (WFPGA) | Vaihtelee yleensä | Vaihtelee yleensä | 256 - 800 | N/A (2006) | N/A (2006) |
WAKE | 1993 | Nopea | 8192 | CPA & CCA | Haavoittuva | ||
StreamCipher | CreationDate | Nopeus | (bittiä) | Hyökkäys | |||
Tehokas | Aloitusvektori | InternalState | Parhaiten tunnettu | ComputationalComplexity |
Aiheeseen liittyvät sivut
- eSTREAM
Kysymyksiä ja vastauksia
K: Mikä on virran salaus?
V: Virta-salaus on symmetrisen avaimen salaus, jossa selkotekstin bitit yhdistetään pseudosatunnaiseen salausbittien virtaan (avainvirtaan) käyttämällä eksklusiivista tai (xor) -operaatiota.
K: Miten se eroaa lohkosalauksista?
V: Virtasalakirjoitukset toimivat yleensä nopeammin kuin lohkosalakirjoitukset, ja niiden laitteistovaatimukset ovat alhaisemmat. Lohkosalakirjoittajat toimivat suurilla kiinteän pituisilla lohkoilla, kun taas virtasalakirjoittajat salakirjoittavat numeroita yksi kerrallaan ja peräkkäisten numeroiden muunnos vaihtelee salaustilan aikana.
Kysymys: Minkälaisia avaimia käytetään?
V: Virtasalaimet käyttävät paljon pienempiä ja kätevämpiä salausavaimia, esimerkiksi 128-bittisiä avaimia.
K: Miten se luo avainvirran?
V: Avainjono luodaan käytetyn salausavaimen perusteella samalla tavalla kuin one-time pad -salausalgoritmi. Koska avainvirta on kuitenkin pseudosatunnainen eikä aidosti satunnainen, one-time pad -menetelmään liittyvää turvallisuutta ei voida soveltaa.
Kysymys: Miksi samaa alkutilaa ei saa koskaan käyttää kahdesti?
V: Saman alkutilan käyttäminen kahdesti voi johtaa vakaviin tietoturvaongelmiin, sillä hyökkääjien on helpompi purkaa tiedot tietämättä salausavaimesta tai saamatta sitä käyttöönsä.
K: Liittyykö virtasalakirjoitusten käyttöön riskejä?
V: Kyllä, jos niitä käytetään väärin tai ilman asianmukaisia varotoimia, virtauskoodereiden käyttöön liittyy riski, sillä ne voivat olla täysin turvattomia, jos niitä ei käsitellä oikein.