A Panama [1] egy kriptográfiai primitív, amely kriptográfiai hash függvényként vagy adatfolyam titkosításként is használható. 1998-ban fejlesztette ki Joan Dymen és Craig Klep, hogy javítsa a 32 bites architektúrák szoftverének hatékonyságát. Ez a Keccak kivonatoló algoritmus egyik elődje, amely az US National Institute of Standards and Technology kriptográfiai primitívek versenyének győztese lett [2] . Erősen támaszkodik a StepRightUp streaming hash modulra. [3]
A fejlesztők szerint a "Panama" a fejlesztés idején magas szintű biztonsággal rendelkezett, de ezt hatalmas számítási terhelés árán érték el. Ezért, mint kiderült, a "Panama" mint hash-függvény kevésbé alkalmas üzenetek kivonatozására, mint riválisai. Ha a "Panamáról" mint adatfolyam titkosításról beszélünk, akkor a hosszú inicializálási eljárás a használatának megkülönböztető jellemzője. Ezért, ha nagy sebességet igénylő feladatokban használja, biztosítani kell minden olyan feltételt, amely a deszinkronizálások számának csökkentésére irányul. [négy]
Feltételezték, hogy a "Panama"-t a videók titkosítására vagy visszafejtésére használják egyes alkalmazások, különösen a "fizetős TV" eléréséhez. [5] A fejlesztők logikája az volt, hogy a set-top boxok és a digitális tévék nagy sebességű processzorokat használnak, és Panama nem terheli túl sokat ezeket a processzorokat a visszafejtés során.
A "Panama" egy véges állapotú gépen alapszik, amely két nagy blokkból áll: 544 állapotbitből és egy 8192 bites pufferből, amely a visszacsatolásos eltolási regiszter elvén működik . A visszacsatolás biztosítja, hogy a bemeneti bitek a bemenet után több iteráción menjenek keresztül, ami viszont bitenkénti diffúziót biztosít. Azt kell mondanom, hogy hasonló puffert használnak az SHA tömörítési funkcióban. [6] A Panama munkaobjektum egy 32 bites szó, és az állapot 17 ilyen szóból áll, míg a pufferben 32 cella van, amelyek mindegyike 8 ilyen szót tartalmaz. [7]
Panama iterálással frissítheti a puffert és az állapotokat. Az iteratív funkcióhoz pedig három mód van megvalósítva: "Reset", "Push" és "Pull". "Push" módban a gép fogad némi bemenetet, de nem ad ki semmit. A "Pull" módban éppen ellenkezőleg, a kimeneti adatok kialakulnak, de semmi sem kerül bemenetre. Az "üres húzás iteráció" azt is jelenti, hogy az iteráció kimenetét el kell dobni. "Reset" módban az állapot és a puffer nullára áll vissza. [nyolc]
Az állapotváltozást nagy diffúzió és elosztott nemlinearitás jellemzi. [9] Ez azt jelenti, hogy kis számú iteráció elegendő a jó diszperzió eléréséhez. Ez 4 blokk segítségével történik, amelyek mindegyike saját feladatot old meg.
Ha a "Panamát" hash függvénynek tekintjük, akkor működésének algoritmusa a következő. Kezdetben a hash függvény elfogadja az összes üzenetblokkot. Ezt követően több további "Push" iterációt hajtanak végre, amely lehetővé teszi az utolsó fogadott üzenetblokkok szétszórását a pufferben és az állapotban. Ezt követően az utolsó „Pull” iteráció kerül végrehajtásra, amely lehetővé teszi a hash eredményének elérését. A streaming titkosítási séma a következőképpen inicializálódik: először két "push" iteráció megy keresztül a kulcs és a diverzifikációs paraméter megszerzéséhez. Ezt követően számos "Pull" iteráció következik be, hogy a kulcsot és a paramétert szétszórják a pufferben és az állapotokban. Ezzel befejeződik az inicializálás, és Panama készen áll a kimeneti sorozat bitjei létrehozására a "Pull" iterációk végrehajtásával. [3]
Az állapotot jelölheti , és az állapotokat meghatározó 17 szót . A puffer jelölése , cellájának -edik - as , és az ebben a cellában található szavak egyike - as . Kezdetben az állapot és a puffer is csak nullákkal van feltöltve. "Push" módban a "Panama" egy 8 bites szót kap bemenetként, "Pull" módban pedig egy 8 bites szó jön létre kimenetként. [7]
Ha a puffert frissítő függvényt nek jelöljük ki , akkor ha ezt elfogadjuk , akkor a következő szabályokat kaphatjuk a puffer frissítésére:
, _ , számáraahol "Push" módban van egy bemeneti blokk , "Pull" módban pedig az állapot része , azaz 8 komponense, definiálva:
számáraAz állapot frissítése a következő szabály szerint történik, amely 4 különböző transzformáció szuperpozíciója:
ahol egy inverz lineáris transzformáció , ismét egy inverz lineáris transzformáció, a szóbitforgatás és a szópozíció-keverés kombinációja, és a transzformáció a puffer és a bemeneti szó bitenkénti összeadása.
Ebben az esetben a műveletek összegét határozza meg, ahol először a jobb oldali kerül végrehajtásra.
Most megvizsgálhatjuk ezeket a műveleteket. a következőképpen van meghatározva:
számára ,ahol az összes indexet modulo . Vegye figyelembe, hogy ennek a transzformációnak a visszafordíthatósága abból következik, hogy a koprím -val .
a következőképpen határozható meg:
számára ,ahol az összes indexet modulo .
Ha az átalakításnál megállapítást nyer, hogy a legkisebb jelentőségű bittől a legjelentősebbig terjedő pozíciókban eltolás van , akkor:
,és , és
Ha a transzformációhoz az kerül végrehajtásra , akkor
, számára , számára"Push" módban a beviteli üzenet , "Pull" módban pedig - .
"Pull" módban a kimeneti szó meghatározása a következő:
. [tizenegy]A "Panama" hash függvényként a 256 bites hash eredményt tetszőleges hosszúságú üzenetre képezi le. [11] Ebben az esetben a kivonatolás 2 szakaszban történik
Bemeneti blokkok sorozataként jelölhető . Ezután a nulla pillanatban a Reset mód generálódik, majd a ciklusok során betöltődnek a bemeneti blokkok. Ezt követően 32 üres "Pull" iteráció kerül végrehajtásra. Ezután a 33. "Pull" iterációnál a hash eredményt a rendszer visszaadja .
A Panama hash függvény fejlesztésének fő feladata egy "hermetikus" hash függvény megtalálása volt [11] , vagyis egy olyan függvény, amelyhez (ha a hash eredmény bitekből áll):
Ezenkívül nem lehet kimutatni szisztematikus korrelációt a bemeneti bitek lineáris kombinációja és a hash eredménybitek bármely lineáris kombinációja között. [tizenegy]
Ezt a hash funkciót kétszer sikeresen megtámadták. Már 2001-ben bebizonyosodott, hogy ez a hash-függvény kriptográfiailag nem biztonságos, mivel a műveletekhez ütközéseket találtak. Sőt, Joan Dymen megmutatta, hogy már a műveletekhez is lehet ütközéseket találni, és a megbízhatósági paraméterek kielégítéséhez legalább a műveletekhez szükséges az ütközések lokalizálása. [12]
Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|