Tokovna šifra (stream cipher): definicija, delovanje in ranljivosti
Tokovna šifra: jasno o definiciji, delovanju in ranljivostih v kriptografiji. Hitrost, primerjava z blokovnimi šiframi in ključne varnostne napake.
V kriptografiji je tokovna šifra simetrična šifra, pri kateri se biti odprtega besedila kombinirajo s psevdonaključnim tokom bitov šifre (tok ključa) z uporabo operacije izključujočega ali (xor). Pri tokovni šifri se števke navadnega besedila šifrirajo ena za drugo, transformacija zaporednih števk pa se med šifriranjem spreminja. Alternativno ime je državna šifra, saj je šifriranje vsake številke odvisno od trenutnega stanja. V praksi so števke običajno posamezni biti ali bajti.
Osnovno delovanje
Tokovne šifre ustvarijo dolgi psevdonaključni tok ključev iz krajšega tajnega ključnega materiala (npr. 128-bitni ključ) in ta tok kombinirajo z odprtim besedilom z operacijo XOR. Rezultat je šifrirano besedilo (cifrertekst). Če bi bil tok ključa resnično naključen in uporabljen samo enkrat, bi to ustrezalo enkratni podlogi z informacijsko popolno varnostjo. Ker pa je tok ključa psevdonaključen, se ta idealna varnost običajno ne doseže.
Vrste tokovnih šifer
- Sinkrone (synchronous): tok ključa se ustvarja neodvisno od besedila in se sinhronizira med pošiljateljem in prejemnikom. Napake pri prenosu se ne širijo, zahtevata pa natančno ujemanje začetnega stanja/nonce-a.
- Samosinkrono (self-synchronizing ali autokorelativna): tok ključa je funkcija predhodnih cifrnih bitov; če pride do izgube podatkov, se prejemnik po nekaj bitih samodejno ponovno sinhronizira. Primeri v praksi so nekateri načini delovanja blokovnih šifer (npr. CFB), ki se obnašajo kot samosinkrone tokovne šifre.
Komponente in začetno stanje
Poleg tajnega ključa tokovne šifre običajno uporabljajo še inicializacijski vektor (IV) ali nonce. Namen IV/nonce-a je zagotoviti, da se isti ključ ne uporablja z enakim tokom ključa večkrat. IV običajno ni skrivnosten (lahko je javno znan), mora pa biti unikaten (v mnogih shemah tudi nepriporočenih za ponovitev) za vsak ključ.
Tipični gradniki generatorja toka so npr. linearni registroi z liničnim povratnim prenosom (LFSR), nelinearne kombinacijske funkcije, kriptografski izvor naključnih števil (PRNG/PRF), ali pa predelava blokovne šifre v tokovno obliko (npr. CTR način delovanja). Moderni primeri so algoritmi, kot so Salsa20/ChaCha20 (ARX- zasnovani PRNG), ali lažji algoritmi za vgrajene naprave (npr. Grain, Trivium).
Primeri in uporabe
- Tokovne šifre so primerne za realnočasovne aplikacije, kot so tokovni prenos zvoka in videa, mobilna komunikacija in kriptografija v napravah z omejenimi viri (nizka latenca, majhna strojna zahtevnost).
- V zgodovini in praksi so znani primeri: RC4 (zdaj odsvetovan), A5/1 (uporabljen v GSM, zlomljen), Trivium, Grain, Salsa20/ChaCha20. Blokovne šifre v CTR načinu delovanja se funkcionalno obnašajo kot tokovne šifre.
Ranljivosti in napadi
Tokovne šifre imajo nekaj specifičnih varnostnih tveganj:
- Ponovna uporaba toka (keystream reuse): če se isti tok ključa uporablja za dva različna besedila (isti ključ in IV/nonse), sta oba cifrnega besedila xorana z istim tokom; njihov XOR odstrani tok in poda XOR obeh odprtih besedil, kar pogosto omogoča razkritje vsebine — to je klasika »two-time pad« napake.
- Napadi s poznanim odprtim besedilom: če napadalec pozna del odprtega besedila, lahko iz njega izpelje ustrezne dele toka in s tem napade na preostanek komunikacije ali celo izvede okrepitev stanja.
- Bit-flipping/integričnost: ker je osnovna operacija XOR, napadalec, ki spremeni bit v cifrnem besedilu, ustrezno spremeni kot bit v odprtem besedilu — zato osnovne tokovne šifre ne zagotavljajo integritete ali avtentičnosti.
- Statistične in strukturne šibkosti: nekateri algoritmi (npr. starejši RC4) kažejo pristranskosti v toku, kar omogoča razlikovalne napade in izpostavlja tajne podatke. LFSR-bazirane sheme so lahko tarča korelacijskih ali algebričnih napadov, ki obnovijo stanje.
- Premajhno stanje in cikličnost: če je notranje stanje generatorja kratko, se tok lahko ponovi ali ima kratko periodičnost, kar oslabi varnost.
- Napadi z odzivnim časom in stranskimi kanali: slabe implementacije lahko razkrijejo del stanja skozi čas izvajanja, porabo energije ali elektromagnetno sevanje.
- Napadi s predelavo ključa (related-key): nekatere konstrukcije so občutljive, če napadalec lahko izvede šifriranje z različnimi, sorodnimi ključi.
Praktični primeri napadov
- Dešifriranje A5/1 in A5/2 (GSM): uporaba naprednih kriptoanalitičnih in time–memory–tradeoff tehnik je omogočila hitro obnovo stanja oziroma ključa.
- RC4: zaradi začetnih pristranskosti toka in drugih slabosti je bil RC4 odsvetovan v protokolih, kot so TLS in WPA.
- Korelacijski in algebrični napadi na LFSR-bazirane sheme: če so relacije med notranjimi registri šibke, lahko napadalci obnovijo stanje iz opazovanih bitov toka.
Varne prakse in priporočila
- Ne ponavljajte istega para ključ+IV/nonsa. IV naj bo unikaten za vsak klic in, če to zahteva shema, tudi naključen z dovolj entropije.
- Uporabljajte sodobne in pregledane algoritme (npr. ChaCha20 skupaj s Poly1305 kot AEAD v ChaCha20-Poly1305). Salsa20 in ChaCha sta dobri izbiri za praktične tokovne aplikacije; RC4 naj se ne uporablja več.
- Ker tokovne šifre same po sebi ne zagotavljajo integritete, vedno uporabljajte avtentični način (AEAD) ali ločen MAC, da preprečite potvorbe (bit-flipping napade).
- Zagotovite dovolj velik notranji prostor stanja in dolžino ključa, da zmanjšate možnost циклiranja ali brute-force napadov.
- Implementirajte zaščite proti stranskim kanalom (constant-time operacije, omejevanje izločanja napetosti/podatkov) in pazite na pravilno upravljanje ključev (varno shranjevanje, generiranje in uničenje).
- Za aplikacije, kjer je možno, razmislite o uporabi zanesljivega blokovnega načina (npr. AES-GCM) ali preverjenih AEAD-shema za kombinacijo zaupnosti in integritete.
Zaključek
Tokovne šifre so učinkovit in pogosto zelo hiter način za zagotovitev zaupnosti v situacijah z nizko zakasnijo in omejenimi viri. Vendar zahtevajo strogo upravljanje ključev in IV/nonce-ov ter previdno izbiro algoritma in implementacije. Nepravilna uporaba (zlasti ponovna uporaba toka) ali uporaba krhkih, nepreverjenih algoritmov lahko vodi do katastrofalnih kompromisov.
Če želite praktičen namig: uporabite preverjene, sodobne protokole in kombinacije (npr. ChaCha20-Poly1305 ali AES-GCM), zagotovite unikatnost nonce-ov, in vedno vključite mehanizem za preverjanje integritete/avtentikacije.

