Streamujte šifru - Stream cipher
A proudová šifra je symetrický klíč šifra kde číslice prostého textu jsou kombinovány s a pseudonáhodné proud číslicových číslic (keystream ). V proudové šifře každý prostý text číslice je zašifrován jeden po druhém s odpovídající číslicí klíčového proudu, čímž se získá číslice šifrový text proud. Protože šifrování každé číslice závisí na aktuálním stavu šifry, je také známé jako státní šifra. V praxi je číslice obvykle a bit a kombinující operace je exclusive-or (XOR).
Pseudonáhodný klíčový proud je typicky generován sériově z náhodné počáteční hodnoty pomocí digitálního posuvné registry. The počáteční hodnota slouží jako kryptografický klíč pro dešifrování proudu ciphertext. Streamové šifry představují odlišný přístup k symetrickému šifrování od blokové šifry. Blokové šifry fungují na velkých blocích číslic s pevnou neměnnou transformací. Tento rozdíl není vždy jasný: v některých režimy provozu, primitivum blokové šifry se používá takovým způsobem, že funguje efektivně jako proudová šifra. Streamové šifry se obvykle spouštějí vyšší rychlostí než blokové šifry a mají nižší hardwarovou složitost. Šifry streamů však mohou být při nesprávném použití náchylné k vážným bezpečnostním problémům (viz streamovat šifrovací útoky ); zejména nikdy nesmí být dvakrát použit stejný počáteční stav (seed).
Volná inspirace z jednorázové podložky
Streamové šifry lze považovat za přibližné působení osvědčené nerozbitné šifry, jednorázová podložka (OTP). Jednorázová podložka používá a keystream úplně náhodný číslice. Klíčový proud je kombinován s číslicemi prostého textu po jedné a tvoří tak šifrovací text. Ukázalo se, že tento systém je bezpečný Claude E. Shannon v roce 1949. Klíčový proud však musí být generován zcela náhodně s alespoň stejnou délkou jako prostý text a nelze jej použít více než jednou. Díky tomu je systém těžkopádný při implementaci do mnoha praktických aplikací a ve výsledku se jednorázová podložka nepoužívá široce, s výjimkou nejdůležitějších aplikací. Generování, distribuce a správa klíčů jsou pro tyto aplikace zásadní.
Streamová šifra využívá mnohem menší a pohodlnější klíč, například 128 bitů. Na základě tohoto klíče generuje pseudonáhodný klíčový proud, který lze kombinovat s číslicemi prostého textu podobným způsobem jako jednorázový pad. To však stojí za cenu. Klíčový proud je nyní pseudonáhodný, takže není skutečně náhodný. Doklad o zabezpečení spojený s jednorázovou podložkou již neplatí. Je docela možné, že proudová šifra bude zcela nejistá.
Typy
Šifra proudu generuje po sobě jdoucí prvky klíčového proudu na základě interního stavu. Tento stav se aktualizuje v zásadě dvěma způsoby: pokud se stav změní nezávisle na prostém textu nebo šifrový text zpráv je šifra klasifikována jako a synchronní proudová šifra. Naproti tomu automatická synchronizace proudové šifry aktualizují svůj stav na základě předchozích číslic šifrovacího textu.
Šifry synchronního proudu

V synchronní proudová šifra proud pseudonáhodných číslic je generován nezávisle na zprávách prostého textu a šifrovacího textu a poté kombinován s prostým textem (k šifrování) nebo šifrovým textem (k dešifrování). V nejběžnější formě se používají binární číslice (bity ) a keystream je kombinován s holým textem pomocí exkluzivní nebo provoz (XOR). Toto se nazývá a binární aditivní proudová šifra.
V šifře synchronního proudu musí být odesílatel a příjemce přesně v kroku, aby bylo dešifrování úspěšné. Pokud jsou během přenosu přidány nebo odebrány číslice ze zprávy, synchronizace se ztratí. Chcete-li obnovit synchronizaci, můžete systematicky vyzkoušet různé posuny, abyste získali správné dešifrování. Dalším přístupem je označení ciphertextu značkami v pravidelných bodech výstupu.
Pokud je však číslice v přenosu poškozená, místo aby byla přidána nebo ztracena, je ovlivněna pouze jedna číslice v prostém textu a chyba se nerozšíří do jiných částí zprávy. Tato vlastnost je užitečná, když je vysoká chybovost přenosu; je však méně pravděpodobné, že by byla chyba detekována bez dalších mechanismů. Díky této vlastnosti jsou navíc šifry synchronních proudů velmi náchylné aktivní útoky: pokud může útočník změnit číslici v šifrovacím textu, může být schopen provést předvídatelné změny v odpovídajícím holém textu; například převrácení bitu v ciphertextu způsobí, že se stejný bit převrátí v prostém textu.
Samosynchronizující se šifry proudu
Jiný přístup využívá několik předchozích N ciphertext digits pro výpočet keystream. Taková schémata jsou známá jako samosynchronizující se šifry proudu, šifry asynchronního proudu nebo autokey šifrovacího textu (CTAK). Myšlenka vlastní synchronizace byla patentována v roce 1946 a má tu výhodu, že se přijímač po přijetí automaticky synchronizuje s generátorem klíčového proudu N ciphertext digits, což usnadňuje obnovení, pokud jsou číslice vynechány nebo přidány do streamu zprávy. Účinky jednociferných chyb jsou omezené a ovlivňují pouze až N číslice prostého textu.
Příkladem samosynchronizující proudové šifry je bloková šifra šifrovací zpětná vazba (CFB) režimu.
Na základě posuvných registrů s lineární zpětnou vazbou
Šifry binárních proudů jsou často konstruovány pomocí lineární zpětnovazební posuvné registry (LFSR), protože je lze snadno implementovat do hardwaru a lze je snadno matematicky analyzovat. Samotné použití LFSR je však nedostatečné k zajištění dobrého zabezpečení. Byly navrženy různé režimy ke zvýšení bezpečnosti LFSR.
Nelineární kombinující funkce

