it-swarm-eu.dev

Výhody a nevýhody Stream versus Block Šifry

Šifrovací algoritmy jako Blowfish, AES, RC4, DES a Seal jsou implementovány v jedné ze dvou kategorií šifrů. Jaké jsou výhody/nevýhody typu šifry?

66
Eric Warriner

Zatímco oba jsou symetrické šifry, šifry proudů jsou založeny na generování „nekonečného“ kryptografického klíčového proudu a jeho použití k šifrování jednoho bitu nebo bajtu najednou (podobně jako jednorázová podložka), zatímco blokové šifry pracují na větších částech dat (tj. bloky) najednou, často kombinující bloky pro další zabezpečení (např. AES v režimu CBC).

  • Streamové šifry jsou obvykle rychlejší než blokové, ale mají vlastní cenu.
  • Blokové šifry obvykle vyžadují více paměti, protože pracují na větších částech dat a často mají „přenos“ z předchozích bloků, zatímco protože šifry proudu pracují na několika bitech současně, mají relativně nízké požadavky na paměť (a proto levnější implementovat v omezených scénářích, jako jsou zabudovaná zařízení, firmware a zejména hardware).
  • Proudové šifry se obtížněji implementují správně a jsou náchylné k slabým stránkám založeným na použití - protože principy jsou podobné jednorázové klávesnici, keystream má velmi přísné požadavky. Na druhou stranu je to obvykle složitá část a lze ji přenést např. externí krabici.
  • Protože blokové šifry šifrují celý blok najednou (a navíc mají režimy „zpětné vazby“, které jsou nejvíce doporučovány), jsou náchylnější k šumu při přenosu, to znamená, že pokud zkazíte jednu část dat, je pravděpodobně zbytek neodstranitelný. Zatímco u proudových šifer jsou bajty individuálně šifrovány bez připojení k jiným částem dat (ve většině šifrů/režimů) a často mají podporu pro přerušení na lince.
  • Také proudové šifry neposkytují ochranu integrity nebo autentizaci, zatímco některé blokové šifry (v závislosti na režimu) mohou kromě důvěrnosti poskytovat ochranu integrity.
  • Kvůli výše uvedenému jsou šifry datových proudů obvykle nejlepší v případech, kdy je množství dat buď neznámé, nebo nepřetržité - například síťové proudy. Na druhou stranu blokujte šifry nebo je užitečnější, když je množství dat předem známo - například soubor, datová pole nebo protokoly požadavku/odpovědi, jako je HTTP, kde je délka celkové zprávy známa již na začátek.
48
AviD

Bloková šifra je všestranný algoritmus, který implementuje klíčově závislou permutaci hodnot, které jsou posloupnosti pevného počtu bitů (nazývaných „bloky“). Může být použit pro různé role v mnoha druzích kryptografických protokolů. Jednou z takových rolí je hromadné šifrování dlouhých toků dat; Aby se toho dosáhlo, musí být bloková šifra používána s vhodným provozní režim (aka „řetězový režim“), přičemž tradiční je CBC a moderní novější režim je CTR.

proudová šifra je specializovaný algoritmus pro účely hromadného šifrování dlouhých toků dat. Myšlenka je taková, že propadnutím všestrannosti blokové šifry by bylo možné vytvořit efektivnější algoritmus (tj. Něco, co šifruje data rychlejší).

Oba blokové šifry s režimem šifrování orientovaným na toky a šifry proudů mohou narazit na bezpečnostní problémy, pokud je stejný klíč použit dvakrát, pro dva odlišné toky, aniž by měl odpovídající, jedinečný/náhodný počet Inicializační vektor. Pro šifrování CBC musí být IV pro každou novou zprávu nová rovnoměrně náhodná posloupnost bitů stejné velikosti než blok. Dobré proudové šifry také přijímají IV. Tradiční proudová šifra zvaná RC4 je IV-less (její specifikace neuvádí, kam a jak by mohla být IV vložena), což vedlo k velkému chaosu a dalo špatné jméno konceptu proudových šifrů.

Pro novější, bezpečnější (a rychlejší) šifry proudů viz portfolio eSTREAM . Tyto algoritmy prošly poměrně důkladnou analýzou mnoha kryptografů a jsou považovány za „docela bezpečné“.

Šifru proudu lze převést na generátor náhodných čísel šifrováním dlouhé posloupnosti bajtů nulové hodnoty. Ve skutečnosti mnoho (ale ne všechny) proudové šifry interně fungují tak, že jsou PRNG, vytvářející dlouhou sekvenci pseudonáhodných bajtů závislých na klíči, která je následně kombinována (bitovým XOR) s daty pro šifrování (nebo dešifrování), takže šifrování nulových bytů je pak ekvivalentní vynechání XOR dohromady). Proto jsou jako vlastní PRNG často používány proudové šifry.

26
Thomas Pornin

Jednou z výhod proudových šifer, které dosud nebyly zmíněny, je to, že nepotřebují výplň (blokové šifry pracují na kompletních blocích, takže pokud nemáte dostatek dat, musíte nějakým způsobem vygenerovat další). A překvapení (ne opravdu, kryptografie je pole, kde je Murphy všude), padding může být špatně proveden, jak je doloženo například v Practical Padding Oracle Attacks .

Také zabezpečení blokových šifer do značné míry závisí na způsobu jejich fungování, stále vidíte, jak se ECB občas používá a není o nic lepší než žádné krypto.

V podstatě nemůžete říci, že jeden je lepší než ten druhý, jeden se musí podívat na kompletní kryptosystém, aby mohl učinit bezpečnostní úsudek.

9
Bruno Rohée

Stream Ciphers šifruje prostý text náhodným tokem bitů (obvykle s XOR, protože jej lze snadno převrátit). Pokud máte 128bitová data, použijete 128bitový psedurandom strem ( klíč) pro šifrování.

Blokové šifry šifrují data prostého textu po jednom bloku současně se stejnou transformací (na základě klíče). Takže máte 128bitová data, šifra je rozdělí v blocích (jako 4 bloky po 32 bitech) a použije stejnou transformaci na každý blok, který získá 4 šifrované bloky, které společně vytvoří konečný kryptogram.

Samozřejmě z důvodu tohoto bloku Cyphers je bezpečnější, ale nákladné použití z hlediska složitosti hardwaru. Streamové šifry jsou rychlejší a „levnější“, ale pokud jsou implementovány nesprávně, mohou být citlivé na bezpečnostní problémy .

1
gbr