Kriptogrāfijā straumes šifrs ir simetrisks atslēgas šifrs, kurā atklātā teksta biti vai simboli tiek kombinēti ar pseidonormālu šifrējošo bitu plūsmu (atslēgas plūsmu), izmantojot ekskluzīvu VAI (XOR) operāciju. Straumes šifrā vienkāršā teksta ciparus parasti šifrē pa vienam, un to transformācija mainās atkarībā no šifra iekšējā stāvokļa laika gaitā. Tāpēc bieži lieto arī nosaukumu stāvokļa šifrs. Praktiskā realizācijā šie cipari parasti ir atsevišķi biti vai baiti.
Darbības princips un galvenās iezīmes
Straumes šifra pamatā ir pseidononāls kriptogrāfiska atslēga (piem., 128 bitu atslēga), no kuras ģenerējas atslēgas plūsma. Šīs plūsmas biti pēc tam tiek XOR‑oti ar atklātā teksta bitiem, iegūstot šifrtekstu. Tā koncepcija ir līdzīga vienreizējā blociņa šifrēšanas algoritmā, kur atslēgas plūsma tiek pievienota atklātajam tekstam. Tomēr atšķirība ir tā, ka vienreizējais blociņš (one‑time pad) izmanto patiesi nejaušu, vienreiz lietojamu atslēgu tādā pašā garumā kā ziņojums — tas dod informācijas teorētisku drošību. Straumes šifri izmanto pseidonorādītu atslēgas plūsmu, ko ģenerē deterministisks algoritms, tāpēc tiem nevar piešķirt to pašu absolūto drošību kā perfektam viena lietojuma atslēgas blociņam.
Salīdzinājums ar bloku šifriem
- Straumes šifri apstrādā datus bitu vai baitu līmenī un labi der straumējošām datu plūsmām (piem., reāllaika komunikācijai), kamēr bloku šifri darbojas ar fiksēta garuma blokiem.
- Straumes šifri var būt ātrāki un prasīt mazāk aparatūras resursu, īpaši pieskaņojot bitu līmeņa apstrādi.
- Bloku šifrus bieži izmanto strādājot ar blokiem un režīmiem (CBC, CTR u. c.), taču arī no blokšifriem var izveidot straumes režīmus (piem., CTR režīms ģenerē keistrīmu).
Tipos un konstrukcijas
Straumes šifrus parasti iedala divās grupās:
- Sinkronie straumes šifri — ģenerē atslēgas plūsmu autonomi, neatkarīgi no atklātā teksta. Svarīgi, lai neizmantotu vienu un to pašu sākuma stāvokli (atslēga + IV) divreiz.
- Pašsynchronizējošie (self‑synchronizing) šifri — atslēgas plūsma atkarīga no pēdējiem n šifrētajiem simboliem; pēc pārraides traucējumiem šādi šifri var automātiski sinhronizēties pēc noteikta daudzuma simbolu.
Praktiski piemēri
Vēsturē un praksē ir bijuši gan veiksmīgi, gan nedroši risinājumi. Slaveni piemēri: RC4 (daudzas lietojumprogrammas, taču ar nopietnām vājībām), GSM A5/1 (publiski salauzts), un mūsdienu, drošākie risinājumi — Salsa20 un ChaCha20 (plaši izmantoti). Pastāv arī speciāli vieglie straumes šifri, piemēram, Trivium un Grain, paredzēti ierobežotām ierīcēm.
Drošības riski un biežākās kļūdas
Straumes šifri var būt ļoti efektīvi, taču tie ir arī jutīgi pret konkrētām kļūdām:
- Keistrīma atkārtota lietošana: ja vienu un to pašu atslēgas plūsmu izmanto divām dažādām ziņām (piem., atkārtota atslēga vai IV), pretinieks var viegli iegūt informāciju — jo C1 XOR C2 = P1 XOR P2.
- Vājais inicializācijas vektors (IV/nonce): IV jāizmanto pareizi (unikāls katrai sūtījumam sinkronajos šifros). IV atkārtota lietošana ir katastrofāla.
- Nedrošs pseido‑gadījuma ģenerators: ja ģenerators nav kriptogrāfiski drošs, atslēgas plūsma var saturēt aizdomīgas struktūras, kuras var izmantot uzbrukumos (piem., korelācijas uzbrukumi, algebraiskas metodes).
- Stāvokļa rekonstruēšana: ja pretinieks var novērot pietiekami daudz šifrteksta vai keistrīma bitu, pastāv risks atjaunot šifra iekšējo stāvokli un atslēgu.
- Algoritmiskas vājības: daži šifri (piem., RC4) satur statistiskas novirzes keistrīmā, kuras izmanto, lai atklātu daļēju vai pilnīgu atklātā teksta informāciju.
Pretpasākumi un labākā prakse
- Izmantojiet kriptogrāfiski pārbaudītus, publiski auditētus šifrus (piemēram, ChaCha20), nevis paša izstrādātus risinājumus.
- Garantējiet, ka katram ziņojumam ir unikāls IV/nonce; nekad nepārdaliet to pašu kombināciju (atslēga + IV).
- Izmantojiet autentifikācijas mehānismus (MAC vai AEAD režīmus), jo straumes šifri nodrošina konfidencialitāti, bet ne integritāti vai autentiskumu.
- Pareiza atslēgu pārvaldība — pietiekama atslēgas garuma (parasti ≥128 bitu), droša izveide un regulāra pārsleĢošana, ja nepieciešams.
- Izvairieties no novecojušiem vai publiski kompromitētiem šifriem (piem., RC4), un sekojiet laika gaitā publiskotajiem drošības paziņojumiem.
Kopsavilkums
Straumes šifri ir efektīvs veids, kā šifrēt straumējošus datus, nodrošinot zemu kavējumu un zemas aparatūras prasības. Tomēr drošība būtiski atkarīga no pareizas inicializācijas (atslēgas + IV), spēcīga pseido‑gadījuma ģeneratora un pareizas atslēgu pārvaldības. Nepareiza izmantošana — it īpaši atslēgas plūsmas atkārtota lietošana — var novest pie nopietniem datu noplūdes riskiem. Lai nodrošinātu drošu izmantojumu, izvēlieties modernus, pārbaudītus algoritmus un papildiniet tos ar autentifikācijas mehānismiem.


