Данная библиотека реализует криптографические алгоритмы, определённые в следующих стандартах:
- ГОСТ Р 34.11-2012 Информационная технология. Криптографическая защита информации. Функция хэширования.
- ГОСТ 34.11-2018 Информационная технология. Криптографическая защита информации. Функция хэширования.
- ГОСТ Р 34.12-2015 Информационная технология. Криптографическая защита информации. Блочные шифры.
- ГОСТ 34.12-2018 Информационная технология. Криптографическая защита информации. Блочные шифры.
- ГОСТ Р 34.13-2015 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров.
- ГОСТ 34.13-2018 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров.
- ГОСТ Р 34.10-2012 Информационная технология. Процессы формирования и проверки электронной цифровой подписи.
- ГОСТ 34.10-2018 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
- Р 1323565.1.026–2019 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров, реализующие аутентифицирующее шифрование.
- Р 1323565.1.024-2019 Информационная технология. Криптографическая защита информации. Параметры эллиптических кривых для криптографических алгоритмов и протоколов.
Основные положения и сокращения
Для удобства пользователя, API данной библиотеки написано в едином стиле и придерживается следующей конвенции:
- Константы записаны заглавными буквами;
- Функции записаны с маленькой буквы;
- Типы данных записаны в горбатом регистре;
- Типы данных реализованы с помощью массива заданного размера
*_SIZE
, который должен быть выровнен по *_ALIGNMENT
;
- Функции для работы с типом имеют префикс данного типа;
- Запрещено работать с объектом типа с помощью функций другого типа, в том числе использовать ключи одной кривой в функциях другой кривой;
- Каждый объект типа инициализируется своей функцией
*_new
и уничтожается *_drop
.
Алгоритмы и функции записываются в сокращенном виде в терминах Международной организаций по стандартизации:
- ECB (Electronic Codebook) — Режим электронной кодовой книги
- CBC (Cipher Block Chaining) — Режим сцепления блоков шифротекста
- CFB (Cipher Feedback) — Режим обратной связи по шифротексту
- OFB (Output Feedback) — Режим обратной связи по выходу
- CTR (Counter mode) — Режим счётчика
- AEAD (Authenticated Encryption with Associated Data) — Аутентифицированное шифрование с присоединёнными данными
- MGM (Multilinear Galois Mode) — Режим, реализующий аутентифицированное шифрование (AEAD) с использование шифра с длиной блока 128 бит
- MAC (Message Authentication Code) — Имитовставка
- EC (Elliptic Curve) - Эллиптические кривые
- ECDH (Elliptic curve Diffie–Hellman) - Протокол Диффи — Хеллмана на эллиптических кривых
- ECDSA (Elliptic Curve Digital Signature Algorithm) — Алгоритм с открытым ключом для создания цифровой подписи
- VKO (Vyrabotka Klyuchej Obmena) - Алгоритм выработки общего ключа, ECDH
Список поддерживаемых алгоритмов
- Magma — Симметричный алгоритм блочного шифрования с размером блока 64 бит. Магма.
- Kuznyechik — Симметричный алгоритм блочного шифрования с размером блока 128 бит. Кузнечик.
- MagmaCtr — Потоковый шифр с длиной блока 64 бит в режиме гаммирования.
- KuznyechikCtr — Потоковый шифр с длиной блока 128 бит в режиме гаммирования.
- MagmaEcb — Блочный шифр с длиной блока 64 бит в режиме простой замены.
- KuznyechikEcb — Блочный шифр с длиной блока 128 бит в режиме простой замены.
- Streebog256 — Функция хэширования с длиной хэш-кода 256 бит. Стрибог.
- Streebog512 — Функция хэширования с длиной хэш-кода 512 бит. Стрибог.
- MagmaMac — Режим выработки имитовставки с использованием шифра с длиной блока 64 бит.
- KuznyechikMac — Режим выработки имитовставки с использованием шифра с длиной блока 128 бит.
- MagmaCbc — Блочный шифр с длиной блока 64 бит в режиме простой замены с зацеплением с размером синхропосылки 8 байт.
- KuznyechikCbc — Блочный шифр с длиной блока 128 бит в режиме простой замены с зацеплением с размером синхропосылки 16 байт.
- MagmaCfb — Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 8 байт.
- KuznyechikCfb — Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 16 байт.
- MagmaOfb — Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 8 байт.
- KuznyechikOfb — Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 16 байт.
- KuznyechikMgm — Блочный шифр с длиной блока 128 бит в режиме работы блочных шифров, реализующим аутентифицирующее шифрование с присоединёнными данными.
- Ec256(ECDSA) — Алгоритм формирования и проверки электронной цифровой подписи с ключами электронной подписи длины 256 бит.
- Ec512(ECDSA) — Алгоритм формирования и проверки электронной цифровой подписи с ключами электронной подписи длины 512 бит.
- Ec256(VKO:256) — Алгоритм формирования общего ключа длиной 256 бит с ключами электронной подписи длины 256 бит.
- Ec512(VKO:256) — Алгоритм формирования общего ключа длиной 256 бит с ключами электронной подписи длины 512 бит.
- Ec512(VKO:512) — Алгоритм формирования общего ключа длиной 512 бит с ключами электронной подписи длины 512 бит.