Delovanje generatorja toka ključev v A5/1, tokovni šifri, ki temelji na LFSR in se uporablja za šifriranje pogovorov po mobilnih telefonih.
Vrste tokovnih šifer
Tokovna šifra generira zaporedne elemente toka ključev na podlagi notranjega stanja. To stanje se posodablja na dva načina:
- Če se stanje spreminja neodvisno od sporočil z odprtim ali šifriranim besedilom, se šifra uvršča med sinhrone tokovne šifre.
- Če se stanje posodablja na podlagi prejšnjih sprememb številk šifriranega besedila, se šifra uvršča med samosinhronizirajoče se tokovne šifre.
Sinhrone tokovne šifre
Pri sinhroni tokovni šifri se tok psevdonaključnih številk ustvari neodvisno od sporočil z odprtim in šifriranim besedilom ter se nato združi z odprtim besedilom (za šifriranje) ali s šifriranim besedilom (za dešifriranje). V najpogostejši obliki se uporabljajo binarne številke (biti), tok ključev pa se kombinira z odprtim besedilom z uporabo operacije izključujočega ali (XOR). To se imenuje binarna aditivna tokovna šifra.
Pri sinhroni pretočni šifri morata biti pošiljatelj in prejemnik sinhroni, da je dešifriranje uspešno. Če se med prenosom sporočilu dodajo ali odstranijo števke, se sinhronizacija izgubi. Za ponovno vzpostavitev sinhronizacije lahko sistematično preizkušamo različne odmike, da dobimo pravilno dešifriranje. Drug pristop je označevanje šifriranega besedila z označevalci na rednih točkah v izhodu.
Če pa je pri prenosu številka poškodovana, ne pa dodana ali izgubljena, je prizadeta samo ena številka v odprtem besedilu in napaka se ne razširi na druge dele sporočila. Ta lastnost je uporabna, kadar je stopnja napak pri prenosu visoka; vendar je zaradi nje manj verjetno, da bi bila napaka odkrita brez dodatnih mehanizmov. Poleg tega so zaradi te lastnosti sinhrone tokovne šifre zelo dovzetne za aktivnenapade - če lahko napadalec spremeni števko v šifriranem besedilu, lahko predvidljivo spremeni tudi ustrezni bit v odprtem besedilu; na primer, obračanje bita v šifriranem besedilu povzroči obračanje(Toggling) istega bita v odprtem besedilu.
Samosinhronizirajoče tokovne šifre
Samosinhronizirajoče tokovne šifre so še ena tehnika, ki za izračun toka ključev uporablja del prejšnjih N številk šifriranega besedila. Takšne sheme so znane tudi kot asinhronizacijske tokovne šifre ali samodejni ključ šifriranega besedila (CTAK). Zamisel o samosinhronizaciji je bila patentirana leta 1946, njena prednost pa je, da se sprejemnik po prejemu N številk šifrirnega besedila samodejno sinhronizira z generatorjem toka ključev, kar olajša obnovitev, če so številke izpadle ali dodane toku sporočila. Učinek enomestnih napak je omejen, saj vplivajo le na največ N številk odprtega besedila. Aktivne napade na samosinhronizirajoče se tokovne šifre je nekoliko težje izvesti kot na sinhrone.
Primer samosinhronizacijske tokovne šifre je blokovna šifra v načinu šifriranja s povratno informacijo (CFB).
Tokovne šifre na podlagi linearnega povratnega premičnega registra
Binarne tokovne šifre so pogosto zgrajene z linearnimi izmeničnimi registri (LFSR), saj jih je mogoče enostavno implementirati v strojni opremi in hitro matematično analizirati. Vendar uporaba samo LFSR ne zadostuje za zagotavljanje dobre varnosti. Za povečanje varnosti LFSR-jev so bile zasnovane različne sheme.
Nelinearne funkcije združevanja
Ker so LFSR-ji po naravi linearni, je ena od tehnik za odpravo linearnosti ta, da izhode skupine vzporednih LFSR-jev vnesemo v nelinearno Boolejevo funkcijo in tako oblikujemo generator kombinacij. Različne lastnosti takšne kombinacijske funkcije so pomembne za zagotavljanje varnosti nastale sheme, na primer za preprečevanje korelacijskih napadov.
Generatorji, krmiljeni z uro
Običajno se LFSR-ji redno stopnjujejo. Ena od tehnik uvajanja nelinearnosti je, da se LFSR taktira neredno, kar se nadzoruje z izhodom drugega LFSR. Takšni generatorji vključujejo generator stop-and-go, generator izmeničnih korakov in generator krčenja.
Generator stop-and-go (Beth in Piper, 1984) je sestavljen iz dveh LFSR. En LFSR se taktizira, če je izhod drugega "1", v nasprotnem primeru pa ponovi svoj prejšnji izhod. Ta izhod se nato (v nekaterih različicah) združi z izhodom tretjega LFSR, ki se taktira z redno frekvenco.
Generator za krčenje uporablja drugačno tehniko. Uporabljena sta dva LFSR, ki sta redno taktirana na naslednji način:
- Če je izhod prvega LFSR "1", izhod drugega LFSR postane izhod generatorja.
- Če je izhod prvega LFSR "0", se izhod drugega zavrže, generator pa ne izpiše nobenega bita.
Ta tehnika je izpostavljena časovnim napadom na drugi generator, saj se hitrost izhoda spreminja v odvisnosti od stanja drugega generatorja. To se lahko izboljša s predpomnilnikom na izhodu.
Generator filtrov
Drug pristop k izboljšanju varnosti LFSR je prenos celotnega stanja posameznega LFSR v nelinearno filtrirno funkcijo.
Drugi modeli
Namesto linearne pogonske naprave lahko uporabimo nelinearno funkcijo posodabljanja. Klimov in Shamir sta na primer predlagala trikotniške funkcije (T-funkcije) z enim ciklom na n bitnih besedah.
Varnost
Da bi bil tok ključev varen, mora biti perioda toka ključev (število številk, preden se tok ponovi) dovolj velika. Če se zaporedje ponavlja, je mogoče prekrivajoča se šifrirna besedila med seboj "v globino" poravnati in obstajajo tehnike, ki omogočajo pridobivanje navadnega besedila iz šifrirnih besedil, ustvarjenih s temi metodami.
Uporaba
Tokovne šifre se pogosto uporabljajo v aplikacijah, kjer je odprto besedilo v količinah neznane dolžine, kot pri varnih brezžičnih povezavah. Če bi se blokovna šifra uporabljala v tovrstnih aplikacijah, bi moral oblikovalec izbrati bodisi učinkovitost prenosa bodisi zapletenost izvedbe, saj blokovne šifre ne morejo neposredno delovati na blokih, ki so krajši od njihove velikosti bloka. Če na primer 128-bitna blokovna šifra prejme ločene 32-bitne serije odprtega besedila, je treba tri četrtine prenesenih podatkov zapolniti. Blokovne šifre je treba uporabljati v načinu kraje šifriranega besedila ali v načinu zaključevanja preostalih blokov, da bi se izognili polnitvi, medtem ko tokovne šifre to težavo odpravijo z delovanjem na najmanjši preneseni enoti (običajno bajtih).
Druga prednost tokovnih šifer v vojaški kriptografiji je, da lahko tok šifer ustvari šifrirna naprava, za katero veljajo strogi varnostni ukrepi, nato pa ga posreduje drugim napravam, npr. radijskemu sprejemniku, ki v okviru svoje funkcije izvedejo operacijo xor. Druga naprava je lahko zasnovana za uporabo v manj varnih okoljih.
RC4 je najpogosteje uporabljena pretočna šifra v programski opremi; druge so: A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 in WAKE.

