Kriptografijoje srautinis šifras yra simetrinis rakto šifras, kai atvirojo teksto bitai sujungiami su pseudorandominiu šifro bitų srautu (rakto srautu) naudojant išskirtinio arba (xor) operaciją. Srautiniame šifre paprasto teksto skaitmenys užšifruojami po vieną, o vienas po kito einančių skaitmenų transformacija keičiasi šifravimo būsenos metu. Alternatyvus pavadinimas yra būsenos šifras, nes kiekvieno skaitmens šifravimas priklauso nuo esamos būsenos. Praktikoje skaitmenys paprastai yra pavieniai bitai arba baitai. Dešifravimas atliekamas ta pačia XOR operacija – jeigu tą patį raktų srautą XOR sugretinsime su užšifruotu tekstu, gausime atgal atvirą tekstą.

Veikimo principas

Srautinis šifras remiasi dviem pagrindinėmis dalimis:

  • inicializacijos komponentu: trumpas kriptografinis raktas ir dažnai papildoma pradinė būsena (IV, nonce) – tai nustato pradines sąlygas;
  • pseudorandominio srauto generatoriumi (PRG), kuris pagal raktą ir pradinę būseną nuosekliai generuoja ilgą raktų srautą, naudojamą XOR operacijoms su atviruoju tekstu.

Generatorių įgyvendinti galima įvairiais būdais: naudojant linearinį atsiliepimų poslinkio registrą (LFSR), nelinierinius LFSR derinius, pašalinimo funkcijas, arba išvedant srautą iš paties blokinio šifro (pvz., CTR režimas). Kiekvienas iš šių mechanizmų apibrėžia būsenos atnaujinimo ir išvedimo funkcijas. Srautiniai šifrai skirstomi į:

  • sinchroninius – raktų srautas priklauso tik nuo rakto ir IV/nonce, nepriklauso nuo atvirojo arba užšifruoto teksto; dešifravimui reikia tik tokio pat raktų srauto;
  • savisisinchronizuojančius (self-synchronizing) – raktų srauto įtaka priklauso nuo kelių ankstesnių šifruoto teksto bitų; po tam tikro bitų skaičiaus gavimo dešifravimas vėl sinchronizuojasi.

Privalumai ir trūkumai

  • Privalumai: paprastai didelis našumas ir maži aparatinės įrangos reikalavimai, mažas vėlavimas (tinka realaus laiko srautams), galima šifruoti nepriklausomai nuo teksto ilgio.
  • Trūkumai: aukštas rizikos lygis esant netinkamam naudojimui – ypač pavojinga raktų srauto pakartojimo (to pačio rakto ir IV kombinacijos) atvejis; dažnai neturi įmontuoto vientisumo patikrinimo, todėl reikia naudoti autentifikaciją (MAC arba AEAD).

Saugumo problemos ir žinomos atakos

Keletas pagrindinių saugumo pavojų ir praktinių klaidų:

  • Raktų srauto pakartojimas (two-time pad): jei tas pats kriptografinis raktas arba tas pats rakto+nonce derinys panaudojamas daugiau nei vienam pranešimui, keičiant užšifruotus tekstus lengvai išvedamos informacijos – tai klasikinė katastrofiška klaida.
  • Bias ir atpažinimas: kai kurie PRG turi statistinių nuokrypių (pvz., RC4 KSA šališkumai), kas leidžia vykdyti atskleidimo ar atskiriamosios atakas.
  • Koreliacinės ir būsenos atkūrimo atakos: LFSR tipo konstrukcijos be pakankamos nelinieriškumo apsaugos gali leisti atakotojui atstatyti vidinę būseną iš stebimo raktų srauto.
  • Pakeitimo (bit-flipping) atakos: XOR pobūdis reiškia, kad užšifruoto teksto bitus galima pakeisti, nenutraukiant dešifravimo; be autentifikacijos tokie pokyčiai lieka neaptikti.
  • Implementacijos atakos: laiko analizė, energetikos ar kanalų nutekėjimas (side-channel) gali atskleisti raktą ar vidinę būseną.

Istoriškai žinomi pavyzdžiai: RC4 – daugelio protokolų atšauktas dėl KSA bias problemų; mobiliojo ryšio A5/1, A5/2 – turėjo dizaino ir įgyvendinimo spragų, leidusių vykdyti atakas.

Praktinės rekomendacijos saugiam naudojimui

  • Naudokite gerai išnagrinėtus ir pripažintus algoritmus: pvz., ChaCha20 (dažnai kartu su Poly1305 kaip AEAD) arba AES režimu CTR su tinkama autentifikacija (pvz., AES-GCM).
  • Užtikrinkite unikalų nonce/IV kiekvienam pranešimui tam pačiam raktui; niekada neleidžiama pakartoti tokio pat nonce+key derinio.
  • Visada derinkite šifravimą su autentifikacija (MAC arba AEAD) – tai apsaugo nuo pakeitimų ir tam tikrų aktyvių atakų.
  • Aplenkite pasenusius arba įrodyta nesaugus sprendimus (pvz., RC4). Sekite kriptografų rekomendacijas ir standartus.
  • Tinkamai valdykite raktus: rotacija, saugus saugojimas, tinkamas gyvavimo laikas ir prieigos kontrolė.
  • Atkreipkite dėmesį į įgyvendinimą – saugokite nuo side-channel nutekėjimų, naudokite saugios bibliotekas ir pasirūpinkite testavimu bei patikrinimais.

Panaudojimo sritys

Srautiniai šifrai tinka scenarijams, kuriuose svarbus našumas ir mažas vėlavimas, pavyzdžiui, realaus laiko vaizdo ar garso transliacijose, daugelio tinklo protokolų vietose (anksčiau – kai kuriose TLS implementacijose), mobiliame ryšyje ir aparatūroje su ribotais resursais. Tačiau dėl vientisumo poreikio ir saugumo reikalavimų vis dažniau rekomenduojami AEAD sprendimai (pvz., ChaCha20-Poly1305 arba AES-GCM).

Apibendrinant: srautinis šifras – tai efektyvus ir lankstus įrankis duomenų slėpimui, tačiau saugumas labai priklauso nuo teisingo rakto/nonce valdymo, PRG kokybės ir papildomos autentifikacijos. Naudokite tik patikrintas konstrukcijas ir užtikrinkite, kad raktų srautai niekada nebūtų pakartotinai naudojami.