SHABAL | |
---|---|
Creado | 2008 |
publicado | 2008 |
tamaño de hash | 192, 224, 256, 384, 512 |
Número de rondas | 3 |
Tipo de | función hash |
SHABAL es un algoritmo hash criptográfico . Es uno de los participantes en la competencia SHA-3 , que es convocada por el Instituto Nacional de Estándares y Tecnología , el anuncio de los resultados finales y el ganador está previsto para 2012 [1] . Fue presentado a la competencia por el proyecto de investigación "Zafiro" (Saphir: Seguridad y Análisis de Hash Primitives), patrocinado por la Agencia Francesa de Investigación (ANR), y la organización principal - France Telecom .
Autores del algoritmo: 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.
El algoritmo, según los autores, lleva el nombre de "Sebastien Chabal, un jugador de rugby francés conocido por su estilo de juego agresivo, así como por su barba y cabello largo, por lo que se le dio el apodo de "Caveman" (Hombre de las cavernas)" [ 2] .
Según los desarrolladores, SHABAL es uno de los candidatos más rápidos en la competencia SHA-3 . [3]
SHABAL puede aceptar secuencias de bits de cualquier longitud como entrada, sin embargo, no se garantiza la fuerza criptográfica para mensajes con una longitud de más de un bit.
SHABAL se llama SHABAL-512, SHABAL-384, SHABAL-256, SHABAL-224, SHABAL-192 dependiendo de la longitud del hash resultante , respectivamente igual a 512, 384, 256, 224, 192 bits.
Después de que el algoritmo recibe una secuencia de bits como entrada, se divide en bloques de 512 bits, independientemente de la variación SHABAL utilizada (SHABAL-512, SHABAL-384, etc.). Tenga en cuenta que el tamaño del bloque es un múltiplo de 32. Al último bloque, si su longitud en bits no es igual a 512 bits, se le asigna un bit uno y el número necesario de ceros para lograr el tamaño de bloque especificado.
Al calcular la función hash, se utiliza un búfer dividido en tres partes , donde y y son las longitudes de los búferes , y respectivamente. También se utiliza un búfer auxiliar W de 64 bits, que es un contador de números de bloque. Las longitudes de los búferes y son iguales a , donde es la longitud del bloque en el que se divide el mensaje enviado a la entrada.
SHABAL tiene dos opciones configurables y . La longitud del búfer está determinada por , a saber . El parámetro es el número de rondas en la transformación , cuanto mayor sea este valor, más seguridad se garantiza. El algoritmo SHABAL presentado para la competencia define estrictamente
SHABAL es un algoritmo iterativo. El número de repeticiones es igual al número de bloques de la secuencia de bits original más dos iteraciones de los bloques añadidos al principio del mensaje (para más detalles sobre estos dos bloques, consulte la descripción del algoritmo por pasos), más tres más iteraciones finales. En cada iteración, ocurre una transformación . Con cada repetición, excepto las tres finales, el número almacenado en aumenta en 1, es decir, como ya se mencionó , esto es un contador.
Tenga en cuenta que las operaciones de suma y resta se realizan dentro de palabras (es decir, bloques de 4 bytes) y sin acarreo.
InicializaciónSe ingresan ceros . Se agregan dos bloques al comienzo del mensaje principal , cada fragmento de 4 bytes contiene números fijos que van desde hasta , donde es la longitud de la salida de la función hash . Más detalladamente, las siguientes palabras (bloques de 32 bits) se escriben en los dos bloques agregados, que llamaremos y (cada uno = 512 bits de tamaño ): , , , . Palabras intermedias y se completan por analogía.
Al número in se le asigna el valor -1, por lo que después de procesar los bloques agregados al principio, el primer bloque del mensaje de entrada corresponderá a , igual a 1.
BloqueoLa secuencia de bits de entrada se divide en bloques de 512 bits, si la longitud del mensaje no es un múltiplo de la longitud especificada, se agrega a la última parte una unidad de bit y el número de ceros necesarios para lograr el tamaño especificado.
Iteraciones normalesPara todos los w ( y las partes de -32 bits de W) desde −1 hasta k (donde k es el número de bloques del mensaje original), haga lo siguiente:
Después de completar las iteraciones habituales, debe realizar tres iteraciones finales más. Se diferencian de los habituales en que se toma como bloque el último bloque de mensajes , el valor del contador es fijo y es igual a k número total de bloques.
ResultadoLas palabras de salida (bloques de 32 bits) de a son el resultado. y son ignorados.
NotaVale la pena señalar que es completamente opcional calcular las transformaciones de los dos primeros bloques agregados cada vez que se usa SHABAL. Con el mismo éxito, los valores de estos dos bloques pueden calcularse una vez y luego usarse como un IV (vector inicial).
Lista IV para diferentes versiones de SHABALSHABAL-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
Datos de entrada: M,A,B,C
Salida: A,B
( significa posiciones de rotación de bit a la izquierda)
La transformación se presenta para mayor claridad en pseudocódigo:
Para i de 0 a 15, haz:
Siguiente yo;
Para j de 0 a p-1, haz:
dónde
Siguiente j;
Para j de 0 a 35, haz:
Siguiente j;
Donde las funciones U y V se definen como sigue:
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 9C681AÑADIR 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
SHABAL es un cruce entre un esquema Merkle-Damgaard y una función absorbente (función esponja). Para la estabilidad de estos esquemas es necesaria la solidez criptográfica de la transformación . Y los creadores de SHABAL aspiraban a este objetivo. Desafortunadamente , resultó ser inestable, pero los criptoanalistas llegaron a la conclusión de que la seguridad de SHABAL no se vio afectada por esto. Este hecho es de particular interés y está siendo estudiado actualmente. [3]
Funciones hash | |
---|---|
propósito general | |
Criptográfico | |
Funciones de generación de claves | |
Número de cheque ( comparación ) | |
Hachís |
|