Tokovna šifra
V kriptografiji je tokovna šifra simetrična šifra ključa, 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.
Tokovne šifre predstavljajo drugačen pristop k simetričnemu šifriranju kot blokovne šifre. Blokovni šifri delujejo na velikih blokih fiksne dolžine. Tokovne šifre se običajno izvajajo z večjo hitrostjo kot blokovne šifre in imajo manjše strojne zahteve. Vendar so lahko tokovne šifre ob nepravilni uporabi izpostavljene resnim varnostnim težavam; zlasti se na primer nikoli ne sme dvakrat uporabiti isto začetno stanje.
Tokovna šifra uporablja veliko manjši in priročnejši kriptografski ključ, na primer 128-bitni ključ. Na podlagi tega ključa ustvari psevdorandomni tok ključev, ki ga je mogoče kombinirati z znaki odprtega besedila na podoben način kot algoritem š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, in je povsem mogoče, da je tokovna šifra popolnoma nezanesljiva.
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.