Kuznyechik (russian: Кузнечик, literally "grasshopper") is a symmetric
block cipher
In cryptography, a block cipher is a deterministic algorithm operating on fixed-length groups of bits, called ''blocks''. Block ciphers are specified cryptographic primitive, elementary components in the design of many cryptographic protocols and ...
. It has a block size of 128 bits and key length of 256 bits. It is defined in the National Standard of the Russian Federation GOST R 34.12-2015 and also in RFC 7801.
The name of the cipher can be translated from Russian as
grasshopper
Grasshoppers are a group of insects belonging to the suborder Caelifera. They are among what is possibly the most ancient living group of chewing herbivorous insects, dating back to the early Triassic around 250 million years ago.
Grasshopp ...
, however, the standard explicitly says that the English name for the cipher is ''Kuznyechik'' (). The designers claim that by naming the cipher Kuznyechik they follow the trend of difficult to pronounce algorithm names set up by
Rijndael and
Keccak
SHA-3 (Secure Hash Algorithm 3) is the latest member of the Secure Hash Algorithm family of standards, released by NIST on August 5, 2015. Although part of the same series of standards, SHA-3 is internally different from the MD5-like struct ...
. There is also a rumor that the cipher was named after its creators: A. S. Kuzmin, A. A. Nechaev and Company (Russian: Кузьмин, Нечаев и Компания).
The standard GOST R 34.12-2015 defines the new cipher in addition to the old
GOST block cipher
The GOST block cipher (Magma), defined in the standard GOST 28147-89 (RFC 5830), is a Soviet and Russian government standard symmetric key block cipher with a block size of 64 bits. The original standard, published in 1989, did not give the ciphe ...
(now called Magma) as one and does not declare the old cipher obsolete.
Kuznyechik is based on a
substitution–permutation network
In cryptography, an SP-network, or substitution–permutation network (SPN), is a series of linked mathematical operations used in block cipher algorithms such as AES (Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFER, SHARK, and Square.
S ...
, though the
key schedule
In cryptography, the so-called product ciphers are a certain kind of cipher, where the (de-)ciphering of data is typically done as an iteration of ''rounds''. The setup for each round is generally the same, except for round-specific fixed valu ...
employs a
Feistel network
In cryptography, a Feistel cipher (also known as Luby–Rackoff block cipher) is a symmetric structure used in the construction of block ciphers, named after the German-born physicist and cryptographer Horst Feistel, who did pioneering research whi ...
.
Designations
—
Finite field
In mathematics, a finite field or Galois field (so-named in honor of Évariste Galois) is a field that contains a finite number of elements. As with any field, a finite field is a set on which the operations of multiplication, addition, subtr ...
.
—
(
)
—
.
—
.
—
Description
For encryption, decryption and key generation, the following functions:
, where
,
are binary strings of the form
…
(
is string
concatenation
In formal language, formal language theory and computer programming, string concatenation is the operation of joining character string (computer science), character strings wikt:end-to-end, end-to-end. For example, the concatenation of "sno ...
).
…
is a reversed transformation of
.
…
…
— reversed transformation of
,
…
…
, where
— composition of transformations
and
etc.
The nonlinear transformation
Non-linear transformation is given by substituting
S = Bin8 S' Bin8−1.
Values of the substitution
S' are given as array
S' = (S'(0), S'(1), …, S'(255)):
Linear transformation
:
…
operations of addition and multiplication are carried out in the field
.
Key generation
The key generation algorithm uses iterative constant
, i=1,2,…32
and sets the shared key as follows:
…
.
Iterated keys:
…
…