RC4 je ena od najbolj razširjenih oblik tokovnih šifer.
Primerjava pretočnih šifer
| StreamCipher | CreationDate | Hitrost | (bitov) | Napad | |||
| Učinkovito | Inicializacijski vektor | InternalState | Najbolj znani | Računska zapletenost | |||
| A5/1 | 1989 | Glas (Wphone) | 54 | 114 | 64 | Aktivni KPA ali | ~2 sekunde OR239.91 |
| A5/2 | 1989 | Glas (Wphone) | 54 | 114 | 64? | Aktivno | 4,6 milisekunde |
| FISH | 1993 | Dokaj hitro (Wsoft) | Ogromno | Napad z znanim besedilom | 211 | ||
| Zrno | Pred letom 2004 | Hitro | 80 | 64 | 160 | Razlikovanje ključev | 243 |
| HC-256 | Pred letom 2004 | 4 (WP4) | 256 | 256 | 65536 | ||
| ISAAC | 1996 | 8-8288običajno | NI RELEVANTNO | 8288 | (2006) Prvi krog - šibka notranja državna razdelitev | 4.67×101240 (2001) | |
| MUGI | 1998-2002 | 128 | 128 | 1216 | NI PODATKA (2002) | ~282 | |
| PANAMA | 1998 | 2 | 256 | 128? | 1216? | Trkanje s čašami (2001) | 282 |
| Phelix | Pred letom 2004 | do 8 (Wx86) | 256 + 128-bitna kodo Nonce | 128? | Diferencial (2006) | 237 | |
| Pike | 1994 | 0,9 x FISH (Wsoft) | Ogromno | NI PODATKA (2004) | NI PODATKA (2004) | ||
| Py | Pred letom 2004 | 2.6 | 8-2048? | 64 | 8320 | Kriptanalitična teorija (2006) | 275 |
| Zajec | 2003-februar | 3,7 (WP3) - 9,7 (WARM7) | 128 | 64 | 512 | NI PODATKA (2006) | NI PODATKA (2006) |
| 1987 | Impresivni | 8-2048običajno | 8 | 2064 | Šamirjeva začetno-bitna derivacija ključa OR KPA | 213 OR 233 | |
| Salsa20 | Pred letom 2004 | 4,24 (WG4) -11 | 128 + 64-bitni kod Nonce | 512 | 512 + 384 (ključ+IV+indeks) | Diferencial (2005) | NI PODATKA (2005) |
| Krik | 2002 | 4 - 5 (Wsoft) | 128 + 128-bitni znak brez kode | 32? | 64-bitna funkcija zaokroževanja | ||
| SEAL | 1997 | Zelo hitro (W32-bit) | 32? | ||||
| SNOW | Pred letom 2003 | Zelo dobro (W32-bit) | 128 ALI 256 | 32 | |||
| SOBER-128 | 2003 | do 128 | Kovačnica sporočil | 2−6 | |||
| SOSEMANUK | Pred letom 2004 | Zelo dobro (W32-bit) | 128 | 128 | |||
| Trivium | Pred letom 2004 | 4 (Wx86) - 8 (WLG) | 80 | 80 | 288 | Napad z grobo silo (2006) | 2135 |
| Turing | 2000-2003 | 5.5 (Wx86) | 160 | ||||
| VEST | 2005 | 42 (WASIC) -64 (WFPGA) | Spremenljivoobičajno | Spremenljivoobičajno | 256 - 800 | NI PODATKA (2006) | NI PODATKA (2006) |
| WAKE | 1993 | Hitro | 8192 | CPA IN CCA | Ranljivi | ||
| StreamCipher | CreationDate | Hitrost | (bitov) | Napad | |||
| Učinkovito | Inicializacijski vektor | InternalState | Najbolj znani | Računska zapletenost | |||
Sorodne strani
- eSTREAM
Vprašanja in odgovori
V: Kaj je tokovna šifra?
O: Tokovna šifra je šifra s simetričnim ključem, pri kateri se biti odprtega besedila kombinirajo s psevdonaključnim tokom bitov šifre (tok ključa) z uporabo operacije izključnega ali (xor).
V: Kako se razlikuje od blokovnih šifer?
O: Tokovne šifre se običajno izvajajo z večjo hitrostjo kot blokovne šifre in imajo manjše strojne zahteve. Blokovne šifre delujejo na velikih blokih fiksne dolžine, medtem ko pretočne šifre šifrirajo števke eno za drugo, transformacija zaporednih števk pa se med šifriranjem spreminja.
V: Kakšno vrsto ključev uporablja?
O: Tokovne šifre uporabljajo veliko manjše in priročnejše kriptografske ključe, na primer 128-bitne ključe.
V: Kako generira tok ključev?
O: Tok ključev se generira na podlagi uporabljenega kriptografskega ključa, podobno kot pri algoritmu šifriranja z enkratno podlogo. Ker pa je tok ključev psevdonaključen in ne resnično naključen, ni mogoče uporabiti varnosti, povezane z enkratnim blokom.
V: Zakaj nikoli ne smete dvakrat uporabiti istega začetnega stanja?
O: Dvakratna uporaba istega začetnega stanja lahko privede do resnih varnostnih težav, saj napadalci lažje dešifrirajo podatke, ne da bi poznali ali imeli dostop do vašega kriptografskega ključa.
V: Ali je z uporabo tokovnih šifer povezano kakšno tveganje?
O: Da, če se uporabljajo nepravilno ali brez ustreznih previdnostnih ukrepov, je z uporabo tokovnih šifer povezano tveganje, saj so lahko popolnoma nezanesljive, če se z njimi ne ravna pravilno.
Iskati