Protože LFSR jsou ze své podstaty lineární, jednou technikou pro odstranění linearity je přivádění výstupů několika paralelních LFSR do nelineárních Booleovská funkce vytvořit a kombinovaný generátor. Různé vlastnosti takové a kombinující funkce jsou rozhodující pro zajištění bezpečnosti výsledného schématu, například aby se zabránilo korelační útoky.
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (Červen 2008) |
Generátory řízené hodinami
Normálně jsou LFSR pravidelně krokovány. Jedním z přístupů k zavedení nelinearity je nepravidelné taktování LFSR, řízené výstupem druhého LFSR. Mezi takové generátory patří stop-and-go generátor, generátor střídavého kroku a zmenšující se generátor.
An generátor střídavého kroku obsahuje tři LFSR, které budeme pro větší pohodlí nazývat LFSR0, LFSR1 a LFSR2. Výstup jednoho z registrů rozhodne, který z ostatních dvou se má použít; například pokud výstup LFSR2 a 0, je taktován LFSR0, a pokud je výstup 1, je taktován LFSR1. Výstupem je výhradní OR posledního bitu produkovaného LFSR0 a LFSR1. Počáteční stav tří LFSR je klíč.
Generátor stop-and-go (Beth a Piper, 1984) se skládá ze dvou LFSR. Jeden LFSR je taktovaný, pokud je výstup sekundy 1, jinak opakuje svůj předchozí výstup. Tento výstup je poté (v některých verzích) kombinován s výstupem třetího LFSR taktovaným pravidelným tempem.
The zmenšující se generátor má jiný přístup. Používají se dva LFSR, oba taktované pravidelně. Pokud je výstup prvního LFSR 1, výstup druhého LFSR se stane výstupem generátoru. Pokud však první LFSR vydá 0, výstup druhého je zahozen a generátor nevydá žádný bit. Tento mechanismus trpí načasováním útoků na druhý generátor, protože rychlost výstupu je proměnlivá způsobem, který závisí na stavu druhého generátoru. To lze zmírnit vyrovnávací pamětí výstupu.
Generátor filtru
Dalším přístupem ke zlepšení zabezpečení LFSR je předat celý stav jednoho LFSR do nelineárního funkce filtrování.
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (Červen 2008) |
Jiné designy

