Kuznyechik (Russian: Кузнечик, literally: "grasshopper") is a symmetrical block cipher . It has a block size of 128-bit and a key length of 256-bit. The cipher is defined in the national standard of Russia GOST R 34.12-2015 in English and also in RFC 7801 .
The name of the cipher comes from the Russian word for grasshopper, although the standard explicitly mentions that the English name is Kuznyechik . The developers said they wanted to follow the trend of hard-to-pronounce names for algorithms like Rijndael and Keccak .
The GOST R 34.12-2015 standard defines the new cipher as an addition to the old GOST block cipher.
Kuznyechik is based on the substitution-permutation network , with the key schedule using the Feistel network .
VeraCrypt (descendant of TrueCrypt ) offers Kuznyechik as one of the encryption algorithms.
Designation
- Finite body .
![{\ displaystyle x ^ {8} + x ^ {7} + x ^ {6} + x + 1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/55b521190ba677d300770fc36a92c07174b40916)
- ( )
![\ mathbb {Z} _ {p}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dbc1df7227ef11fe88dccd2dae3adc7bbdeae5f4)
![{\ displaystyle p = 2 ^ {8}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/104555afd1b918c778e04071c73e2e446c112877)
- .
![{\ displaystyle Bin_ {8}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ba6176db2bc5c78530787dfc561b4e93646ffc0e)
- .
![\ mathbb F](https://wikimedia.org/api/rest_v1/media/math/render/svg/573f72afae7df709959ab1a58cd643743466a187)
-
description
The following is specified for encryption, decryption and key generation:
, where , are binary strings of the form ... ( is string concatenation ).
![k](https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40)
![a](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffd2487510aa438433a2579450ab2b3d557e5edc)
![{\ displaystyle a = a_ {15} ||}](https://wikimedia.org/api/rest_v1/media/math/render/svg/996f06049b4897a9a7bac2b4c179350e378ba4e1)
![{\ displaystyle || a_ {0}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1b9507cebd5e3aa18b9135b022db07c987facfed)
![||](https://wikimedia.org/api/rest_v1/media/math/render/svg/21f5807306073054891bcdde4e801db2773e82d2)
... is an inverted transformation of .
![{\ displaystyle || S (a_ {0}). ~~ N ^ {- 1} (a)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed4a7ee4298502e88ec555f3f6a1130a7af35da2)
![{\ displaystyle N (a)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4142eaabe9a1d6e20402aa6a9356f3c1c4d54471)
... ...![{\ displaystyle, a_ {0}) || a_ {15} ||}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0baa59238a4f328e38f2276c5d9391e4f659a4d2)
- inverted transformation of , ... ...![{\ displaystyle G (a)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/38a2adfdc4369a2813cc88ccb3610660c54a2375)
![{\ displaystyle G ^ {- 1} (a) = a_ {14} || a_ {13} ||}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2100b2c8b57de4fc1aae14e4d915b659626ea840)
![{\ displaystyle || a_ {0} || \ delta (a_ {14}, a_ {13},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ea28fae3a67a89614ce585bae1cd7a1d73eb14ec)
, where - composition of the transformations of and etc.
![{\ displaystyle G ^ {16}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e871e62162604eaa939bad3f08616007e1e02ffc)
![{\ displaystyle G ^ {15}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b9cddc12533625904b42cfe57a53ff8a352fa00b)
![G](https://wikimedia.org/api/rest_v1/media/math/render/svg/f5f3c8921a3b352de45446a6789b104458c9f90b)
The nonlinear transformation
The nonlinear transformation is given by substituting the following:
S = Bin 8 S 'Bin 8 −1 .
Values of the substitution S ' are given as an array S' = (S '(0), S' (1), ..., S '(255)) :
![{\ displaystyle 104,162,253,58,206,204,181,112,14,86,8,12,118,18,191,114,19,71,156,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7f8be0b93f898fe37ba55c37d2ab9c54660d446a)
Linear transformation
: ...![{\ displaystyle \ gamma (a_ {15},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cc9e4ab99cf228b344efe8e3642d50859ab99a97)
Operations of addition and multiplication are performed in the field .
![\ mathbb F](https://wikimedia.org/api/rest_v1/media/math/render/svg/573f72afae7df709959ab1a58cd643743466a187)
Key generation
The key generation algorithm uses the iterative constant t , i = 1,2,… 32 and sets the shared keys as: … .
![{\ displaystyle C_ {i} = H (Bin_ {128} (i))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8765456f91029559b803121d8e9b0a2ba503fe45)
![{\ displaystyle K = k_ {255} ||}](https://wikimedia.org/api/rest_v1/media/math/render/svg/81a0ee5726fe8efbc2154e69b5aee6c39d5a66ed)
![{\ displaystyle || k_ {0}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/87dbc63e6196441b9b07e3235458b8b060c6d419)
Iterated keys
...
...
...
Encryption algorithm
... where a - 128-bit string.
![{\ displaystyle HNAdd_ {2} [K_ {2}] HNAdd_ {2} [K_ {1}] (a),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2da864962e42c5fdcae6443118501039faf65cc5)
Decryption algorithm
...
Adaptation
VeraCrypt , the encryption software known worldwide, uses Kuznyechik as one of the popular encryption algorithms.
See also
Individual evidence
-
↑ Vasily Dolmatov <dol@srcc.msu.ru>: GOST R 34.12-2015: Block Cipher "Kuznyechik". Retrieved May 25, 2020 (English).
-
↑ Groteck Business Media: ГОСТ Р 34.12–2015: чего ожидать от нового стандарта? | ITSec.Ru. Retrieved May 25, 2020 (English).
-
↑ VeraCrypt - Free Open Source Disk Encryption with Strong Security for the Paranoid. Retrieved May 25, 2020 .