SNOW je slovně orientovaná synchronní proudová šifra vyvinutá Lund University (Švédsko). V tuto chvíli má 3 modifikace: SNOW 2.0, SNOW 3G, SNOW-V. SNOW 3G se používá pro bezpečný přenos mobilních dat.
SNOW 1.0, původně jen SNOW [1] , byl vyvinut v roce 2000. Šifra pracuje s 32bitovými slovy a podporuje 128bitové i 256bitové klíče. Šifru tvoří kombinace lineárního zpětnovazebního posuvného registru (LFSR) a stavového automatu (FA).
V první verzi [2] byly nalezeny slabé stránky a v důsledku toho nebyl SNOW zahrnut do sady algoritmů NESSIE . V roce 2003 autoři vyvinuli novou verzi šifry SNOW 2.0 [3] , která odstranila nedostatky a zlepšila výkon. Během hodnocení skupinou odborníků na bezpečné algoritmy ( angl. SAGE ) [ 4] Evropského institutu pro telekomunikační standardy ( ETSI ) [4] byl šifrovací algoritmus dále upraven, aby se zvýšila jeho odolnost vůči algebraickým útokům. Výsledkem těchto vylepšení v roce 2006 byla úprava šifry SNOW 3G [5] [6] .
V roce 2019 Ericsson Research společně s Lund University revidoval algoritmus SNOW 3G a aktualizoval jej na novou, rychlejší šifru nazvanou SNOW-V [7] , kterou lze použít pro bezpečný přenos dat v nové generaci 5G komunikace .
Generátor se skládá z lineárního zpětnovazebního posuvného registru délky 16 přes pole . Výstup registru je přiveden na vstup stavového automatu. KA se skládá ze dvou 32bitových registrů nazývaných R1 a R2 a také některých operací pro výpočet výstupu a dalšího stavu (další hodnota R1 a R2). Šifra funguje následovně. Nejprve se inicializuje klíč. Tento postup poskytuje počáteční hodnoty pro LFSR a také pro registry R1, R2 ve stavovém automatu. Poté se prvních 32 bitů toku klíčů vypočítá bitovým sčítáním výstupu KA a posledního záznamu LFSR. Poté se celý proces synchronizuje a dalších 32 bitů toku klíčů se vypočítá přidáním jednoho dalšího bitového sčítání výstupu stavového stroje a posledního záznamu LFSR. Opět se synchronizujeme a pokračujeme ve stejném duchu. [2]
V počátečním čase t = 0 je posuvný registr inicializován 32bitovými hodnotami , které jsou specifikovány pomocí vygenerovaného klíče.
Zpětná vazba pro registr je dána polynomem:
kde je dáno ireducibilním polynomem
,přes a .
Nazvěme výstup KA . Vypočítá se pomocí následujícího vzorce:
,kde je sčítání celého čísla přes .
Výstup stavového automatu je porovnán s modulem 2 za účelem vytvoření streamovacího klíče, tzn.
,kde je sčítání přes .
Uvnitř stavového automatu jsou nové hodnoty pro R1 a R2 přiřazeny podle následujících vzorců:
,kde je cyklický posun doleva
Nakonec S-box , označený , se skládá ze čtyř identických 8x8 bitových S-boxů a permutace výsledných bitů. Vstupní data jsou rozdělena do 4 bajtů, každý bajt je zahrnut v nelineárním mapování od 8 bitů do 8 bitů. Po tomto mapování jsou bity ve výsledném slově prohozeny, aby vytvořily konečný výsledek S-boxu [1] .
Pro konečné vytvoření šifrového textu je klíč streamu porovnán s otevřeným textem modulo 2.
SNOW 2.0 je jednou ze streamových šifer zahrnutých v šifrovacím standardu ISO/IEC ISO/IEC 18033-4 [10] , který definuje inferenční funkce pro zřetězení toku klíčů s prostým textem, generátory toku klíčů pro generování toku klíčů a identifikátory objektů přiřazené vybraným generátory toku klíčů v souladu s ISO/IEC 9834 pro proudové šifry.
SNOW 3G [6] je vybrán jako generátor klíčů toku pro šifrovací algoritmy 3GPP UEA2 a UIA2 [11] .
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |