SHABAL

SHABAL
Létrehozva 2008
közzétett 2008
Hash méret 192, 224, 256, 384, 512
A körök száma 3
Típusú hash függvény

A SHABAL egy kriptográfiai kivonatoló  algoritmus . A Nemzeti Szabványügyi és Technológiai Intézet által megrendezett SHA-3 verseny egyik résztvevője, a végeredmény és a győztes kihirdetését 2012-re tervezik [1] . A versenyre a francia Kutatási Ügynökség (ANR) és a France Telecom fő szervezete által támogatott "Sapphire" (Saphir: Hash Primitives biztonsága és elemzése) kutatási projekt nyújtotta be .

Az algoritmus szerzői: Emmanuel Bresson, Anna Canteout, Benoit Chevalier-Mamès, Christophe Clavier, Thomas Fuhr, Alina Goudzhet, Thomas Ickart, Jean-Francois Misarsky, Maria Naya-Plasenchia, Pascal Payler, Thomas Pornini, Jean-Rene Reinhard, Selina Tjulliet, Marion Videau.

Az algoritmus a szerzők szerint "Sebastien Chabalról, egy francia rögbijátékosról kapta a nevét, aki az agresszív játékstílusáról, valamint szakálláról és hosszú hajából ismert, amiért a "Caveman" (Caveman) becenevet kapta" [ 2] .


Algoritmus

A fejlesztők szerint a SHABAL az egyik leggyorsabb jelölt az SHA-3 versenyben . [3]

A SHABAL bármilyen hosszúságú bitsorozatot tud fogadni bemenetként, azonban a bitnél hosszabb üzenetek kriptográfiai erőssége nem garantált.

Hogyan működik

A SHABAL neve SHABAL-512, SHABAL-384, SHABAL-256, SHABAL-224, SHABAL-192, a kapott hash hosszától függően , 512, 384, 256, 224, 192 bit.

Miután az algoritmus bitsorozatot kapott bemenetként, az 512 bites blokkokra van osztva, függetlenül a használt SHABAL variációtól (SHABAL-512, SHABAL-384 stb.). Vegye figyelembe, hogy a blokk mérete 32 többszöröse. Az utolsó blokkhoz, ha a bithossza nem egyenlő 512 bittel, egy bit egy bitet és a szükséges számú nullát rendelünk hozzá a megadott blokkméret eléréséhez.

A hash függvény kiszámításakor egy három részre osztott puffert használunk , ahol és és  a pufferek hossza , ill . Használnak egy 64 bites W segédpuffert is, amely egy blokkszám-számláló. A és a pufferek hossza egyenlő , ahol  annak a blokknak a hossza, amelyre a bemenetre küldött üzenet fel van osztva.

A SHABAL két konfigurálható opcióval rendelkezik , és . A puffer hosszát az határozza meg , nevezetesen . A paraméter  a körök száma a transzformációban , minél nagyobb ez az érték, annál nagyobb a biztonság garantált. A versenyre beküldött SHABAL algoritmus szigorúan meghatározza

A SHABAL egy iteratív algoritmus. Az ismétlések száma megegyezik az eredeti bitsorozat blokkjainak számával, plusz az üzenet elejéhez hozzáadott blokkok két iterációjával (erről a két blokkról további részletekért lásd az algoritmus lépésenkénti leírását), plusz három további végső iterációk. Minden iterációnál transzformáció történik . Minden ismétléssel, az utolsó három kivételével, a tárolt szám 1-gyel nő, vagyis, mint már említettük  , ez egy számláló.

Az algoritmus működése lépésekben

Vegye figyelembe, hogy az összeadás és kivonás műveleteket ezután szavakon belül (azaz 4 bájtos blokkokon) és átvitel nélkül hajtják végre.

Inicializálás

