GostCrypto  0.2.0
Криптография, реализованная в соответствии с ГОСТ
 Указатель Структуры данных Файлы Функции Определения типов Перечисления Элементы перечислений Друзья Макросы
GostCrypto Документация

Данная библиотека реализует криптографические алгоритмы, определённые в следующих стандартах:

  • ГОСТ Р 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 данной библиотеки написано в едином стиле и придерживается следующей конвенции:

  1. Константы записаны заглавными буквами;
  2. Функции записаны с маленькой буквы;
  3. Типы данных записаны в горбатом регистре;
  4. Типы данных реализованы с помощью массива заданного размера *_SIZE, который должен быть выровнен по *_ALIGNMENT;
  5. Функции для работы с типом имеют префикс данного типа;
  6. Запрещено работать с объектом типа с помощью функций другого типа, в том числе использовать ключи одной кривой в функциях другой кривой;
  7. Каждый объект типа инициализируется своей функцией *_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 бит.