GostCrypto  0.2.0
Криптография, реализованная в соответствии с ГОСТ
 Указатель Структуры данных Файлы Функции Определения типов Перечисления Элементы перечислений Друзья Макросы
MainPage.md
См. документацию.
1 # Описание
2 
3 Данная библиотека реализует криптографические алгоритмы, определённые в следующих стандартах:
4 - ГОСТ Р 34.11-2012 Информационная технология. Криптографическая защита информации. Функция хэширования.
5 - ГОСТ 34.11-2018 Информационная технология. Криптографическая защита информации. Функция хэширования.
6 - ГОСТ Р 34.12-2015 Информационная технология. Криптографическая защита информации. Блочные шифры.
7 - ГОСТ 34.12-2018 Информационная технология. Криптографическая защита информации. Блочные шифры.
8 - ГОСТ Р 34.13-2015 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров.
9 - ГОСТ 34.13-2018 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров.
10 - ГОСТ Р 34.10-2012 Информационная технология. Процессы формирования и проверки электронной цифровой подписи.
11 - ГОСТ 34.10-2018 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
12 - Р 1323565.1.026–2019 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров, реализующие аутентифицирующее шифрование.
13 - Р 1323565.1.024-2019 Информационная технология. Криптографическая защита информации. Параметры эллиптических кривых для криптографических алгоритмов и протоколов.
14 
15 ## Основные положения и сокращения
16 
17 Для удобства пользователя, API данной библиотеки написано в едином стиле и придерживается следующей конвенции:
18 
19 1. Константы записаны заглавными буквами;
20 2. Функции записаны с маленькой буквы;
21 3. Типы данных записаны в горбатом регистре;
22 4. Типы данных реализованы с помощью массива заданного размера `*_SIZE`, который должен быть выровнен по `*_ALIGNMENT`;
23 5. Функции для работы с типом имеют префикс данного типа;
24 6. Запрещено работать с объектом типа с помощью функций другого типа, в том числе использовать ключи одной кривой в функциях другой кривой;
25 7. Каждый объект типа инициализируется своей функцией `*_new` и уничтожается `*_drop`.
26 
27 Алгоритмы и функции записываются в сокращенном виде в терминах Международной организаций по стандартизации:
28 
29 - ECB (Electronic Codebook) — Режим электронной кодовой книги
30 - CBC (Cipher Block Chaining) — Режим сцепления блоков шифротекста
31 - CFB (Cipher Feedback) — Режим обратной связи по шифротексту
32 - OFB (Output Feedback) — Режим обратной связи по выходу
33 - CTR (Counter mode) — Режим счётчика
34 - AEAD (Authenticated Encryption with Associated Data) — Аутентифицированное шифрование с присоединёнными данными
35 - MGM (Multilinear Galois Mode) — Режим, реализующий аутентифицированное шифрование (AEAD) с использование шифра с длиной блока 128 бит
36 - MAC (Message Authentication Code) — Имитовставка
37 - EC (Elliptic Curve) - Эллиптические кривые
38 - ECDH (Elliptic curve Diffie–Hellman) - Протокол Диффи — Хеллмана на эллиптических кривых
39 - ECDSA (Elliptic Curve Digital Signature Algorithm) — Алгоритм с открытым ключом для создания цифровой подписи
40 - VKO (Vyrabotka Klyuchej Obmena) - Алгоритм выработки общего ключа, ECDH
41 
42 ## Список поддерживаемых алгоритмов
43 
44 - Magma — Симметричный алгоритм блочного шифрования с размером блока 64 бит. Магма.
45 - Kuznyechik — Симметричный алгоритм блочного шифрования с размером блока 128 бит. Кузнечик.
46 
47 - MagmaCtr — Потоковый шифр с длиной блока 64 бит в режиме гаммирования.
48 - KuznyechikCtr — Потоковый шифр с длиной блока 128 бит в режиме гаммирования.
49 
50 - MagmaEcb — Блочный шифр с длиной блока 64 бит в режиме простой замены.
51 - KuznyechikEcb — Блочный шифр с длиной блока 128 бит в режиме простой замены.
52 
53 - Streebog256 — Функция хэширования с длиной хэш-кода 256 бит. Стрибог.
54 - Streebog512 — Функция хэширования с длиной хэш-кода 512 бит. Стрибог.
55 
56 - MagmaMac — Режим выработки имитовставки с использованием шифра с длиной блока 64 бит.
57 - KuznyechikMac — Режим выработки имитовставки с использованием шифра с длиной блока 128 бит.
58 
59 - MagmaCbc — Блочный шифр с длиной блока 64 бит в режиме простой замены с зацеплением с размером синхропосылки 8 байт.
60 - KuznyechikCbc — Блочный шифр с длиной блока 128 бит в режиме простой замены с зацеплением с размером синхропосылки 16 байт.
61 
62 - MagmaCfb — Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 8 байт.
63 - KuznyechikCfb — Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 16 байт.
64 
65 - MagmaOfb — Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 8 байт.
66 - KuznyechikOfb — Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 16 байт.
67 
68 - KuznyechikMgm — Блочный шифр с длиной блока 128 бит в режиме работы блочных шифров, реализующим аутентифицирующее шифрование с присоединёнными данными.
69 
70 - Ec256(ECDSA) — Алгоритм формирования и проверки электронной цифровой подписи с ключами электронной подписи длины 256 бит.
71 - Ec512(ECDSA) — Алгоритм формирования и проверки электронной цифровой подписи с ключами электронной подписи длины 512 бит.
72 
73 - Ec256(VKO:256) — Алгоритм формирования общего ключа длиной 256 бит с ключами электронной подписи длины 256 бит.
74 - Ec512(VKO:256) — Алгоритм формирования общего ключа длиной 256 бит с ключами электронной подписи длины 512 бит.
75 - Ec512(VKO:512) — Алгоритм формирования общего ключа длиной 512 бит с ключами электронной подписи длины 512 бит.
uint8_t KuznyechikCtr[KUZNYECHIK_CTR_SIZE]
Потоковый шифр с длиной блока 128 бит в режиме гаммирования.
Definition: gostcrypto.h:530
uint8_t MagmaOfb[MAGMA_OFB_SIZE]
Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по выходу с размером син...
Definition: gostcrypto.h:826
uint8_t MagmaEcb[MAGMA_ECB_SIZE]
Блочный шифр с длиной блока 64 бит в режиме простой замены.
Definition: gostcrypto.h:592
uintptr_t Ec256
Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей.
Definition: gostcrypto.h:633
uint8_t KuznyechikCfb[KUZNYECHIK_CFB_SIZE]
Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по шифртексту с размеро...
Definition: gostcrypto.h:448
uint8_t Streebog512[STREEBOG512_SIZE]
Функция хэширования с длиной хэш-кода 512 бит.
Definition: gostcrypto.h:744
uintptr_t Ec512
Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей.
Definition: gostcrypto.h:688
uint8_t MagmaCtr[MAGMA_CTR_SIZE]
Потоковый шифр с длиной блока 64 бит в режиме гаммирования.
Definition: gostcrypto.h:550
uint8_t MagmaMac[MAGMA_MAC_SIZE]
Режим выработки имитовставки с использованием шифра с длиной блока 64 бит.
Definition: gostcrypto.h:788
uint8_t Magma[MAGMA_SIZE]
Блочный шифр с длиной блока 64 бит.
Definition: gostcrypto.h:510
uint8_t Kuznyechik[KUZNYECHIK_SIZE]
Блочный шифр с длиной блока 128 бит.
Definition: gostcrypto.h:489
uint8_t MagmaCbc[MAGMA_CBC_SIZE]
Блочный шифр с длиной блока 64 бит в режиме простой замены с зацеплением с размером синхропосылки 8 б...
Definition: gostcrypto.h:428
uint8_t Streebog256[STREEBOG256_SIZE]
Функция хэширования с длиной хэш-кода 256 бит.
Definition: gostcrypto.h:723
uint8_t KuznyechikCbc[KUZNYECHIK_CBC_SIZE]
Блочный шифр с длиной блока 128 бит в режиме простой замены с зацеплением с размером синхропосылки 16...
Definition: gostcrypto.h:405
uint8_t KuznyechikEcb[KUZNYECHIK_ECB_SIZE]
Блочный шифр с длиной блока 128 бит в режиме простой замены.
Definition: gostcrypto.h:571
uint8_t KuznyechikMac[KUZNYECHIK_MAC_SIZE]
Режим выработки имитовставки с использованием шифра с длиной блока 128 бит.
Definition: gostcrypto.h:766
uint8_t KuznyechikMgm[KUZNYECHIK_MGM_SIZE]
Блочный шифр с длиной блока 128 бит в режиме работы блочных шифров, реализующим аутентифицирующее шиф...
Definition: gostcrypto.h:382
uint8_t KuznyechikOfb[KUZNYECHIK_OFB_SIZE]
Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по выходу с размером си...
Definition: gostcrypto.h:807
uint8_t MagmaCfb[MAGMA_CFB_SIZE]
Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по шифртексту с размером...
Definition: gostcrypto.h:468