Nullákat írnak be . A főüzenet elejéhez két blokk kerül hozzáadásra , amelyek mindegyike 4 bájtos töredéke fix számokat tartalmaz -tól -ig , ahol  a hash függvény kimenetének hossza . Részletesebben, a következő szavakat (32 bites blokkok) írjuk a két hozzáadott blokkba, amelyeket hívunk és (mindegyik = 512 bit méretű ): , , , . A köztes szavak és hasonlattal töltjük ki.

Az in számhoz -1 értéket rendelünk, így az elejéhez hozzáadott blokkok feldolgozása után a bemeneti üzenet első blokkja 1-nek felel meg.

Blokkolás

A bemeneti bitsorozat 512 bites blokkokra van felosztva, ha az üzenet hossza nem többszöröse a megadott hosszúságnak, akkor az utolsó részhez hozzáadódik egy bitegység és a megadott méret eléréséhez szükséges nullák száma.

Normál iterációk

Minden w ( és W -32 bites része) esetén –1-től k-ig (ahol k az eredeti üzenet blokkjainak száma) tegye a következőket:

  • Adjuk hozzá B-t és M-et szavakkal, az eredményt írjuk B-be
  • alkalmazza az XOR-t a pultra és az A-ra
  • végezze el az átalakítást P
  • szavakkal vonjuk ki a CM-ből
  • cserélje fel B-t és C-t
Utolsó iterációk

A szokásos iterációk befejezése után még három utolsó iterációt kell végrehajtania. Abban különböznek a megszokottól, hogy az utolsó üzenetblokkot blokknak vesszük , a számláló értéke fix és egyenlő k teljes blokkszámmal.

Eredmény

A kimeneti szavak (32 bites blokkok) tól -ig az eredmény. és figyelmen kívül hagyják.

Megjegyzés

Érdemes megjegyezni, hogy a SHABAL használatakor teljesen opcionális a transzformációk kiszámítása az első két blokkból. Ugyanilyen sikerrel e két blokk értékei egyszer kiszámíthatók, majd IV-ként (kezdeti vektorként) használhatók.

IV. lista a SHABAL különböző verzióihoz

SHABAL-192:

A:

FD749ED4 B798E530 33904B6F 46BDA85E 076934B4 454B4058 77F74527 FB4CF465

62931DA9 E778C8DB 22B3998E AC15CFB9

B :

58BCBAC4 EC47A08E AEE933B2 DFCBC824 A7944804 BF65BDB0 5A9D4502 59979AF7

C5CEA54E 4B6B8150 16E71909 7D632319 930573A0 F34C63D1 CAF914B4 FDD6612C

C :

61550878 89EF2B75 A1660C46 7EF3855B 7297B58C 1BC67793 7FB1C723 B66FC640

1A48B71C F0976D17 088CE80A A454EDF3 1C096BF4 AC76224B 5215781C CD5D2669


SHABAL-224:

A:

A5201467 A9B8D94A D4CED997 68379D7B A7FC73BA F1A2546B 606782BF E0BCFD0F

2F25374E 069A149F 5E2DFF25 FAECF061

B :

EC9905D8 F21850CF C0A746C8 21DAD498 35156EEB 088C97F2 26303E40 8A2D4FB5

FEEE44B6 8A1E9573 7B81111A CBC139F0 A3513861 1D2C362E 918C580E B58E1B9C

C :

E4B573A1 4C1A0880 1E907C51 04807EFD 3AD8CDE5 16B21302 02512C53 2204CB18

99405F2D E5B648A1 70AB1D43 A10C25C2 16F1AC05 38BBEB56 9B01DC60 B1096D83


SHABAL-256:

A:

52F84552 E54B7999 2D8EE3EC B9645191 E0078B86 BB7C44C9 D2B5C1CA B0D2EB8C

14CE5A45 22AF50DC EFFDBC6B EB21B74A

B :

B555C6EE 3E710596 A72A652F 9301515F DA28C1FA 696FD868 9CB6BF72 0AFE4002

A6E03615 5138C1D4 BE216306 B38B8890 3EA8B96B 3299ACE4 30924DD4 55CB34A5

C :

B405F031 C4233EBA B3733979 C0DD9D55 C51C28AE A327B8E1 56C56167 ED614433

