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] .
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.
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ó.
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ásNullá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ásA 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ókMinden 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:
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ényA 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óihozSHABAL-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
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:
ahol
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ő:
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
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
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]
Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|