A könnyű kriptográfia hash függvénye egy kriptográfiailag erős hash függvény , amelyet a "könnyű" kriptográfiában használnak [1] . Jelenleg az ilyen hash-függvények relevanciája drámaian megnövekedett annak köszönhetően, hogy számos tevékenységi területen (az RFID -től a dolgok internetéig ) és a tudományágak metszéspontjában ( Blockchain és IoT ) használhatók . Tekintettel ezeknek a hash függvényeknek a használatának sajátosságaira, további követelmények vonatkoznak rájuk . A legtöbb modern hash függvény a Merkle-Damgor struktúrát és a szivacsfüggvényt használja alapjául .
A könnyű kriptográfia a kriptográfia olyan része, amely olyan eszközök algoritmusait veszi figyelembe, amelyek nem rendelkeznek elegendő erőforrással a meglévő titkosítások , hash-funkciók , elektronikus aláírások stb. megvalósításához. [2] A „könnyű” kriptográfia napjainkban rendkívül fontossá vált a terjedés miatt. Az intelligens otthon paradigmája , ahol sok kis méretű, korlátozott számítási teljesítménnyel, korlátozott memóriával és alacsony fogyasztású eszköz kommunikál egymással, a bérlő bizalmas információit cserélve, feladataik ellátása érdekében [3] [4] . Szintén különösen érdekesek az RFID - címkék algoritmusai [5] . Annak érdekében, hogy a támadók ne használják fel a felhasználó személyes adatait, olyan algoritmusok speciális fejlesztésére és optimalizálására van szükség, amelyek korlátozott erőforrásokkal képesek működni, és megfelelő szintű biztonságot nyújtanak [4] .
Annak érdekében, hogy a címzett megbizonyosodjon arról, hogy a valódi címzetttől kapott üzenetet, azt elektronikus aláírással együtt küldik el. A gyakorlatban nem az üzenetet írják alá, hanem annak hash összegét, ami jelentősen csökkentheti az aláírás létrehozásához szükséges számítási erőforrásokat (mivel a hash összege általában nagyságrendekkel kisebb, mint a kulcs) és növelheti a kriptográfiai erősséget (a támadó nem fogja tudni megtudni az eredeti adatokat csak a hash-ből) [6] . A blokklánc technológiában hash függvényeket használnak az általános lánchoz hozzáadandó blokk meghatározására. Például: egy új blokk hozzáadásához a Bitcoin platformhoz meg kell találnia egy SHA-256 hash összeget , amely kisebb egy bizonyos célszámnál. A következő létrehozott blokkban az előző [7] hash-je lesz . Ezenkívül a hash-függvények, különösen a könnyű kriptográfia hash-függvényei, alkalmazhatók a tudományágak metszéspontjában. Például: az LSB blokkláncban használják, amelyet a dolgok internetében való használatra terveztek [8] .
A jelszavak ellenőrzésekor hash összegeket is használnak. Ha az operációs rendszerek fájlokban tárolnák a jelszavakat, akkor a jogosulatlan hozzáférést használó crackerek hozzáférhetnének, a hash kibontása viszont nem adna nekik semmit [9] .
A könnyű kriptográfiai hash függvényekkel szemben támasztott alapvető követelmények megegyeznek a hagyományos kriptográfiai hash függvényekkel [10] :
Figyelembe véve azoknak a számítástechnikai eszközöknek a képességeit, amelyeken az algoritmusok készülnek, valamint az elvégzendő feladatokat, az alapkövetelményeket speciális követelmények egészítik ki:
Tegyük fel, hogy kapunk egy inicializálási vektort : (rögzített és nyitott), egy tömörítési függvényt , amely leképez a -ra és egy üzenetre , ahol egy bitblokkot, ha nem a többszörösét , akkor az utolsó blokkot 1-gyel és nullákkal töltjük fel [18] . Például: ha
,
majd a blokkot betápláljuk bemenetként:
,
ahol az ütközések elkerülése végett hozzáadunk egyet. Most már definiálhatjuk a hash függvényt :
A támadások elleni védelem javítása érdekében a bemeneti üzenet kiterjesztése alapján új blokkot adhatunk hozzá, amely rögzíti az üzenet hosszát [18] . Ebben az esetben ez lesz:
Van egy optimalizálás is, amely lehetővé teszi a memória erőforrások megtakarítását (ami fontos a könnyű kriptográfiai feladatokhoz): ha az utolsó blokkban van elég hely az üzenet hosszának rögzítésére, akkor oda lesz írva:
A szivacsfüggvényt széles körben használják a kriptográfiában, algoritmusok készítésére használják PRNG -hez [24] , stream és blokk titkosításokhoz, valamint hash függvényekhez [25] .
Fő ötletA méretű szivacs 2 részre osztható: bitsebesség és teljesítmény . Inicializáláskor a szivacs belső állapota nullára áll vissza; az üzenetet nullákkal töltjük ki, így annak mérete a többszöröse .
A lépések a következők:
A P(permutációs)-szivacs és a T(transzformációs)-szivacs olyan szivacsok, amelyek véletlenszerű permutációt és PRNG-t használnak a belső állapotuk frissítésére. Abban a cikkben, amelyben a szivacsfunkciókat bemutatták, bemutatták, hogy a teljesítmény , bitsebesség és méretvektorral rendelkező szivacsok , amelyek hosszúságú üzeneteket kapnak , olyanok, hogy különböző támadásokhoz átlagosan a következő számú frissítési függvényhívás szükséges (kettő hatványa adott): [26] :
Szivacs | Első prototípus | Második prototípus | ütközés | Ciklus keresése |
---|---|---|---|---|
T-szivacs | ||||
P-szivacs |
A JH szivacsot azért nevezték így el, mert szerkezetében hasonló a JH hash függvényhez .
Felszívódási szakasza három részből áll:
A GLUON egy T-szivacsot használó hash függvény, amely az X-FCSR-v2 és F-FCSR-H-v3 [28] szoftver alapú folyamrejtjeleken alapul : a szivacs belső állapotát kitömik és betöltik az FCSR -be , ami meghatározott időn belül szinkronizálódik. Ezután néhány FCSR-cella hozzáadódik modulo 2-vel a következő belső állapot első szavának kialakításához, az FCSR-t szinkronizálja, ugyanazokat a szavakat adjuk hozzá modulo 2-vel a következő belső állapot második szavának kialakításához, és így tovább.
A funkció nagy kriptográfiai erősséggel rendelkezik. Például: a preimage támadás általában összetettségű , ahol a mátrix mérete (amely meghatározza az FCSR -t ), és az FCSR-be betáplált szó mérete.
A GLUON implementáció sajátossága, hogy az FCSR-ben nem szekvenciálisan, hanem párhuzamosan íródnak az adatok, ami jelentősen megnöveli a végrehajtás sebességét. Ezenkívül az FCSR - ben használt összeadó (az összeadást végrehajtó elem ) a következőképpen lett optimalizálva :
A GLUON-64 frissítési funkciója többértékű, és viselkedése nagyon eltér a PRNG- étól .
A QUARK egy P-szivacsot használó hash függvény hardverorientált permutációval. A KTANTAN [30] és KATAN [ 30] könnyűtömb -rejtjelek, valamint a Grain [31] hardverorientált adatfolyam-rejtjelek hatására valósult meg . A legkisebb verzió (136 bites hash) az U-QUARK, a közepes (176 bites) D-QUARK, a leghosszabb (256 bites) S-QUARK.
A frissítési függvény leképezi a vektort a -ra , mindegyik felét egy különálló hosszúságú NFSR -be ( Nonlinear-feedback shift register ) tölti be , majd ezen keresztül iterál . Az NFSR-ek kapcsolatban állnak egymással és a kis hosszúságú LFSR-ekkel . A , és függvények nemlinearitásuk és algebrai összetettségük miatt kiválasztott logikai függvények. és minden verziónál azonosak, és a Grain-v1-ből származnak, de eseti alapon határozzák meg.
A QUARK megvalósítás sajátossága, hogy nem tartalmazza a szivacsfüggvény köztes értékeit, amelyek tárolásukhoz további elemekre van szükség. Más szóval, az állapotértékek permutálása után az értékek nem íródnak a következő állapotba, hanem azonnal a permutációs függvénybe kerülnek, az első biteket XORed a [32] üzenettel .
Nagy kriptográfiai erősséggel rendelkezik. A különféle támadásokkal szembeni ellenállásra vonatkozó adatok az alábbiakban találhatók [32] :
Egy sikeres támadás megtalálásának nehézsége:Ütközések | Első prototípus | Második prototípus |
---|---|---|
Ennek a hash függvénynek van egy nyilvánosan elérhető C nyelven írt implementációja .
A SipHash ARX szerkezettel rendelkezik, amelyet a BLAKE és a Skein befolyásolt . Ez magában foglalja a leképezések családját , és MAC - ként vagy hash-táblázatokban használható. Felépítése hasonló a JH-hoz, mint az SPN-Hash, és olyan kitöltést használ, amely figyelembe veszi az üzenet hosszát is. Ez azonban egyszerűen egy modulo 256 üzenethosszúságú bájt hozzáadásából áll. A SipHash nem állítja, hogy ütközésálló, és nyilvánvalóan nem a hash összegének kis mérete miatt.
A SipHash megkülönböztető jellemzője, hogy az üzenetek " xored "-re kerülnek, nem úgy, mint a szokásos szivacs funkciónál, hanem egy speciális algoritmus szerint:
Annak ellenére, hogy a SipHash ARX-en alapul, nincs kitéve rotációs támadásnak [33] .
Vannak nyilvános anyagok a SipHash használatáról a githubon .
A PHOTON egy AES-szerű [34] permutáción alapuló P-szivacs. A legalacsonyabb biztonsági beállításnál (PHOTON-80/20/16) a bitsebesség az abszorpció során 20, a squeeze alatt pedig 16. A permutáció 12 iterációból áll (minden biztonsági paraméterhez) az alábbiakban leírt transzformációs sorozatnak, amelyet egy 4 bites cellanégyzeten hajtanak végre (8 bit a legnagyobb verziónál). A PHOTON szállítószalag 4 szakaszból áll:
Kriptográfiai adatok:
Egy sikeres támadás megtalálásának nehézsége:Ütközések | Első prototípus | Második prototípus |
---|---|---|
A szivacs frissítéséhez használt permutációs módszer közel áll a LED [36] titkosításhoz, amelyet később a PHOTON alkotói fejlesztettek ki.
A SPONGENT egy P-szivacsnak tekinthető, ahol a permutáció a JELENLEGI blokk titkosítás módosított változata.
A PRESENT-szerű permutáció iterációinak száma 45 SPONGENT-88 és 140 SPONGENT-256 között változik. Minden iteráció a következőkből áll:
Amennyire ismert, nincs támadás a SPONGENT ellen, kivéve a csökkentett iterációs verziók lineáris feloldóit [38] .
A SPONGENT kód az assemblerben és a C -ben nyilvános.
Az SPN-Hash fő érdeke a differenciális ütközési támadások elleni bizonyítható védelemben rejlik. Ez egy JH szivacs, amely – ahogy a neve is sugallja – egy SPN -en alapuló permutációt használ . Az SPN struktúra az AES [34] struktúrán alapul : először 8×8 S-boxot alkalmazunk minden belső állapotbájtra. A használt S-box pontosan ugyanaz, mint az AES-ben. Ezután egy bonyolultabb keverőréteget alkalmaznak; Ennek a hash-nek az erőssége a jó diffúzió és a könnyűség. Végül minden iterációnál a konstansokat belső állapotba írjuk (szigorú diszjunkcióval), hasonlóan a LED-hez és a PHOTON-hoz. Ezek a műveletek 10-szer megismétlődnek az összes biztonsági beállításnál.
A használt behúzás ugyanaz, mint a megnövelt Merkle-Damgornál: az üzenet hossza hozzáadódik az utolsó blokkhoz [39] .
A DM-PRESENT egyszerűen egy Merkle-Damgor séma, ahol a tömörítési függvény a PRESENT blokk titkosítása Davis-Meyer módban. A DM-PRESENT-80 a PRESENT-80-on, a DM-PRESENT-128 pedig a PRESENT-128-on alapul. Ez a hash funkció sebezhető az ütközésekkel szemben, és nem ellenáll a második előkép-helyreállításnak. Az ilyen hash-függvények csak azokban az alkalmazásokban lesznek hasznosak, amelyek az első előkép-helyreállítási ellenállást és 64 bites védelmet igényelnek [40] .
Az ARMADILLO egy többcélú primitív, amelyet FIL-MAC-ként (I. melléklet), kivonatoláshoz és digitális aláírásokhoz (II. függelék), valamint PRNG-hez és PRF-hez (III. függelék) terveztek. Naya Placencia és Peirin [41] törte fel . Megtalálták a módját, hogy gyorsan észleljék az ütközéseket, ha hash-függvényként használják (egy normál PC-n néhány másodpercig) [42] .
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |
Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|