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 sigen 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 editar

 Cuerpo finito    .

   ( )

  .

  .

  

Descripción editar

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

 , donde  ,   son cadenas binarias de la forma    (  es una cuerda concatenación).

   es una transformación invertida de  .

   

  — transformación invertida de   ,    

 , where   — composición de transformaciones   and   etc.

 

La transformación no lineal editar

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)):

                          

Transformación lineal editar

 :       

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

Generación de clave editar

algoritmo de generación de claves utiliza constante iterativa  , i=1,2,…32. Establece la clave compartida   .

Llaves iteradas

  

  

  

Algoritmo de cifrado editar

   where a — 128-bit string.

Algoritmo de descifrado editar

  

Adopción editar

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

Código Fuente editar

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 editar

  1. http://tc26.ru/en/standard/gost/GOST_R_34_12_2015_ENG.pdf Archivado el 4 de noviembre de 2017 en Wayback Machine. National Standard of the Russian Federation GOST R 34.12–2015 (English Version)
  2. https://www.researchgate.net/scientific-contributions/69696703_A_S_Kuzmin
  3. https://www.researchgate.net/profile/A_Nechaev
  4. http://www.itsec.ru/articles2/crypto/gost-r-chego-ozhidat-ot-novogo-standarta GOST R 34.12–2015: what to expect from a new standard? (Solo Ruso)
  5. «Kuznyechik». VeraCrypt Documentation. IDRIX. Consultado el 3 de febrero de 2018.