HOME

TheInfoList



OR:

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

\mathbb F
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 ...
GF(2^8) x^8 + x^7 + x^6 + x + 1. Bin_8 : \Z_p \rightarrow V_8\Z_p (p=2^8) ^: V_8 \rightarrow \Z_pBin_8. \delta: V_8 \rightarrow \mathbb F\mathbb F. \delta^: \mathbb F \rightarrow V_8\delta


Description

For encryption, decryption and key generation, the following functions: Add_2 a)=k\oplus a, where k, a are binary strings of the form a=a_, , , , a_ (, , 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 ...
). N(a)=S(a_), , , , S(a_).~~N^(a) is a reversed transformation of N(a). G(a)=\gamma(a_,,a_0), , a_, , , , a_. G^(a) — reversed transformation of G(a) , G^(a)=a_, , a_, , , , a_, , \gamma(a_,a_,,a_0,a_). H(a)=G^(a), where G^ — composition of transformations G^ and G etc. F a_1,a_0)=(HNAdd_2 a_1)\oplus a_0, a_1).


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


Linear transformation

\gamma: \gamma(a_, , a_0) = \delta^~(148 * \delta(a_) + 32 * \delta(a_) + 133 * \delta(a_) + 16 * \delta(a_) + 194 * \delta(a_) + 192 * \delta(a_) + 1 * \delta(a_9) + 251 * \delta(a_8) + 1 * \delta(a_7) + 192 * \delta(a_6) + 194 * \delta(a_5) + 16 * \delta(a_4) + 133 * \delta(a_3) + 32 * \delta(a_2) + 148 * \delta(a_1) + 1 * \delta(a_0)), operations of addition and multiplication are carried out in the field \mathbb F.


Key generation

The key generation algorithm uses iterative constant C_i=H(Bin_(i)), i=1,2,…32 and sets the shared key as follows: K=k_, , , , k_0. Iterated keys: K_1=k_, , , , k_ K_2=k_, , , , k_ (K_, K_)=F _/math>…F _K_, K_), i=1, 2, 3, 4.


Encryption algorithm

E(a)=Add_2 _NAdd_2 _9/math>…HNAdd_2 _2NAdd_2 _1a), where a — 128-bit string.


Decryption algorithm

D(a)=Add_2 _^H^Add_2 _2/math>…N^H^Add_2 _9^H^Add_2 _a).


Cryptanalysis

Riham AlTawy and Amr M. Youssef describe a meet-in-the-middle attack on the 5-round reduced Kuznyechik which enables recovery of the key with a
time complexity In computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations performed by ...
of 2140, memory complexity of 2153, and data complexity of 2113.
Alex Biryukov Alex Biryukov is a cryptographer, currently a full professor at the University of Luxembourg. His notable work includes the design of the stream cipher LEX, as well as the cryptanalysis of numerous cryptographic primitives. In 1998, he developed imp ...
, Leo Perrin, and Aleksei Udovenko published a paper in which they show that the
S-box In cryptography, an S-box (substitution-box) is a basic component of symmetric key algorithms which performs substitution. In block ciphers, they are typically used to obscure the relationship between the key and the ciphertext, thus ensuring Sha ...
es of Kuznyechik and
Streebog Streebog (russian: Стрибог) is a cryptographic hash function defined in the Russian national standard GOST R 34.11-2012 ''Information Technology – Cryptographic Information Security – Hash Function''. It was created to replace an obsol ...
were not created
pseudo-random A pseudorandom sequence of numbers is one that appears to be statistically random, despite having been produced by a completely deterministic and repeatable process. Background The generation of random numbers has many uses, such as for random ...
ly but by using a hidden algorithm which they were able to
reverse engineer Reverse engineering (also known as backwards engineering or back engineering) is a process or method through which one attempts to understand through deductive reasoning how a previously made device, process, system, or piece of software accompli ...
. Later Leo Perrin and Aleksei Udovenko published two alternative decompositions of the S-box and proved its connection to the S-box of the Belarusian cipher BelT. The authors of the paper note that while the reason for using such a structure remains unclear, generating S-boxes by a hidden algorithm contradicts the concept of
nothing-up-my-sleeve number In cryptography, nothing-up-my-sleeve numbers are any numbers which, by their construction, are above suspicion of hidden properties. They are used in creating cryptographic functions such as hashes and ciphers. These algorithms often need rando ...
s which could prove that no weaknesses were intentionally introduced in their design. Riham AlTawy, Onur Duman, and Amr M. Youssef published two fault attacks on Kuznyechik which show the importance of protecting the implementations of the cipher.


Adoption

VeraCrypt (a fork of
TrueCrypt TrueCrypt is a discontinued source-available freeware utility used for on-the-fly encryption (OTFE). It can create a virtual encrypted disk within a file, or encrypt a partition or the whole storage device (pre-boot authentication). On 28 May ...
) included Kuznyechik as one of its supported encryption algorithms.


Source code

* 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 (alternative link in case the first link is not working)


References

{{Cryptography navbox , block GOST standards