--- /dev/null
+@node en2814789modes
+@section GOST 28147-89 cipher modes of operation
+
+@table @asis
+@item Type of standard
+ Encryption and authentication modes
+@item What modes are defined
+ @itemize
+ @item ECB
+ @item CFB
+ @item CTR
+ @item MAC
+ @end itemize
+@item RFC
+ @url{https://tools.ietf.org/html/rfc5830.html, 5830}
+@end table
+
+@strong{Features}:
+@itemize
+@item 28147-89 MAC is completely unusable:
+ @itemize
+ @item Reduced 16-round Magma cipher is used instead of 32 one.
+ @item Authenticating data does not have neither padding, nor
+ length specifying, so @code{MAC(0xDEAD) = MAC(0xDEAD00)}.
+ @end itemize
+@item Specified counter (CTR) mode increments counters with predefined
+constants for 32-bit halves of the block. This differs from simpler
+counter mode implementations.
+@end itemize
@node en2814789
-@section Magma (GOST 28147-89)
+@section GOST 28147-89 (Magma)
@table @asis
@item Algorithm type
strength.
@item Implementations using different S-boxes are not interoperable.
@end itemize
-@item "Magma" name was issued in @ref{en34122015, Kuznechik} standard,
-that also defines this algorithm.
@item You have to be very cautious using that cipher with that small
blocksize and often do rekeying.
+@item "Magma" name was issued in @ref{en34122015, Kuznechik} standard.
+It is identical to GOST 28147-89, except fixed S-boxes.
@end itemize
@strong{Implementations}: @ref{2814789Impl, here}.
@strong{Features}:
@itemize
-@item Uses @ref{en2814789, Magma} block cipher inside.
-@item You have to specify S-box to use for that Magma cipher.
+@item Uses @ref{en2814789, GOST 28147-89} block cipher inside.
+@item You have to specify S-box to use for that block cipher.
@item Standard does not define how digest output must be presented --
that is why there are incompatible implementations, that output digest
as either little-endian or big-endian value.
@item Defined S-boxes was not created pseudorandomly, but with reverse
engineered @url{https://eprint.iacr.org/2016/071.pdf, algorithm}.
However there is no proof that it reduces cipher's strength.
+@item Standard's document also defines @ref{en2814789, Magma} cipher.
@end itemize
@strong{Implementations}: @ref{34122015Impl, here}.
@node en34132015
-@section Cipher modes of operation
+@section GOST R 34.13-2015 cipher modes of operation
-@ref{en2814789, GOST 28147-89} standard defines the following modes of
-operation for Magma cipher:
-@itemize
+@table @asis
+@item Type of standard
+ Encryption and authentication modes
+@item What modes are defined
+ @itemize
@item ECB
+ @item CBC
+ @item OFB
@item CFB
@item CTR
@item MAC
-@end itemize
-
-@strong{Features}:
-@itemize
-@item 28147-89 MAC is completely unusable:
- @itemize
- @item Reduced 16-round Magma cipher is used instead of 32 one.
- @item Authenticating data does not have neither padding, nor
- length specifying, so @code{MAC(0xDEAD) = MAC(0xDEAD00)}.
@end itemize
-@item Specified counter (CTR) mode increments counters with predefined
-constants for 32-bit halves of the block. This differs from simpler
-counter mode implementations.
-@end itemize
-
-Modern @strong{GOST R 34.13-2015} standard defines the following modes
-of operation:
-@itemize
-@item ECB
-@item CBC
-@item OFB
-@item CFB
-@item CTR
-@item MAC
-@end itemize
+@end table
@strong{Features}:
@itemize
+@item Replaces obsolete @ref{en2814789modes, GOST 28147-89 modes}.
@item Common simple counter mode implementation.
@item Specified MAC is identical to
-@url{https://en.wikipedia.org/wiki/CMAC, CMAC} and can be used safely.
+@url{https://en.wikipedia.org/wiki/CMAC, CMAC} and can be safely used.
@end itemize
@tab
@itemize
@item @ref{en34122015, Kuznechik} (GOST R 34.12-2015)
- @item @ref{en2814789, Magma} (GOST 28147-89)
+ @item @ref{en2814789, GOST 28147-89} (Magma)
@end itemize
@item
@end multitable
@menu
-* Kuznechik (block cipher): en34122015.
-* Streebog (hash function): en34112012.
-* 34.10 (digital signature): en3410.
-* VKO (common key derivation): enVKO.
-* Magma (block cipher): en2814789.
-* Cipher modes of operation: en34132015.
+* GOST R 34.12-2015 (Kuznechik) (block cipher): en34122015.
+* GOST R 34.13-2015 (cipher modes of operation): en34132015.
+* GOST R 34.11-2012 (Streebog) (hash function): en34112012.
+* GOST R 34.10 (digital signature): en3410.
+* VKO 34.10-2001 (common key derivation): enVKO.
+* GOST 28147-89 (Magma) (block cipher): en2814789.
+* GOST 28147-89 (cipher modes of operation)): en2814789modes.
* Key meshing: enMeshing.
-* 34.11-94 (hash function): en341194.
+* GOST R 34.11-94 (hash function): en341194.
@end menu
You can send questions and suggestions either to
site's author: @emph{admin at cypherpunks dot ru}.
@include en/34.12-2015.texi
+@include en/34.13-2015.texi
@include en/34.11-2012.texi
@include en/34.10.texi
@include en/vko.texi
@include en/28147-89.texi
-@include en/34.13-2015.texi
+@include en/28147-89-modes.texi
@include en/meshing.texi
@include en/34.11-94.texi
There is no key meshing western algorithm analogue. That algorithm
changes cipherkey each kilobyte of data processed. It is used together
-with @ref{en2814789, Magma} and is defined in
+with @ref{en2814789, GOST 28147-89} and is defined in
@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}. CryptoPro
developers tell that it is intended to resist side-channel attacks.
It has already showed usefulness: there is @url{https://sweet32.info/,
Sweet32} attack on all 64-bit blockciphers, that is not applicable to
-Magma with key meshing used.
+when key meshing used.
--- /dev/null
+@node ru2814789modes
+@section ГОСТ 28147-89 режимы шифрования
+
+@table @asis
+@item Что за стандарт
+ Режимы шифрования и аутентификации
+@item Какие режимы описаны
+ @itemize
+ @item ECB (простая замена)
+ @item CFB (гаммирование с обратной связью
+ @item CTR (гаммирование)
+ @item MAC (выработка имитовставки)
+ @end itemize
+@item RFC
+ @url{https://tools.ietf.org/html/rfc5830.html, 5830}
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Использовать 28147-89 MAC режим категорически нельзя:
+ @itemize
+ @item Шифр Магма используется в 16-раундовом варианте (вместо 32).
+ @item Аутентифицируемый текст не имеет ни padding, ни передачи длины
+ данных, таким образом, @code{MAC(0xDEAD) = MAC(0xDEAD00)}.
+ @end itemize
+@item Режим счётчика в этом стандарте для каждой 32-битной половинки блока
+увеличивает счётчик на значение фиксированной константы. Это отличается
+от более простых реализаций счётчика.
+@end itemize
@node ru2814789
-@section Ð\9cагма (Ð\93Ð\9eСТ 28147-89)
+@section Ð\93Ð\9eСТ 28147-89 (Ð\9cагма)
@table @asis
@item Что за алгоритм
@item Реализации алгоритма, использующие разные таблицы, не
совместимы между собой.
@end itemize
-@item Название "Магма" введено в стандарте @ref{ru34122015, Кузнечика},
-который также описывает и этот блочный шифр.
@item Из-за маленького размера блока необходимо быть аккуратным при его
использовании и часто менять ключи.
+@item Название "Магма" введено в стандарте @ref{ru34122015, Кузнечика}.
+Магма идентичен ГОСТ 28147-89, за исключением фиксированной таблицы замены.
@end itemize
@anchor{2814789Impl}
@strong{Особенности}:
@itemize
-@item Ð\92нÑ\83Ñ\82Ñ\80и Ñ\81ебÑ\8f иÑ\81полÑ\8cзÑ\83еÑ\82 блоÑ\87нÑ\8bй Ñ\88иÑ\84Ñ\80 @ref{ru2814789, Ð\9cагма}.
+@item Ð\92нÑ\83Ñ\82Ñ\80и Ñ\81ебÑ\8f иÑ\81полÑ\8cзÑ\83еÑ\82 блоÑ\87нÑ\8bй Ñ\88иÑ\84Ñ\80 @ref{ru2814789, Ð\93Ð\9eСТ 28147-89}.
@item Для этой хэш-функции необходимо задавать используемые таблицы
-заменÑ\8b Ð\9cагмÑ\8b.
+заменÑ\8b блоÑ\87ного Ñ\88иÑ\84Ñ\80а.
@item Стандарт не определяет в каком виде должен быть представлен
результат -- поэтому есть несовместимые между собой реализации в который
хэш представлен в виде little-endian или big-endian значения.
@url{https://eprint.iacr.org/2016/071.pdf, удалось узнать}. Однако нет
доказательств что это негативно сказалось на криптографической стойкости
алгоритма.
+@item Документ стандарта также задаёт шифр @ref{ru2814789, Магма}.
@end itemize
@anchor{34122015Impl}
@node ru34132015
-@section РежимÑ\8b Ñ\88иÑ\84Ñ\80ованиÑ\8f блоÑ\87нÑ\8bÑ\85 Ñ\88иÑ\84Ñ\80ов
+@section Ð\93Ð\9eСТ Ð 34.13-2015 Ñ\80ежимÑ\8b Ñ\88иÑ\84Ñ\80ованиÑ\8f
-@ref{ru2814789, ГОСТ 28147-89} определял следующие режимы шифрования и
-аутентификации для блочного шифра Магма:
-@itemize
+@table @asis
+@item Что за стандарт
+ Режимы шифрования и аутентификации
+@item Какие режимы описаны
+ @itemize
@item ECB (простая замена)
- @item CFB (гаммирование с обратной связью
+ @item CBC (простая замена с зацеплением)
+ @item OFB (гаммирование с обратной связью по выходу)
+ @item CFB (гаммирование с обратной связью по шифротексту)
@item CTR (гаммирование)
@item MAC (выработка имитовставки)
-@end itemize
-
-@strong{Особенности}:
-@itemize
-@item Использовать 28147-89 MAC режим категорически нельзя:
- @itemize
- @item Шифр Магма используется в 16-раундовом варианте (вместо 32).
- @item Аутентифицируемый текст не имеет ни padding, ни передачи длины
- данных, таким образом, @code{MAC(0xDEAD) = MAC(0xDEAD00)}.
@end itemize
-@item Режим счётчика в этом стандарте для каждой 32-битной половинки блока
-увеличивает счётчик на значение фиксированной константы. Это отличается
-от более простых реализаций счётчика.
-@end itemize
-
-Современный @strong{ГОСТ Р 34.13-2015} стандарт определяет следующие
-режимы шифрования и аутентификации:
-@itemize
-@item ECB (простая замена)
-@item CBC (простая замена с зацеплением)
-@item OFB (гаммирование с обратной связью по выходу)
-@item CFB (гаммирование с обратной связью по шифротексту)
-@item CTR (гаммирование)
-@item MAC (выработка имитовставки)
-@end itemize
+@end table
@strong{Особенности}:
@itemize
+@item Пришёл на смену @ref{ru2814789modes, ГОСТ 28147-89 режимам}.
@item Реализация режима счётчика стандартна.
-@item РеализаÑ\86иÑ\8f MAC в Ñ\8dÑ\82ом Ñ\81Ñ\82андаÑ\80Ñ\82е иденÑ\82иÑ\87на
-@url{https://en.wikipedia.org/wiki/CMAC, CMAC} и его использование безопасно.
+@item РеализаÑ\86иÑ\8f MAC иденÑ\82иÑ\87на @url{https://en.wikipedia.org/wiki/CMAC, CMAC}
+и его использование безопасно.
@end itemize
@tab
@itemize
@item @ref{ru34122015, Кузнечик} (ГОСТ Р 34.12-2015)
- @item @ref{ru2814789, Ð\9cагма} (ГОСТ 28147-89)
+ @item @ref{ru2814789, Ð\93Ð\9eСТ 28147-89 (Ð\9cагма)} (ГОСТ 28147-89)
@end itemize
@item
@end multitable
@menu
-* Кузнечик (блочный шифр): ru34122015.
-* Стрибог (хэш-функция): ru34112012.
-* 34.10 (ЭЦП): ru3410.
-* ВКО (согласование ключей): ruVKO.
-* Магма (блочный шифр): ru2814789.
-* Режимы шифрования: ru34132015.
+* ГОСТ Р 34.12-2015 (Кузнечик) (блочный шифр): ru34122015.
+* ГОСТ Р 34.13-2015 (режимы шифрования): ru34132015.
+* ГОСТ Р 34.11-2012 (Стрибог) (хэш-функция): ru34112012.
+* ГОСТ Р 34.10 (ЭЦП): ru3410.
+* ВКО 34.10-2001 (согласование ключей): ruVKO.
+* ГОСТ 28147-89 (Магма) (блочный шифр): ru2814789.
+* ГОСТ 28147-89 (режимы шифрования): ru2814789modes.
* Key meshing (запутывание ключа): ruMeshing.
-* 34.11-94 (хэш-функция): ru341194.
+* ГОСТ Р 34.11-94 (хэш-функция): ru341194.
@end menu
Вопросы и предложения вы можете отправить в
либо автору сайта: @emph{admin at cypherpunks dot ru}.
@include ru/34.12-2015.texi
+@include ru/34.13-2015.texi
@include ru/34.11-2012.texi
@include ru/34.10.texi
@include ru/vko.texi
@include ru/28147-89.texi
-@include ru/34.13-2015.texi
+@include ru/28147-89-modes.texi
@include ru/meshing.texi
@include ru/34.11-94.texi
Алгоритм запутывания ключа (key meshing) не имеет аналогов в Западных
алгоритмах. Его суть: делать смену ключа каждый килобайт зашифрованных
-даннÑ\8bÑ\85. Ð\9fÑ\80именÑ\8fеÑ\82Ñ\81Ñ\8f Ñ\81овмеÑ\81Ñ\82но Ñ\81 @ref{ru2814789, Ð\9cагмой} и описан в
+даннÑ\8bÑ\85. Ð\9fÑ\80именÑ\8fеÑ\82Ñ\81Ñ\8f Ñ\81овмеÑ\81Ñ\82но Ñ\81 @ref{ru2814789, Ð\93Ð\9eСТ 28147-89} и описан в
@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}. По заверению
разработчиков из КриптоПро, он служит для усложнения проведения атак по
побочным каналам.
На практике он себя уже проявил: есть @url{https://sweet32.info/, Sweet32}
атака на все 64-битные блочные шифры, которая при использовании алгоритма
-запутывания ключа уже неприменима к Магме.
+запутывания ключа уже не применима.