From 13a51c53685e326c0fcc7360fe8c884eae541269 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 25 Oct 2016 00:16:43 +0300 Subject: [PATCH] Split cipher modes of operation --- en/28147-89-modes.texi | 29 ++++++++++++++++++++++++++++ en/28147-89.texi | 6 +++--- en/34.11-94.texi | 4 ++-- en/34.12-2015.texi | 1 + en/34.13-2015.texi | 40 +++++++++++--------------------------- en/index.texi | 20 ++++++++++--------- en/meshing.texi | 4 ++-- ru/28147-89-modes.texi | 29 ++++++++++++++++++++++++++++ ru/28147-89.texi | 6 +++--- ru/34.11-94.texi | 4 ++-- ru/34.12-2015.texi | 1 + ru/34.13-2015.texi | 44 +++++++++++++----------------------------- ru/index.texi | 20 ++++++++++--------- ru/meshing.texi | 4 ++-- 14 files changed, 120 insertions(+), 92 deletions(-) create mode 100644 en/28147-89-modes.texi create mode 100644 ru/28147-89-modes.texi diff --git a/en/28147-89-modes.texi b/en/28147-89-modes.texi new file mode 100644 index 0000000..e23edaf --- /dev/null +++ b/en/28147-89-modes.texi @@ -0,0 +1,29 @@ +@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 diff --git a/en/28147-89.texi b/en/28147-89.texi index c198715..7c0290f 100644 --- a/en/28147-89.texi +++ b/en/28147-89.texi @@ -1,5 +1,5 @@ @node en2814789 -@section Magma (GOST 28147-89) +@section GOST 28147-89 (Magma) @table @asis @item Algorithm type @@ -35,10 +35,10 @@ 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}. diff --git a/en/34.11-94.texi b/en/34.11-94.texi index 354d9bc..bdb618f 100644 --- a/en/34.11-94.texi +++ b/en/34.11-94.texi @@ -25,8 +25,8 @@ @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. diff --git a/en/34.12-2015.texi b/en/34.12-2015.texi index 29825ce..bff0fcd 100644 --- a/en/34.12-2015.texi +++ b/en/34.12-2015.texi @@ -26,6 +26,7 @@ @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}. diff --git a/en/34.13-2015.texi b/en/34.13-2015.texi index 83cc9cb..29bac32 100644 --- a/en/34.13-2015.texi +++ b/en/34.13-2015.texi @@ -1,42 +1,24 @@ @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 diff --git a/en/index.texi b/en/index.texi index 4ad4e5c..f7b3c99 100644 --- a/en/index.texi +++ b/en/index.texi @@ -23,7 +23,7 @@ Information here is aimed for software and protocol developers. @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 @@ -68,14 +68,15 @@ Information here is aimed for software and protocol developers. @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 @@ -83,10 +84,11 @@ 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 diff --git a/en/meshing.texi b/en/meshing.texi index 6bf3c5f..ff3292b 100644 --- a/en/meshing.texi +++ b/en/meshing.texi @@ -3,7 +3,7 @@ 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. @@ -12,4 +12,4 @@ over the key and initialization vector. 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. diff --git a/ru/28147-89-modes.texi b/ru/28147-89-modes.texi new file mode 100644 index 0000000..a7baae2 --- /dev/null +++ b/ru/28147-89-modes.texi @@ -0,0 +1,29 @@ +@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 diff --git a/ru/28147-89.texi b/ru/28147-89.texi index b5148f2..fe67239 100644 --- a/ru/28147-89.texi +++ b/ru/28147-89.texi @@ -1,5 +1,5 @@ @node ru2814789 -@section Магма (ГОСТ 28147-89) +@section ГОСТ 28147-89 (Магма) @table @asis @item Что за алгоритм @@ -36,10 +36,10 @@ @item Реализации алгоритма, использующие разные таблицы, не совместимы между собой. @end itemize -@item Название "Магма" введено в стандарте @ref{ru34122015, Кузнечика}, -который также описывает и этот блочный шифр. @item Из-за маленького размера блока необходимо быть аккуратным при его использовании и часто менять ключи. +@item Название "Магма" введено в стандарте @ref{ru34122015, Кузнечика}. +Магма идентичен ГОСТ 28147-89, за исключением фиксированной таблицы замены. @end itemize @anchor{2814789Impl} diff --git a/ru/34.11-94.texi b/ru/34.11-94.texi index de6cce3..7efbb1f 100644 --- a/ru/34.11-94.texi +++ b/ru/34.11-94.texi @@ -25,9 +25,9 @@ @strong{Особенности}: @itemize -@item Внутри себя использует блочный шифр @ref{ru2814789, Магма}. +@item Внутри себя использует блочный шифр @ref{ru2814789, ГОСТ 28147-89}. @item Для этой хэш-функции необходимо задавать используемые таблицы -замены Магмы. +замены блочного шифра. @item Стандарт не определяет в каком виде должен быть представлен результат -- поэтому есть несовместимые между собой реализации в который хэш представлен в виде little-endian или big-endian значения. diff --git a/ru/34.12-2015.texi b/ru/34.12-2015.texi index fcca2bb..a86af58 100644 --- a/ru/34.12-2015.texi +++ b/ru/34.12-2015.texi @@ -28,6 +28,7 @@ @url{https://eprint.iacr.org/2016/071.pdf, удалось узнать}. Однако нет доказательств что это негативно сказалось на криптографической стойкости алгоритма. +@item Документ стандарта также задаёт шифр @ref{ru2814789, Магма}. @end itemize @anchor{34122015Impl} diff --git a/ru/34.13-2015.texi b/ru/34.13-2015.texi index 16e9ef1..2a91d95 100644 --- a/ru/34.13-2015.texi +++ b/ru/34.13-2015.texi @@ -1,42 +1,24 @@ @node ru34132015 -@section Режимы шифрования блочных шифров +@section ГОСТ Р 34.13-2015 режимы шифрования -@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 Реализация MAC в этом стандарте идентична -@url{https://en.wikipedia.org/wiki/CMAC, CMAC} и его использование безопасно. +@item Реализация MAC идентична @url{https://en.wikipedia.org/wiki/CMAC, CMAC} +и его использование безопасно. @end itemize diff --git a/ru/index.texi b/ru/index.texi index 85516ec..62a89f0 100644 --- a/ru/index.texi +++ b/ru/index.texi @@ -24,7 +24,7 @@ @tab @itemize @item @ref{ru34122015, Кузнечик} (ГОСТ Р 34.12-2015) - @item @ref{ru2814789, Магма} (ГОСТ 28147-89) + @item @ref{ru2814789, ГОСТ 28147-89 (Магма)} (ГОСТ 28147-89) @end itemize @item @@ -69,14 +69,15 @@ @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 Вопросы и предложения вы можете отправить в @@ -84,10 +85,11 @@ либо автору сайта: @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 diff --git a/ru/meshing.texi b/ru/meshing.texi index 51053ed..90cce0e 100644 --- a/ru/meshing.texi +++ b/ru/meshing.texi @@ -3,7 +3,7 @@ Алгоритм запутывания ключа (key meshing) не имеет аналогов в Западных алгоритмах. Его суть: делать смену ключа каждый килобайт зашифрованных -данных. Применяется совместно с @ref{ru2814789, Магмой} и описан в +данных. Применяется совместно с @ref{ru2814789, ГОСТ 28147-89} и описан в @url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}. По заверению разработчиков из КриптоПро, он служит для усложнения проведения атак по побочным каналам. @@ -13,4 +13,4 @@ На практике он себя уже проявил: есть @url{https://sweet32.info/, Sweet32} атака на все 64-битные блочные шифры, которая при использовании алгоритма -запутывания ключа уже неприменима к Магме. +запутывания ключа уже не применима. -- 2.44.0