Místo lineárního hnacího zařízení lze použít funkci nelineární aktualizace. Například Klimov a Shamir navrhli trojúhelníkové funkce (T-funkce ) s jediným cyklem na n-bitových slovech.
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (Červen 2008) |
Bezpečnostní
Aby byla proudová šifra bezpečná, musí mít její klíčový proud velký doba a to musí být nemožné obnovit klíč šifry nebo interní stav z klíčového proudu. Kryptografové také požadují, aby se klíčový proud zbavil i jemných předsudků, které by útočníkům umožňovaly rozlišovat proud z náhodného šumu a bez detekovatelných vztahů mezi klíčovými proudy, které odpovídají související klíče nebo související kryptografické nonce. To by mělo platit pro všechny klíče (neměla by být žádná slabé klávesy ), i když útočník může znát nebo Vybrat nějaký prostý text nebo šifrový text.
Stejně jako u jiných útoků v kryptografii může dojít k útokům šifrovacích proudů certifikační nejsou tedy nutně praktickými způsoby, jak šifru prolomit, ale naznačují, že šifra může mít i jiné slabosti.
Bezpečné používání zabezpečené synchronní proudové šifry vyžaduje, aby člověk nikdy znovu nepoužíval stejný klíčový proud dvakrát. To obecně znamená něco jiného nonce nebo klíč musí být dodán ke každému vyvolání šifry. Návrháři aplikací musí také uznat, že většina streamových šifer neposkytuje pravost ale Soukromí: šifrované zprávy mohly být při přenosu stále upraveny.
Krátká období pro šifry proudů byly praktickým problémem. Například 64bitové blokové šifry jako DES lze použít ke generování klíčového proudu v výstupní zpětná vazba (OFB) režim. Pokud však nepoužíváte úplnou zpětnou vazbu, výsledný stream má období kolem 232 bloky v průměru; pro mnoho aplikací je období příliš nízké. Například pokud se šifrování provádí rychlostí 8 megabajtů za sekundu, proud období 232 bloky se budou opakovat asi po půl hodině.[pochybný ]
Některé aplikace využívající proudovou šifru RC4 jsou napadnutelné kvůli slabostem v klíčové rutině nastavení RC4; nové aplikace by se měly vyhnout RC4 nebo se ujistit, že všechny klíče jsou jedinečné a v ideálním případě nesouvisející (například generované dobře nasazeným CSPRNG nebo a kryptografická hashovací funkce ) a že první bajty klíčového proudu jsou zahozeny.
Prvky proudových šifer jsou často mnohem snáze srozumitelné než blokové šifry, a proto je méně pravděpodobné, že zakryjí náhodné nebo škodlivé slabosti.
Používání
Streamové šifry se často používají pro svou rychlost a jednoduchost implementace v hardwaru a v aplikacích, kde holý text přichází v množství nepoznatelné délky jako zabezpečený bezdrátový spojení. Pokud bloková šifra (nepracující v režimu proudové šifry) by měly být použity v tomto typu aplikace, návrhář by musel zvolit buď účinnost přenosu, nebo složitost implementace, protože blokové šifry nemohou přímo pracovat na blocích kratších, než je jejich velikost bloku. Pokud by například 128bitová bloková šifra přijímala samostatné 32bitové výbuchy prostého textu, byly by tři čtvrtiny přenášených dat polstrování. V systému musí být použity blokové šifry krádež šifrovacího textu nebo zbytkové ukončení bloku režim, aby se zabránilo polstrování, zatímco šifry proudu tento problém eliminují přirozeným provozem na nejmenší jednotce, kterou lze přenášet (obvykle bajty).
Další výhodou proudových šifer ve vojenské kryptografii je, že šifrovací proud lze generovat v samostatné krabici, která podléhá přísným bezpečnostním opatřením, a přivádět ji do dalších zařízení, jako je rádiový set, který bude v rámci své funkce provádět operace xor. Druhé zařízení pak může být navrženo a použito v méně přísných prostředích.
ChaCha se stává nejpoužívanější proudovou šifrou v softwaru[1]; další zahrnují: RC4,A5 / 1,A5 / 2,Chameleón, RYBA, Spirála,ISAAC, MUGI,Panama,Phelix, Štika,Salsa20,TĚSNĚNÍ, STŘÍZLIVÝ,SOBER-128,aPROBUDIT.
Srovnání
![]() | Tato sekce potřebuje další citace pro ověření.Červenec 2014) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Proud šifra | Tvorba datum | Rychlost (cykly na bajt ) | (bity) | Záchvat | |||
---|---|---|---|---|---|---|---|
Efektivní klíč-délka | Inicializační vektor | Vnitřní Stát | Nejznámější | Výpočetní složitost | |||
A5 / 1 | 1989 | ? | 54 nebo 64 (v palcích) 2G ) | 22 (v 2G) | 64 | Aktivní KPA NEBO KPA kompromis čas – paměť | ~ 2 sekundy NEBO 239.91 |
A5 / 2 | 1989 | ? | 54 | 114 | 64? | Aktivní | 4,6 milisekundy |
Achterbahn-128/80 | 2006 | 1 (hardware) | 80/128 | 80/128 | 297/351 | Hrubá síla pro délky rámu L ≤ 244. Korelační útok pro L ≥ 248. | 280 resp. 2128 pro L ≤ 244. |
CryptMT | 2005 | ? | Variabilní | až 19968 | 19968 | N / A (2008) | N / A (2008) |
RYBA | 1993 | ? | Variabilní | ? | ? | Známý útok na holý text | 211 |
Obilí | Před rokem 2004 | ? | 80 | 64 | 160 | Odvození klíče | 243 |
HC-256 | Před rokem 2004 | 4 (ŽP4) | 256 | 256 | 65536 | ? | ? |
ISAAC | 1996 | 2.375 (Ž64-bit) – 4.6875 (Ž32-bit) | 8–8288 (obvykle 40–256) | N / A | 8288 | (2006) První kolo derivace slabého vnitřního stavu | 4.67×101240 (2001) |
MUGI | 1998–2002 | ? | 128 | 128 | 1216 | N / A (2002) | ~ 282 |
PANAMA | 1998 | 2 | 256 | 128? | 1216? | Hash kolize (2001) | 282 |
Phelix | Před rokem 2004 | až 8 (Žx86) | 256 + 128 bitů nonce | 128? | ? | Diferenciální (2006) | 237 |
Štika | 1994 | ? | Variabilní | ? | ? | N / A (2004) | N / A (2004) |
Py | Před rokem 2004 | 2.6 | 8–2048? (obvykle 40–256?) | 64 | 8320 | Cryptanalytic teorie (2006) | 275 |
Králičí | 2003-únor | 3.7(ŽP3) – 9.7(ŽARM7) | 128 | 64 | 512 | N / A (2006) | N / A (2006) |
RC4 | 1987 | 7 ŽP5[2] | 8–2048 (obvykle 40–256) | RC4 nebere IV. Pokud někdo touží po IV, musí být do klíče nějak zamíchán. | 2064 | Shamire počáteční bajty odvození klíče NEBO KPA | 213 NEBO 233 |
Salsa20 | Před rokem 2004 | 4.24 (ŽG4) – 11.84 (ŽP4) | 256 | 64bitová nonce + pozice 64bitového streamu | 512 | Pravděpodobnostní metoda neutrálních bitů | 2251 na 8 kol (2007) |
Výkřik | 2002 | 4–5 (Žměkký) | 128 + 128bitová nonce | 32? | 64bitová kulatá funkce | ? | ? |
TĚSNĚNÍ | 1997 | ? | ? | 32? | ? | ? | ? |
SNÍH | Před rokem 2003 | ? | 128 nebo 256 | 32 | ? | ? | ? |
SOBER-128 | 2003 | ? | až 128 | ? | ? | Forge zprávy | 2−6 |
SOSEMANUK | Před rokem 2004 | ? | 128 | 128 | ? | ? | ? |
Trivium | Před rokem 2004 | 4 (Žx86) – 8 (ŽLG) | 80 | 80 | 288 | Útok hrubou silou (2006) | 2135 |
Turing | 2000–2003 | 5.5 (Žx86) | ? | 160 | ? | ? | ? |
VESTA | 2005 | 42 (ŽASIC) – 64 (ŽFPGA) | Variabilní (obvykle 80–256) | Variabilní (obvykle 80–256) | 256–800 | N / A (2006) | N / A (2006) |
PROBUDIT | 1993 | ? | ? | ? | 8192 | CPA & CCA | Zranitelný |
Proud šifra | Tvorba datum | Rychlost (cykly na bajt ) | (bity) | Záchvat | |||
Efektivní klíč-délka | Inicializační vektor | Vnitřní Stát | Nejznámější | Výpočetní složitost |
Maličkosti
- Spojené státy Národní bezpečnostní agentura dokumenty někdy používají tento výraz algoritmy kombinátorového typu, odkazující na algoritmy, které používají nějakou funkci ke kombinování a generátor pseudonáhodných čísel (PRNG) s a prostý text proud.
Viz také
- eSTREAM
- Posuvný registr s lineární zpětnou vazbou (LFSR)
- Posuvný registr nelineární zpětné vazby (NLFSR)
Poznámky
- ^ https://blog.cloudflare.com/do-the-chacha-better-mobile-performance-with-cryptography/
- ^ P. Prasithsangaree a P. Krishnamurthy (2003). „Analýza spotřeby energie algoritmů RC4 a AES v bezdrátových sítích LAN“ (PDF). Archivovány od originál (PDF) dne 03.12.2013. Citovat deník vyžaduje
| deník =
(Pomoc)
Reference
- Matt J. B. Robshaw, Stream Ciphers Technical Report TR-701, verze 2.0, RSA Laboratories, 1995 (PDF).
- Beth, Thomas; Piper, Fred (1985). Generátor Stop and Go (PDF). EUROCRYPT '84. str. 88–92. doi:10.1007/3-540-39757-4_9.
- Christof Paar, Jan Pelzl, „Šifry proudu“ Kapitola 2 „Porozumění kryptografii, učebnice pro studenty a odborníky z praxe“. (doprovodný web obsahuje online kurz kryptografie, který pokrývá šifry streamů a LFSR), Springer, 2009.