Kuznyechik

De testwiki
Revisión del 02:28 1 jul 2024 de imported>LePeupleALœil (Reemplazos con Replacer: «sigen»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Kuznyechik (en ruso: Кузнечик) es un cifrado por bloques simétrico. El cual tiene un tamaño de bloque de 128 bits y una longitud de clave de 256 bits. Está definido en el Estándar Nacional de la Federación Rusa GOST R 34.12-2015 in English[1] y también en RFC 7801.

El nombre del cifrado se puede traducir del ruso. como saltamontes, sin embargo, El estándar dice explícitamente que el nombre en inglés para el cifrado es Kuznyechik . Los diseñadores afirman que al nombrar el código Kuznyechik ellos siguen la tendencia de los nombres de algoritmos difíciles de pronunciar. Esto debido a Rijndael y Keccak. También hay un rumor que el algoritmo fue llamado así por sus creadores: A.S.Kuzmin,[2] A.A.Nechaev[3] (Ruso: Кузьмин, Нечаев и Компания).

El Estándar GOST R 34.12-2015 define al nuevo algoritmo en adición al viejo GOST block cipher (Ahora llamado Magma) Uno y no declara obsoleto el antiguo cifrado.[4]

Kuznyechik está basado en una Red de sustitución-permutación, A través de key schedule emplea una Red de Feistel.

Designaciones

𝔽Cuerpo finito GF(28) x8+x7+x6+x+1.

Bin8:pV8p (p=28)

Bin81:V8pBin8.

δ:V8𝔽𝔽.

δ1:𝔽V8δ

Descripción

Para cifrado, decifrado y generación de claves, las siguientes funciones:

Add2[k](a)=ka, donde k, a son cadenas binarias de la forma a=a15||||a0 (|| es una cuerda concatenación).

N(a)=S(a15)||||S(a0).N1(a) es una transformación invertida de N(a).

G(a)=δ(a15,,a0)||a15||||a1.

G1(a) — transformación invertida de G(a) , G1(a)=a14||a13||||a0||δ(a14,a13,,a0,a15).

H(a)=G16(a), where G16 — composición de transformaciones G15 and G etc.

F[k](a1,a0)=(HNAdd2[k](a1)a0,a1).

La transformación no lineal

Transformación no lineal es dada por subtistuir S = Bin8 S' Bin8−1.

Valores de la sustitución S' se dan como matriz S' = (S'(0), S'(1), …, S'(255)):

S=(252,238,221,17,207,110,49,22,251,196,250,218,35,197,4,77,233, 119,240,219,147,46,153,186,23,54,241,187,20,205,95,193,249,24,101, 90,226,92,239,33,129,28,60,66,139,1,142,79,5,132,2,174,227,106,143, 160,6,11,237,152,127,212,211,31,235,52,44,81,234,200,72,171,242,42, 104,162,253,58,206,204,181,112,14,86,8,12,118,18,191,114,19,71,156,183,93,135,21,161,150,41,16,123,154,199,243,145,120,111,157,158,178, 177,50,117,25,61,255,53,138,126,109,84,198,128,195,189,13,87,223, 245,36,169,62,168,67,201,215,121,214,246,124,34,185,3,224,15,236, 222,122,148,176,188,220,232,40,80,78,51,10,74,167,151,96,115,30,0, 98,68,26,184,56,130,100,159,38,65,173,69,70,146,39,94,85,47,140,163, 165,125,105,213,149,59,7,88,179,64,134,172,29,247,48,55,107,228,136, 217,231,137,225,27,131,73,76,63,248,254,141,83,170,144,202,216,133, 97,32,113,103,164,45,43,9,91,203,155,37,208,190,229,108,82,89,166, 116,210,230,244,180,192,209,102,175,194,57,75,99,182).

Transformación lineal

γ: γ(a15,,a0)=δ1(148*δ(a15)+32*δ(a14)+133*δ(a13)+16*δ(a12)+ 194*δ(a11)+192*δ(a10)+1*δ(a9)+251*δ(a8)+1*δ(a7)+192*δ(a6)+ 194*δ(a5)+16*δ(a4)+133*δ(a3)+32*δ(a2)+148*δ(a1)+1*δ(a0)),

Las operaciones de suma y multiplicación se realizan en el campo 𝔽.

Generación de clave

algoritmo de generación de claves utiliza constante iterativa Ci=H(Bin128(i)), i=1,2,…32. Establece la clave compartida K=k255||||k0.

Llaves iteradas

K1=k255||||k128

K2=k127||||k0

(K2i+1,K2i+2)=F[C8(i1)+8]F[C8(i1)+1](K2i+1,K2i),i=1,2,3,4.

Algoritmo de cifrado

E(a)=Add2[K10]HNAdd2[K9]HNAdd2[K3]HNAdd2[K1](a), where a — 128-bit string.

Algoritmo de descifrado

D(a)=Add2[K1]H1N1Add2[K2]H1N1Add2[K9]H1N1Add2[K10](a).

Adopción

VeraCrypt (un fork de TrueCrypt) incluye a Kuznyechik como uno de sus algoritmos de cifrado soportados.[5]

Código Fuente

https://web.archive.org/web/20160424051147/http://tc26.ru/standard/draft/PR_GOSTR-bch_v4.zip

https://web.archive.org/web/20180406230057/https://fossies.org/windows/misc/VeraCrypt_1.22_Source.zip/src/Crypto/kuznyechik.c (Enlace alternativo para el caso en el que el primer enlace no funcione.)

Referencias

Plantilla:Listaref

Plantilla:Control de autoridades