Panama [1] je kryptografické primitivum, které lze použít buď jako kryptografickou hashovací funkci, nebo jako proudovou šifru. Byl vyvinut v roce 1998 Joan Dymen a Craig Klep pro zlepšení efektivity softwaru pro 32bitové architektury. Je to jeden z předchůdců Keccakova hashovacího algoritmu , který se stal vítězem soutěže kryptografických primitiv od amerického Národního institutu pro standardy a technologie [2] . Hodně se spoléhá na streamovací hash modul StepRightUp. [3]
Podle vývojářů měla „Panama“ v době vývoje vysokou úroveň zabezpečení, ale toho bylo dosaženo za cenu obrovské výpočetní zátěže. Proto, jak se ukázalo, „Panama“ jako hashovací funkce se ukázala být pro hašování zpráv méně vhodná než její rivalové. Pokud mluvíme o „Panamě“ jako o proudové šifře, pak se dlouhá inicializační procedura ukázala jako charakteristický rys jejího použití. Proto je při jeho použití v úlohách vyžadujících vysoké rychlosti nutné zajistit všechny podmínky, které budou směřovat ke snížení počtu desynchronizací. [čtyři]
Předpokládalo se, že „Panama“ bude používána při šifrování nebo dešifrování videa pro přístup k některým aplikacím, zejména k „placené televizi“. [5] Logika vývojářů byla taková, že set-top boxy a digitální televize budou používat vysokorychlostní procesory a Panama nebude tyto procesory při dešifrování příliš zatěžovat.
„Panama“ je založena na konečném automatu, který se skládá ze dvou velkých bloků: 544 stavových bitů a 8192-bitové vyrovnávací paměti, pracující na principu zpětnovazebního posuvného registru . Zpětná vazba zajišťuje, že vstupní bity procházejí několika iteracemi po vstupu, což zase zajišťuje bitovou difúzi. Musím říci, že podobný buffer je použit ve funkci SHA komprese. [6] Pracovní objekt Panama je 32bitové slovo a stav se skládá ze 17 takových slov, přičemž vyrovnávací paměť má 32 buněk, z nichž každá obsahuje 8 takových slov. [7]
Panama může aktualizovat vyrovnávací paměť a stavy iterací. A pro iterační funkci jsou implementovány tři režimy: "Reset", "Push" a "Pull". V režimu "Push" stroj přijímá nějaký vstup, ale nic nevydává. V režimu "Pull" se naopak výstupní data tvoří, ale nic se nebere jako vstupní. "Prázdná iterace Pull" také znamená, že výstup z této iterace je zahozen. V režimu "Reset" se stav a vyrovnávací paměť vynulují. [osm]
Změna stavu je charakterizována vysokou difuzí a distribuovanou nelinearitou. [9] To znamená, že k dosažení dobrého rozptylu stačí malý počet iterací. To se provádí pomocí 4 bloků, z nichž každý řeší svůj vlastní úkol.
Pokud považujeme „Panamu“ za hashovací funkci, pak algoritmus pro její fungování je následující. Zpočátku hašovací funkce přijímá všechny bloky zpráv. Poté se provede několik dalších "Push" iterací, což umožňuje, aby byly poslední přijaté bloky zpráv rozptýleny uvnitř vyrovnávací paměti a stavu. Poté se provede poslední iterace „Pull“, která vám umožní získat výsledek hash. Schéma šifrování streamování je inicializováno následovně: nejprve projdou dvě iterace "Push", aby se získal klíč a parametr diverzifikace. Poté dojde k řadě iterací "Pull", aby se klíč a parametr rozptýlily uvnitř vyrovnávací paměti a stavů. Tím je inicializace dokončena a Panama je připravena vytvořit bity výstupní sekvence provedením iterací „Pull“. [3]
Stav můžete označit jako a 17 slov definujících stavy lze označit jako . Vyrovnávací paměť je označena jako , -th její buňky - as a jedno ze slov ležících uvnitř této buňky - as . Zpočátku jsou stav i vyrovnávací paměť naplněny pouze nulami. V režimu "Push" přijímá "Panama" 8bitové slovo jako vstup, v režimu "Pull" se vytváří 8bitové slovo jako výstup. [7]
Pokud označíme funkci, která aktualizuje vyrovnávací paměť, jako , pak, pokud to přijmeme , můžeme získat následující pravidla pro aktualizaci vyrovnávací paměti:
v , , prokde v režimu "Push" je vstupní blok a v režimu "Pull" je součástí stavu , tj. 8 jeho komponent, definovaných jako
proStav se aktualizuje podle následujícího pravidla , které je superpozicí 4 různých transformací:
kde je inverzní lineární transformace, je opět inverzní lineární transformace, je kombinací rotace bitů slova a míchání pozice slova a transformace je bitové přidání vyrovnávací paměti a vstupního slova.
V tomto případě určí součet operací, kde se jako první provede ta vpravo.
Nyní můžeme zvážit každou z těchto operací. je definován takto:
pro ,kde všechny indexy jsou brány modulo . Všimněte si, že vratnost této transformace vyplývá ze skutečnosti, že je coprime s .
lze definovat jako:
pro ,kde všechny indexy jsou brány modulo .
Pokud se pro převod určí, že existuje posun v pozicích od nejméně významného bitu k nejvýznamnějšímu, pak:
,a , a
Pokud pro transformaci bude provedena, že , pak
, pro , proV režimu "Push" je vstupní zpráva a v režimu "Pull" - .
Výstupní slovo v režimu "Pull" je definováno následovně:
. [jedenáct]"Panama" jako hashovací funkce mapuje výsledek hash 256 bitů na zprávu libovolné délky. [11] V tomto případě hašování probíhá ve 2 fázích
Lze jej označit jako sekvenci vstupních bloků . Poté se v nulovém okamžiku vygeneruje režim Reset a během cyklů se načtou vstupní bloky. Poté se provede 32 prázdných iterací "Pull". A pak při 33. iteraci "Pull" se vrátí výsledek hash .
Hlavním úkolem vývoje panamské hašovací funkce bylo najít „hermetickou“ hašovací funkci [11] , tedy funkci, pro kterou (pokud se hašovací výsledek skládá z bitů):
Kromě toho není možné detekovat systematické korelace mezi jakoukoli lineární kombinací vstupních bitů a jakoukoli lineární kombinací výsledných bitů hash. [jedenáct]
Tato hashovací funkce byla dvakrát úspěšně napadena. Již v roce 2001 se ukázalo, že tato hashovací funkce není kryptograficky bezpečná, protože byly nalezeny kolize operací. Joan Dymen navíc ukázal, že je možné najít kolize již pro operace a pro splnění parametrů spolehlivosti je nutné, aby kolize byly lokalizovány alespoň pro operace. [12]
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|