88B59D60 60E2CEBA 758B4B8B 83E82A7F BC968828 E6E00BF7 BA839E55 9B491C60


SHABAL-384:

A:

C8FCA331 E55C504E 003EBF26 BB6B8D83 7B0448C1 41B82789 0A7C9601 8D659CFF

B6E2673E CA54C77B 1460FD7E 3FCB8F2D

B :

527291FC 2A16455F 78E627E5 944F169F 1CA6F016 A854EA25 8DB98ABE F2C62641

30117DCB CF5C4309 93711A25 F9F671B8 B01D2116 333F4B89 B285D165 86829B36

C :

F764B11A 76172146 CEF6934D C6D28399 FE095F61 5E6018B4 5048ECF5 51353261

6E6E36DC 63130DAD A9C69BD6 1E90EA0C 7C35073B 28D95E6D AA340E0D CB3DEE70


SHABAL-512:

A:

20728DFD 46C0BD53 E782B699 55304632 71B4EF90 0EA9E82C DBB930F1 FAD06B8B

BE0CAE40 8BD14410 76D2ADAC 28ACAB7F

B :

C1099CB7 07B385F3 E7442C26 CC8AD640 EB6F56C7 1EA81AA9 73B9D314 1DE85D08

48910A5A 893B22DB C5A0DF44 BBC4324E 72D2F240 75941D99 6D8BDE82 A1A7502B

C :

D9BF68D1 58BAD750 56028CB2 8134F359 B5D469D8 941A8CC2 418B2A6E 04052780

7F07D787 5194358F 3C60D665 BE97D79A 950C3434 AED9A06D 2537DC8D 7CDB5969

Az átalakulás leírása

Bemeneti adatok: M,A,B,C

Kimenet: A,B

( a bitelforgatás balra állása)

A transzformációt az érthetőség kedvéért pszeudokódban mutatjuk be:

Az i-nél 0 és 15 között tegye a következőket:



Következő i;


j értékhez 0 és p-1 között tegye a következőket:

  • Az i-nél 0 és 15 között tegye a következőket:






ahol



  • Következő i;

Következő j;


0 és 35 közötti j esetén tegye a következőket:



Következő j;

Ahol az U és V függvények meghatározása a következő:

Mintaeredmények

Eredeti üzenet bájtban

M1 :

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Eredmény és végállapot

SHABAL-192

A:

A38C0C63 17C2CAE8 3248572C 1C89CAD5 176ED597 B242B8AD 73298C22 7ADF1817

00D909DA 61AD8518 90266914 9DC1F617

B :

260A3D42 E9E62340 385A3EBF 2978F492 A1DE4E1A AEDBB855 49DB44CD D0B179F3

7D7FAAE0 87798FA8 9F7F5E35 4A9F52FE A0F35652 65A6D26E 320A1851 EFF9A7CD

C :

F91EEE5E 99DCC78C 82F72599 8CACD775 09544255 ED275CF3 0166F95E 2C375AFA

49AAFBE0 4D9C01C6 CB6E700F CE4DCF97 D2BBBF00 0C5364FB B40C8732 0D733948

H :

CB6E700F CE4DCF97 D2BBBF00 0C5364FB B40C8732 0D733948

SHABAL-224

A:

08FC66FC CE392D14 42C29F35 5649D86A DCD65214 9A423F72 99D2F688 5073E130

1E1F9B61 A28A416E 9C9572AB C3A9B2BC

B :

33D58779 1AD91014 D67F57EC FDADD8EC 75AB31C5 C50ECE4D B7C2CD52 3B8500C5

FCCD0F17 F7EED488 FF906EED DB95D041 965CBF04 B0E05609 1B26DB06 843B9DE7

C :

BE6AC9DC 86AFB8BB 300C6C1B 237F0C8C 6DEF5EEF 599CA070 540040F7 EEA985E4

4A5B8375 14A6DD99 E8D207F9 F7187681 326F6930 8BCAAE00 25F4855F 3120BA43

