]> Cypherpunks.ru repositories - gost-www.git/commitdiff
Initial commit
authorSergey Matveev <stargrave@stargrave.org>
Fri, 21 Oct 2016 21:04:26 +0000 (00:04 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 21 Oct 2016 21:14:38 +0000 (00:14 +0300)
21 files changed:
Makefile [new file with mode: 0644]
en/28147-89.texi [new file with mode: 0644]
en/34.10.texi [new file with mode: 0644]
en/34.11-2015.texi [new file with mode: 0644]
en/34.11-94.texi [new file with mode: 0644]
en/34.12-2015.texi [new file with mode: 0644]
en/34.13-2015.texi [new file with mode: 0644]
en/index.texi [new file with mode: 0644]
en/meshing.texi [new file with mode: 0644]
en/vko.texi [new file with mode: 0644]
index.texi [new file with mode: 0644]
ru/28147-89.texi [new file with mode: 0644]
ru/34.10.texi [new file with mode: 0644]
ru/34.11-2015.texi [new file with mode: 0644]
ru/34.11-94.texi [new file with mode: 0644]
ru/34.12-2015.texi [new file with mode: 0644]
ru/34.13-2015.texi [new file with mode: 0644]
ru/index.texi [new file with mode: 0644]
ru/meshing.texi [new file with mode: 0644]
ru/vko.texi [new file with mode: 0644]
style.css [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..6d08aa4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,18 @@
+all: gost.html
+
+MAKEINFO ?= makeinfo
+
+CSS != cat style.css
+
+.PHONY: gost.html
+
+gost.html:
+       rm -f gost.html/*.html
+       $(MAKEINFO) --html \
+               --set-customization-variable CSS_LINES='$(CSS)' \
+               --set-customization-variable SHOW_TITLE=0 \
+               --set-customization-variable DATE_IN_HEADER=1 \
+               --set-customization-variable TOP_NODE_UP_URL=index.html \
+               --set-customization-variable CLOSE_QUOTE_SYMBOL=\" \
+               --set-customization-variable OPEN_QUOTE_SYMBOL=\" \
+               -o gost.html index.texi
diff --git a/en/28147-89.texi b/en/28147-89.texi
new file mode 100644 (file)
index 0000000..66d5ba9
--- /dev/null
@@ -0,0 +1,40 @@
+@node en2814789
+@section Magma (GOST 28147-89)
+
+@table @asis
+@item Algorithm type
+    Block cipher
+@item Blocksize
+    64 bit
+@item Keysize
+    256 bit
+@item Structure
+    Feistel network
+@item Rounds
+    32
+@item RFC
+    @url{https://tools.ietf.org/html/rfc5830.html, 5830}
+@item Best attack
+    2^248 with 2^64 open-enciphered text pairs.
+    Highly depends on used S-boxes
+@end table
+
+@strong{Features}:
+@itemize
+@item Was developed by KGB in USSR
+@item Standard does not define any S-boxes:
+    @itemize
+    @item There could be backdoors in S-box, if it was defined and fixed
+    by the standard.
+    @item Secret/private S-box could be used as an additional keying
+    information.
+    @item You can not determine cipher's strength without knowing the
+    exact S-box. Self-made S-boxes can highly affect overall cipher's
+    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.
+@end itemize
diff --git a/en/34.10.texi b/en/34.10.texi
new file mode 100644 (file)
index 0000000..f13bf9d
--- /dev/null
@@ -0,0 +1,25 @@
+@node en3410
+@section GOST R 34.10-2001/2012
+
+@table @asis
+@item Algorithm type
+    Digital signature, based on elliptic curve
+@item Elliptic curve form
+    Weirstrass
+@item Used hash
+    @itemize
+    @item @ref{en341194, GOST R 34.11-94} fo GOST R 34.10-2001
+    @item @ref{en34112015, Streebog} fo GOST R 34.10-2012
+    @end itemize
+@item RFC
+    @itemize
+    @item @url{https://tools.ietf.org/html/rfc5832.html, RFC 5832}: GOST R 34.10-2001
+    @item @url{https://tools.ietf.org/html/rfc7091.html, RFC 7091}: GOST R 34.10-2012
+    @end itemize
+@end table
+
+@strong{Features}:
+@itemize
+@item Standard does not define fixed elliptic curve parameters, so you
+have to specify/send them by yourself.
+@end itemize
diff --git a/en/34.11-2015.texi b/en/34.11-2015.texi
new file mode 100644 (file)
index 0000000..f399cc0
--- /dev/null
@@ -0,0 +1,30 @@
+@node en34112015
+@section Streebog (GOST R 34.11-2015)
+
+@table @asis
+@item Algorithm type
+    Hash function
+@item Digest size
+    256 and 512 bit
+@item Blocksize
+    512 bit
+@item Structure
+    Merkle-Damgård
+@item Rounds
+    12
+@item RFC
+    @url{https://tools.ietf.org/html/rfc6986.html, 6986}
+@item Best attack
+    @itemize
+    @item Collisions: complexity 2^176, 2^128 memory for 9.5 rounds
+    @item Preimage: complexity 2^266, 2^259 data
+    @end itemize
+@end table
+
+@strong{Features}:
+@itemize
+@item Replaces obsolete @ref{en341194, GOST R 34.11-94}.
+@item End hash computation example of standard's text contains string
+from @url{https://en.wikipedia.org/wiki/The_Tale_of_Igor%27s_Campaign,
+"The Tale of Igor's Campaign"}.
+@end itemize
diff --git a/en/34.11-94.texi b/en/34.11-94.texi
new file mode 100644 (file)
index 0000000..107594c
--- /dev/null
@@ -0,0 +1,31 @@
+@node en341194
+@section GOST R 34.11-94
+
+@table @asis
+@item Algorithm type
+    Hash function
+@item Digest size
+    256 bit
+@item Blocksize
+    256 bit
+@item Structure
+    Merkle-Damgård
+@item Rounds
+    32
+@item RFC
+    @url{https://tools.ietf.org/html/rfc5831.html, 5831}
+@item Best attack
+    @itemize
+    @item Collisions: complexity 2^105
+    @item Preimage: complexity 2^192
+    @end itemize
+@end table
+
+@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 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.
+@end itemize
diff --git a/en/34.12-2015.texi b/en/34.12-2015.texi
new file mode 100644 (file)
index 0000000..e368767
--- /dev/null
@@ -0,0 +1,27 @@
+@node en34122015
+@section Kuznechik (GOST R 34.12-2015)
+
+@table @asis
+@item Algorithm type
+    Block cipher
+@item Blocksize
+    128 bit
+@item Keysize
+    256 bit
+@item Structure
+    Substitution-permutation network (SPN)
+@item Rounds
+    10
+@item RFC
+    @url{https://tools.ietf.org/html/rfc7801.html, 7801}
+@item Best attack
+    Complexity 2^140.3, 2^153.3 memory, 2^113 data for 5 rounds
+@end table
+
+@strong{Features}:
+@itemize
+@item Feistel network is used during key schedule.
+@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.
+@end itemize
diff --git a/en/34.13-2015.texi b/en/34.13-2015.texi
new file mode 100644 (file)
index 0000000..83cc9cb
--- /dev/null
@@ -0,0 +1,42 @@
+@node en34132015
+@section Cipher modes of operation
+
+@ref{en2814789, GOST 28147-89} standard defines the following modes of
+operation for Magma cipher:
+@itemize
+    @item ECB
+    @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
+
+@strong{Features}:
+@itemize
+@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.
+@end itemize
diff --git a/en/index.texi b/en/index.texi
new file mode 100644 (file)
index 0000000..4757b44
--- /dev/null
@@ -0,0 +1,87 @@
+@node English
+@unnumbered GOST cryptography
+
+This site is dedicated to Russian Federation's cryptographic algorithms
+and is intended to popularize them. Many people even do not know about
+their existence.
+
+Why those algorithms could be interesting and be used as an alternative
+to the western ones? Because they obviously are not worse, in some
+places are much better and have high serious security margin.
+
+Information here is aimed for software and protocol developers.
+
+@multitable @columnfractions 0.5 0.5
+@headitem Western algorithm @tab Russian analogue
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/Advanced_Encryption_Standard, AES}
+    @item @url{https://en.wikipedia.org/wiki/3DES, 3DES}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{en34122015, Kuznechik} (GOST R 34.12-2015)
+    @item @ref{en2814789, Magma} (GOST 28147-89)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/SHA2, SHA2-256}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{en34112015, Streebog} (GOST R 34.11-2015)
+    @item @ref{en341194, GOST R 34.11-94} (obsolete)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/SHA2, SHA2-512}
+    @item @url{https://en.wikipedia.org/wiki/SHA3, SHA3}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{en34112015, Streebog} (GOST R 34.11-2015)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/ECDSA, ECDSA}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{en3410, GOST R 34.10-2012}
+    @item @ref{en3410, GOST R 34.10-2001} (obsolete)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/ECDH, ECDH}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{enVKO, VKO GOST R 34.10-2001}
+    @end itemize
+
+@end multitable
+
+@menu
+* Kuznechik (block cipher): en34122015.
+* Streebog (hash function): en34112015.
+* 34.10 (digital signature): en3410.
+* VKO (common key derivation): enVKO.
+* Magma (block cipher): en2814789.
+* Cipher modes of operation: en34132015.
+* Key meshing: enMeshing.
+* 34.11-94 (hash function): en341194.
+@end menu
+
+@include en/34.12-2015.texi
+@include en/34.11-2015.texi
+@include en/34.10.texi
+@include en/vko.texi
+@include en/28147-89.texi
+@include en/34.13-2015.texi
+@include en/meshing.texi
+@include en/34.11-94.texi
diff --git a/en/meshing.texi b/en/meshing.texi
new file mode 100644 (file)
index 0000000..6bf3c5f
--- /dev/null
@@ -0,0 +1,15 @@
+@node enMeshing
+@section Key meshing
+
+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
+@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}. CryptoPro
+developers tell that it is intended to resist side-channel attacks.
+
+Implementation is rather simple and uses two crypt/decrypt operations
+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.
diff --git a/en/vko.texi b/en/vko.texi
new file mode 100644 (file)
index 0000000..715aa4d
--- /dev/null
@@ -0,0 +1,19 @@
+@node enVKO
+@section VKO 34.10-2001
+
+@table @asis
+@item Algorithm type
+    Key-agreement
+@item Keysize
+    256 bit
+@item RFC
+    @url{https://tools.ietf.org/html/rfc4357.html, 4357}
+@end table
+
+@strong{Features}:
+@itemize
+@item This algorithm multiplies own private key, remote public key and
+hashes the result, producing common key. Basically it is Diffie-Hellman
+key-agreement based on elliptic curves.
+@item Additional user key material (UKM) is specified at inputs.
+@end itemize
diff --git a/index.texi b/index.texi
new file mode 100644 (file)
index 0000000..ed87cdd
--- /dev/null
@@ -0,0 +1,21 @@
+\input texinfo
+@documentlanguage ru
+@documentencoding UTF-8
+@settitle GOST cryptography
+
+@copying
+This website contents are distributed under @url{http://creativecommons.org/licenses/by-sa/4.0/, CC BY-SA 4.0 International} licence.
+@end copying
+
+@node Top
+@top GOST cryptography
+
+@menu
+* Русскоязычная версия: Russian.
+* English version: English.
+@end menu
+
+@include ru/index.texi
+@include en/index.texi
+
+@bye
diff --git a/ru/28147-89.texi b/ru/28147-89.texi
new file mode 100644 (file)
index 0000000..c91e026
--- /dev/null
@@ -0,0 +1,41 @@
+@node ru2814789
+@section Магма (ГОСТ 28147-89)
+
+@table @asis
+@item Что за алгоритм
+    Блочный шифр
+@item Размер блока
+    64 бит
+@item Размер ключа
+    256 бит
+@item Структура
+    Сеть Фейстеля
+@item Число раундов
+    32
+@item RFC
+    @url{https://tools.ietf.org/html/rfc5830.html, 5830}
+@item Лучшая атака
+    2^248 имея 2^64 пар открытый-зашифрованный текст.
+    Всё очень сильно зависит от используемых таблиц замен
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Разработан ещё в СССР, 8-ым управлением КГБ.
+@item Стандарт не фиксирует значения таблиц замен (S-box).
+    @itemize
+    @item Если бы S-box был фиксирован в стандарте, то в нём могли бы
+    быть "лазейки".
+    @item Секретный S-box можно использовать как дополнительную ключевую
+    информацию.
+    @item Это не позволяет определить стойкость алгоритма не зная
+    таблиц замены. Самостоятельный выбор может существенно повлиять на
+    криптостойкость алгоритма.
+    @item Реализации алгоритма, использующие разные таблицы, не
+    совместимы между собой.
+    @end itemize
+@item Название "Магма" введено в стандарте @ref{ru34122015, Кузнечика},
+который также описывает и этот блочный шифр.
+@item Из-за маленького размера блока необходимо быть аккуратным при его
+использовании и часто менять ключи.
+@end itemize
diff --git a/ru/34.10.texi b/ru/34.10.texi
new file mode 100644 (file)
index 0000000..79fd8ff
--- /dev/null
@@ -0,0 +1,25 @@
+@node ru3410
+@section ГОСТ Р 34.10-2001/2012
+
+@table @asis
+@item Что за алгоритм
+    Цифровая подпись, на основе эллиптических кривых
+@item Форма эллиптической кривой
+    Вайерштрасса (Weirstrass)
+@item Используемый хэш
+    @itemize
+    @item @ref{ru341194, ГОСТ Р 34.11-94} для ГОСТ Р 34.10-2001
+    @item @ref{ru34112015, Стрибог} для ГОСТ Р 34.10-2012
+    @end itemize
+@item RFC
+    @itemize
+    @item @url{https://tools.ietf.org/html/rfc5832.html, RFC 5832}: ГОСТ Р 34.10-2001
+    @item @url{https://tools.ietf.org/html/rfc7091.html, RFC 7091}: ГОСТ Р 34.10-2012
+    @end itemize
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Стандарт не задаёт фиксированные параметры эллиптической кривой,
+поэтому их надо указывать/передавать при использовании.
+@end itemize
diff --git a/ru/34.11-2015.texi b/ru/34.11-2015.texi
new file mode 100644 (file)
index 0000000..26861fc
--- /dev/null
@@ -0,0 +1,30 @@
+@node ru34112015
+@section Стрибог (ГОСТ Р 34.11-2015)
+
+@table @asis
+@item Что за алгоритм
+    Хэш-функция
+@item Размер хэша
+    256 и 512 бит
+@item Размер блока
+    512 бит
+@item Структура
+    Меркла-Дамгарда
+@item Число раундов
+    12
+@item RFC
+    @url{https://tools.ietf.org/html/rfc6986.html, 6986}
+@item Лучшая атака
+    @itemize
+    @item Коллизии: На 9.5 раундов сложность 2^176, 2^128 памяти
+    @item Прообраз (preimage): сложность 2^266, 2^259 данных
+    @end itemize
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Заменил устаревший @ref{ru341194, ГОСТ Р 34.11-94}.
+@item В конце текста стандарта в качестве примера вычисления хэша
+приводится строка из "Слово о полку Игореве": @emph{Се ветри, Стрибожи
+внуци, веютъ с моря стрелами на храбрыя плъкы Игоревы}.
+@end itemize
diff --git a/ru/34.11-94.texi b/ru/34.11-94.texi
new file mode 100644 (file)
index 0000000..fa7ce33
--- /dev/null
@@ -0,0 +1,32 @@
+@node ru341194
+@section ГОСТ Р 34.11-94
+
+@table @asis
+@item Что за алгоритм
+    Хэш-функция
+@item Размер хэша
+    256 бит
+@item Размер блока
+    256 бит
+@item Структура
+    Меркла-Дамгарда
+@item Число раундов
+    32
+@item RFC
+    @url{https://tools.ietf.org/html/rfc5831.html, 5831}
+@item Лучшая атака
+    @itemize
+    @item Коллизии: сложность 2^105
+    @item Прообраз (preimage): сложность 2^192
+    @end itemize
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Внутри себя использует блочный шифр @ref{ru2814789, Магма}.
+@item Для этой хэш-функции необходимо задавать используемые таблицы
+замены Магмы.
+@item Стандарт не определяет в каком виде должен быть представлен
+результат -- поэтому есть несовместимые между собой реализации в который
+хэш представлен в виде little-endian или big-endian значения.
+@end itemize
diff --git a/ru/34.12-2015.texi b/ru/34.12-2015.texi
new file mode 100644 (file)
index 0000000..a9248e4
--- /dev/null
@@ -0,0 +1,29 @@
+@node ru34122015
+@section Кузнечик (ГОСТ Р 34.12-2015)
+
+@table @asis
+@item Что за алгоритм
+    Блочный шифр
+@item Размер блока
+    128 бит
+@item Размер ключа
+    256 бит
+@item Структура
+    Подстановочно-перестановочная сеть (SPN)
+@item Число раундов
+    10
+@item RFC
+    @url{https://tools.ietf.org/html/rfc7801.html, 7801}
+@item Лучшая атака
+    На 5 раундов сложность 2^140.3, 2^153.3 памяти, 2^113 данных
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Развёртывание ключа (key schedule) использует сеть Фейстеля.
+@item Заданные узлы замены (S-box) не были созданы псевдослучайным
+образом, а использовали алгоритм который
+@url{https://eprint.iacr.org/2016/071.pdf, удалось узнать}. Однако нет
+доказательств что это негативно сказалось на криптографической стойкости
+алгоритма.
+@end itemize
diff --git a/ru/34.13-2015.texi b/ru/34.13-2015.texi
new file mode 100644 (file)
index 0000000..16e9ef1
--- /dev/null
@@ -0,0 +1,42 @@
+@node ru34132015
+@section Режимы шифрования блочных шифров
+
+@ref{ru2814789, ГОСТ 28147-89} определял следующие режимы шифрования и
+аутентификации для блочного шифра Магма:
+@itemize
+    @item ECB (простая замена)
+    @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
+
+@strong{Особенности}:
+@itemize
+@item Реализация режима счётчика стандартна.
+@item Реализация MAC в этом стандарте идентична
+@url{https://en.wikipedia.org/wiki/CMAC, CMAC} и его использование безопасно.
+@end itemize
diff --git a/ru/index.texi b/ru/index.texi
new file mode 100644 (file)
index 0000000..1f2fbc2
--- /dev/null
@@ -0,0 +1,89 @@
+@node Russian
+@unnumbered ГОСТ криптография
+
+Этот сайт посвящён криптографическим алгоритмам Российской Федерации и
+его целью является их популяризация на фоне всеобщего мирового засилья
+алгоритмами стран Запада. Многие люди даже не знают о существовании
+отечественной криптографии.
+
+Почему они могут заинтересовать людей и быть рассмотрены как достойная
+альтернатива зарубежным алгоритмам? Потому-что они явно не хуже, местами
+гораздо лучше, имеют высокий серьёзный порог безопасности.
+
+Информация рассчитана, в первую очередь, на разработчиков протоколов и
+программного обеспечения.
+
+@multitable @columnfractions 0.5 0.5
+@headitem Западный алгоритм @tab Российский аналог
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/Advanced_Encryption_Standard, AES}
+    @item @url{https://en.wikipedia.org/wiki/3DES, 3DES}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{ru34122015, Кузнечик} (ГОСТ Р 34.12-2015)
+    @item @ref{ru2814789, Магма} (ГОСТ 28147-89)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/SHA2, SHA2-256}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{ru34112015, Стрибог} (ГОСТ Р 34.11-2015)
+    @item @ref{ru341194, ГОСТ Р 34.11-94} (устаревший)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/SHA2, SHA2-512}
+    @item @url{https://en.wikipedia.org/wiki/SHA3, SHA3}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{ru34112015, Стрибог} (ГОСТ Р 34.11-2015)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/ECDSA, ECDSA}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{ru3410, ГОСТ Р 34.10-2012}
+    @item @ref{ru3410, ГОСТ Р 34.10-2001} (устаревший)
+    @end itemize
+
+@item
+    @itemize
+    @item @url{https://en.wikipedia.org/wiki/ECDH, ECDH}
+    @end itemize
+    @tab
+    @itemize
+    @item @ref{ruVKO, ВКО ГОСТ Р 34.10-2001}
+    @end itemize
+
+@end multitable
+
+@menu
+* Кузнечик (блочный шифр): ru34122015.
+* Стрибог (хэш-функция): ru34112015.
+* 34.10 (ЭЦП): ru3410.
+* ВКО (согласование ключей): ruVKO.
+* Магма (блочный шифр): ru2814789.
+* Режимы шифрования: ru34132015.
+* Key meshing (запутывание ключа): ruMeshing.
+* 34.11-94 (хэш-функция): ru341194.
+@end menu
+
+@include ru/34.12-2015.texi
+@include ru/34.11-2015.texi
+@include ru/34.10.texi
+@include ru/vko.texi
+@include ru/28147-89.texi
+@include ru/34.13-2015.texi
+@include ru/meshing.texi
+@include ru/34.11-94.texi
diff --git a/ru/meshing.texi b/ru/meshing.texi
new file mode 100644 (file)
index 0000000..51053ed
--- /dev/null
@@ -0,0 +1,16 @@
+@node ruMeshing
+@section Запутывание ключа (key meshing)
+
+Алгоритм запутывания ключа (key meshing) не имеет аналогов в Западных
+алгоритмах. Его суть: делать смену ключа каждый килобайт зашифрованных
+данных. Применяется совместно с @ref{ru2814789, Магмой} и описан в
+@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}. По заверению
+разработчиков из КриптоПро, он служит для усложнения проведения атак по
+побочным каналам.
+
+Реализация проста и заключается в применении пары операций
+шифрования/дешифрования над ключом и вектором инициализации.
+
+На практике он себя уже проявил: есть @url{https://sweet32.info/, Sweet32}
+атака на все 64-битные блочные шифры, которая при использовании алгоритма
+запутывания ключа уже неприменима к Магме.
diff --git a/ru/vko.texi b/ru/vko.texi
new file mode 100644 (file)
index 0000000..a1025b7
--- /dev/null
@@ -0,0 +1,21 @@
+@node ruVKO
+@section ВКО (VKO) 34.10-2001
+
+@table @asis
+@item Что за алгоритм
+    Согласование ключей (выработка общего ключа)
+@item Размер ключа
+    256 бит
+@item RFC
+    @url{https://tools.ietf.org/html/rfc4357.html, 4357}
+@end table
+
+@strong{Особенности}:
+@itemize
+@item Этот алгоритм перемножает собственный приватный ключ, публичный
+ключ противоположной стороны и хэширует результат, получая общий ключ.
+Фактически является функцией согласования ключей Диффи-Хельмана на
+основе эллиптических кривых.
+@item Дополнительно на вход подаётся пользовательский ключевой материал
+UKM (User Key Material).
+@end itemize
diff --git a/style.css b/style.css
new file mode 100644 (file)
index 0000000..dc94af9
--- /dev/null
+++ b/style.css
@@ -0,0 +1,10 @@
+<style type="text/css"><!--
+body {
+    margin: auto;
+    max-width: 800px;
+    background-color: #AEBECE;
+}
+h1, h2, h3, h4 { text-align: center }
+h1, h2, h3, h4, strong { color: #900090 }
+pre { background-color: #CCCCCC }
+--></style>