H :

14A6DD99 E8D207F9 F7187681 326F6930 8BCAAE00 25F4855F 3120BA43

SHABAL-256

A:

3DBA182A D0D6787E DAD8F4C9 CC065328 A36A08C7 902C794E 43E5A220 E2F378F1

1E35B4C3 EF6B834E 8E442A11 6922E895

B :

66DF96F1 E4D309BD 6377D5E2 48F253E3 F8E9B974 0773C11C 8B2B886F 9D7AC002

343612B3 80C441F4 F676FCAD 3D6A453A 6CBEC284 2B3DE748 57EE16DB 80DBFF08

C :

57E837B3 3B2C6ACA E0358DC2 2BD758E9 30F7A2ED DF3516C7 253CB0E0 1A1A98FC

C0088FDA 9ABA672A 79D0BD56 07AE488E 095E2114 06855B3B 1877A349 A2543F99

H :

C0088FDA 9ABA672A 79D0BD56 07AE488E 095E2114 06855B3B 1877A349 A2543F99

SHABAL-384

A:

37661E10 1BEDBBD5 B022D077 CB1781BD 23DCFA84 AF4946EC 9C681ADD 8C48B88C

6BC4D0CB 1F4A95CD 0F2C5CD4 D1BC38C6

B :

CA3AFDBC 298219E1 5E0BF2B8 8F151F6D 648A1FC9 C1F29FEE CD9F4978 F81C514A

44EB858B D33B06CF 929CBC10 60672CBB 20B3CCCA EB12DED0 5CCD8C97 240C8D1C

C :

D4163C6A 49313E63 0D1ACCBE 7AD73B3E 3312DE9D DA850D91 03785C3A C611B112

5D1BCAFC 033755D2 3B8EE05E 15251E4E 636A724F F0A8E584 4AABEAAF 122FC0C4

H :

3312DE9D DA850D91 03785C3A C611B112 5D1BCAFC 033755D2 3B8EE05E 15251E4E

636A724F F0A8E584 4AABEAAF 122FC0C4

SHABAL-512

A:

1FD517B4 18EE0662 002DA3F7 3C864C42 00BDBC17 D3A91349 84B98D58 DB0A255C

EA84933C 78858700 4E1BD28E 22E17C53

B :

D90A51B3 625DBAFC A04AE0F1 15BBA584 3D510ABB 8DF79E61 BBC7D290 442F3794

A65F93BA 7FCB1E48 60830747 B3922082 93AC0A65 FFB4D084 7900BFF4 8548658A

C :

C6168015 0A3F1FC8 688DD952 8E9E2FED 23EF9578 BCE2A7CB A5D80961 E6C9E632

9701A5A6 F037B89F 20C6C44E DC7931E7 2BB5AB82 B3ADCD32 9CE25056 22305E98

H :

C6168015 0A3F1FC8 688DD952 8E9E2FED 23EF9578 BCE2A7CB A5D80961 E6C9E632

9701A5A6 F037B89F 20C6C44E DC7931E7 2BB5AB82 B3ADCD32 9CE25056 22305E98

Kriptanalízis

A SHABAL a Merkle-Damgaard séma és az abszorbens funkció (szivacs funkció) keresztezése. Ezen sémák stabilitásához a transzformáció kriptográfiai erőssége szükséges . A SHABAL alkotói pedig erre a célra törekedtek. Sajnos instabilnak bizonyult, de a kriptoanalitikusok arra a következtetésre jutottak, hogy a SHABAL biztonsága ettől nem szenvedett kárt. Ez a tény különösen érdekes, és jelenleg is vizsgálják. [3]

Jegyzetek

  1. hu:SHA-3#cite note-5
  2. Shabal, a NIST Cryptographic Hash Algorithm Competition (PDF)  pályázata (a link nem érhető el) . Az eredetiből archiválva: 2012. április 10.
  3. 1 2 Archivált másolat . Letöltve: 2009. november 25. Az eredetiből archiválva : 2010. március 7..

Linkek