Библиотеки «Шифр+» v 2.1

Программный комплекс криптографических преобразований «Шифр+» v 2.1 реализован в виде набора библиотек криптографических функций для различных аппаратных платформ и операционных систем. Библиотеки являются средством криптографической защиты информации для решения следующих задач:
  • обеспечение конфиденциальности данных;
  • обеспечения целостности, авторства и неотказуемости;
  • выработки и распределения общего секрета между одним или несколькими участниками;
  • формирование псевдослучайной последовательности на основе аппаратного источника случайного начального заполнения;
  • различные вспомагательные преобразования.
Программный комплекс криптографических преобразований «Шифр+» v 2.1 имеет позитивное экспертное заключение Госспецсвязи Украины от 16.05.2017 №04/03/02-1674.
Ниже перечислено основные алгоритмы, которые вошли в библиотеку.

Алгоритмы симметричного шифрования

  • ГОСТ 28147-89 на основе ДСТУ ГОСТ 28147:2009 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования».
  • ГОСТ 28147-89 в режиме (wrap) шифрования ключей на основе Требований к форматам криптографических сообщений, утвержденных приказом Администрации Госспецсвязи України от 18.12.2012 №739.
  • DEA (DES) на основе ISO/IEC 18033-3:2010: Part 3: Block ciphers. Поддерживается ключ 64 бит.
  • TDEA (3DES) на основе ISO/IEC 18033-3:2010: Part 3: Block ciphers. Поддерживается ключ 192 бит.
  • AES на основе ISO/IEC 18033-3:2010: Part 3: Block ciphers. Поддерживается ключ 128, 192, 256 бит. Поддерживается возможность использовать набор инструкций AES-NI процессоров с архитектурой x86, x86-64, которые позволяют распараллеливать процедуру зашифровывания и расшифровывания для режимов ECB, CTR.
  • ДСТУ 7624:2014 «Информационные технологии. Криптографическая защита информации. Алгоритм симметричного блочного преобразования». Поддерживается ключ 128, 256, 512 бит.
Для всех блочных шифров, размер начального заполнения (вектора инициализации) определяется размером блока преобразований.
Информацию о поддерживаемых режимах каждым алгоритмом шифрования, следует смотреть в соответствующей документации на библиотеку.

Алгоритмы хеширования

  • SHA-1 на основе ISO/IEC 10118-3:2004: Part 3: Hash-functions. Поддерживается длина блока 160 бит.
  • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256 на основе ISO/IEC 10118-3:2004: Part 3: Hash-functions. Поддерживается длина блока 224, 256, 384, 512, 512/224, 512/256 бит.
  • ГОСТ 34.311-95 (256-бит) на основе ГОСТ 34.311-95. «Информационная технология. Криптографическая защита информации. Функция хэширования». Поддерживается длина 256 бит.
  • ДСТУ 7564:2014 «Информационные технологии. Криптографическая защита информации. Функции хеширования». Поддерживается длина блока 256, 384, 512 бит.
Для всех хеш-функций, размер вектора инициализации определяется размером блока преобразований. Необходимость установки начального заполнения:
  • ГОСТ 34.311-95 - используется.
  • ДСТУ 7564: 2014 - не используется.
  • SHA-1 - не используется.
  • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256, SHA-512/224 - не используется.
Необходимость установки начального заполнения:
  • KMAC - не используется.
  • HMAC - используется произвольной длины.
Информацию о поддерживаемых режимах каждым алгоритмом хеширования, следует смотреть в разделе касающемся этого алгоритма.

Алгоритмы электронной подписи

Для всех алгоритмов постановки и проверки электронной подписи, на вход подается хеш-образ подписываемого сообщения, причем размер образа не должен превышать двоичный размер личного ключа. Т.е. необходимо подбирать соответсвующую хеш-функцию.
  • ДСТУ 4145:2002 на основе ДСТУ 4145:2002. Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 521 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECDSA на основе IEEE P1363-2000, ISO/IEC 14888-3:2006: Part 3: Discrete logarithm based Mechanisms.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 521 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECGDSA на основе ISO/IEC 14888-3:2006: Part 3: Discrete logarithm based Mechanisms, ISO/IEC 15946: Part 2: Digital signatures.
  • RSA1 на основе IEEE P1363-2000, PKCS#1 v1.5, PKCS#1 v2.2, ISO/IEC 14888-2:2006: Part 2: Integer factorization based mechanisms.
    • Поддерживаются ключ двоичной длиной: 512, 1024, 1536, 2048, 3072, 4096, 7168, 8192, 15360, 16384 бит.
Следует обратить внимание, что на вход функции подписания или проверки электронной подписи следует передавать заранее закодированное сообщение с помощью функций:
  • Encoding Message with Appendix:
    • EMSA1.
    • EMSA2.
    • EMSA3.
    • EMSA4.
  • Encoding Message with Redundancy:
    • EMSR1.
    • EMSR3.
  • RSA2 на основе IEEE P1363-2000, x9.31, ISO/IEC 14888-2:2006: Part 2: Integer factorization based mechanisms.
    • Поддерживаются ключ двоичной длиной: 512, 1024, 1536, 2048, 3072, 4096, 7168, 8192, 15360, 16384 бит.
Следует обратить внимание, что на вход функции подписания или проверки электронной подписи следует передавать заранее закодированное сообщение с помощью функций:
  • Encoding Message with Appendix:
    • EMSA1.
    • EMSA2.
    • EMSA3.
    • EMSA4.
  • Encoding Message with Redundancy:
    • EMSR1.
    • EMSR3.
Размер закодированного сообщения определяется двоичной длиной личного ключа.

Алгоритмы выработки общего секрета

  • ECKAS-DH1 (static, dynamic) на основе IEEE P1363-2000, ДСТУ ISO/IEC 15946-3:2006, Приказа Госспецсвязи Украины от 18.12.2012, №739.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECKAS-DH2 на основе IEEE P1363-2000, ДСТУ ISO/IEC 15946-3:2006.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECKAS-DH2 (UA extention) на основе IEEE P1363-2000, ДСТУ ISO/IEC 15946-3:2006.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECKAS-MQV1 на основе IEEE P1363-2000.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECKAS-MQV1U (UA extention) на основе IEEE P1363-2000, ДСТУ ISO/IEC 15946-3:2006.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECKAS-MQV2U (UA extention) на основе IEEE P1363-2000, ДСТУ ISO/IEC 15946-3:2006.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.
  • ECKAS-EGU (UA extention) на основе ДСТУ ISO/IEC 15946-3:2006.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 167, 173, 179, 191, 233, 257, 307, 367, 431 бит. Согласно ДСТУ 4145:2002 и совместного приказа Министерства юстиции, Госспецсвязи 20.08.2012 №1236/5/453.
    • Поддерживается полиномиальный базис представления поля GF(2m), для m=163, 233, 283, 409, 571 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=192, 224, 256, 384, 512 бит. Согласно NIST FIPS 186-3.
    • Поддерживается поле GF(pm), для m=160, 192, 224, 256, 320, 384, 512 бит. Согласно RFC 5639.

Алгоритмы формирования криптографически стойкой псевдослучайной последовательности

  • Генератор на основе ДСТУ 4145:2002. В качестве параметра могут выступать различные блочные шифры в режиме простой замены (ECB):
    • ГОСТ 28147-89.
    • AES.
    • DEA/TDEA.
    • ДСТУ 7624:2014.
  • Генератор на основе ГОСТ 34.310-95. В качестве параметра могут выступать различные хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.

Алгоритмы направленного шифрования

  • RSA на основе IEEE P1363-2000 и PKCS#1 v2.2.
    • Поддерживаются ключ двоичной длиной 512, 1024, 1536, 2048, 3072, 4096, 7168, 8192, 15360, 16384 бит.
Следует обратить внимание, что на вход функции зашифровывания следует передавать заранее закодированное сообщение с помощью функций:
  • EME1.
  • EME2.
Размер закодированного сообщения определяется двоичной длиной личного ключа.

Алгоритмы функций выработки ключа

Для всех функций выработки ключа размер начального заполнения (вектора инициализации) определяется размером образа сообщения используемой хеш-функции. Размер порождающего параметра (соли), не ограничен сверху. Число итераций, не ограничено сверху.
  • KDF1 на основе ISO/IEC 18033-2:2006. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.
  • MGF1 на основе ISO/IEC 18033-2:2006. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.
  • KDF2 на основе ISO/IEC 18033-2:2006. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.
  • KDF3 на основе Требований к алгоритмам, форматам и интерфейсам реализуемых в средствах шифрования в надежных средствах электронной подписи, утвержденых приказом Министерства юстиции Украины, Администрации Госспецсвязи Украины от 27.12.2013 №2782/5/689, а также ISO/IEC 18033-2:2006. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.
  • PBKDF1 на основе PKCS#5 v 1.5 и PKCS#5 v 2.1. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.
  • PBKDF2 на основе Требований к алгоритмам, форматам и интерфейсам реализуемых в средствах шифрования в надежных средствах электронной подписи, утвержденых приказом Министерства юстиции Украины, Администрации Госспецсвязи Украины от 27.12.2013 №2782/5/689, а также PKCS#5 v 1.5 и PKCS#5 v 2.1. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • SHA-1.
    • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
    • ДСТУ 7564:2014.
  • PBKDFUAPfx на основе Требований к алгоритмам, форматам и интерфейсам реализуемых в средствах шифрования в надежных средствах электронной подписи, утвержденых приказом Министерства юстиции Украины, Администрации Госспецсвязи Украины от 27.12.2013 №2782/5/689, а также PKCS#5 v 1.5 и PKCS#5 v 2.1. В качестве параметра могут выступать хеш-функции:
    • ГОСТ 34.311-95.
    • ДСТУ 7564:2014.

Алгоритмы симметричного шифрования на основе пароля

  • PBES2 на основе Требований к алгоритмам, форматам и интерфейсам реализуемых в средствах шифрования в надежных средствах электронной подписи, утвержденых приказом Министерства юстиции Украины, Администрации Госспецсвязи Украины от 27.12.2013 №2782/5/689 и RFC 2898. Для всех функций шифрования на основе пароля, размер начального заполнения (вектора инициализации) составляет 8 байт. Размер порождающего параметра (соли) находится в диапазоне [8, 32] байта. Число итераций находится в диапазоне [1000, 10000]. В качестве параметра могут выступать различные PBKDF функции для вырабатывания секретного параметра на основе пароля:
    • PBKDF1 на основе:
      • ГОСТ 34.311-95.
      • SHA-1.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
      • ДСТУ 7564:2014.
    • PBKDF2 на основе:
      • ГОСТ 34.311-95.
      • SHA-1.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
      • ДСТУ 7564:2014.
    • PBKDF2UAPfx на основе:
      • ГОСТ 34.311-95.
      • SHA-1.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
      • ДСТУ 7564:2014.
а также для заданного блочного симметричного шифра:
  • ГОСТ 28147-89.
  • AES.
  • DEA/TDEA.
  • ДСТУ 7624:2014.

Алгоритмы выработки кода аутентификации на основе пароля

  • PBMAC1 на основе Требований к алгоритмам, форматам и интерфейсам реализуемых в средствах шифрования в надежных средствах электронной подписи, утвержденых приказом Министерства юстиции Украины, Администрации Госспецсвязи Украины от 27.12.2013 №2782/5/689 и RFC 2898. Для всех функций выработки MAC (иммитовставки) на основе пароля, размер начального заполнения (вектора инициализации) составляет 8 байт. Размер порождающего параметра (соли) находится в диапазоне [8, 64] байта. Число итераций находится в диапазоне [1000, 10000]. В качестве параметра могут выступать различные PBKDF функции для вырабатывания секретного параметра на основе пароля:
    • PBKDF1 на основе:
      • ГОСТ 34.311-95.
      • SHA-1.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
      • ДСТУ 7564:2014.
    • PBKDF2 на основе:
      • ГОСТ 34.311-95.
      • SHA-1.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
      • ДСТУ 7564:2014.
    • PBKDF2UAPfx на основе:
      • ГОСТ 34.311-95.
      • SHA-1.
      • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
      • ДСТУ 7564:2014.
а также для заданного блочного симметричного шифра:
  • ГОСТ 28147-89.
  • AES.
  • DEA/TDEA.
  • ДСТУ 7624:2014.

Алгоритмы кодирования данных для шифрования и подписания

Перечень алгоритмов кодирования данных для подписания электронной подписи на основе алгоритмов RSA1S и RSA2S:
  • EMSA1 на основе IEEE P1363-2000. Для постановки электронной подписи в виде приложения. Используется в схемах PKCS#1 v 1.5.
  • EMSA2 на основе IEEE P1363-2000 и X9.31. Для постановки электронной подписи в виде приложения. Используется в схемах X9.31.
  • EMSA3 на основе IEEE P1363-2000 и PKCS#1 v 1.5. Для постановки электронной подписи в виде приложения. Используется в схемах PKCS#1 v 1.5.
  • EMSA4 на основе IEEE P1363-2000 и PKCS#1 v 2.1. Для постановки электронной подписи в виде приложения. Используется в схемах PKCS#1 v 2.1.
  • EMSR1 на основе IEEE P1363-2000 и ISO/IEC 9796:1991. Для постановки электронной подписи с восстановлением сообщения. Используется в схемах ISO/IEC 9796:1991.
  • EMSR3 на основе IEEE P1363-2000 и PKCS#1 v 2.1. Для постановки электронной подписи с восстановлением сообщения. Используется в схемах PKCS#1 v 2.1.
Перечень алгоритмов кодирования данных для направленного шифрования на основе алгоритма RSAE:
  • EME1 на основе PKCS#1 v 1.5.
  • EME2 (EME2-OAEP) на основе PKCS#1 v 2.1.
В качестве параметра могут выступать хеш-функции:
  • ГОСТ 34.311-95.
  • SHA-1.
  • SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
  • ДСТУ 7564:2014.

Большие целые числа

Поддерживаются большие целые числа двоичной длиной 512, 1024, 1536, 2048, 3072, 4096, 7168, 8192, 15360, 16384 бит.
Над большими целыми числами могут выполняться следующие операции:
  • Сложение.
  • Вычитание.
  • Умножение.
  • Деление.
  • Приведение по модулю.
  • Деление с остатком и без.
  • Возведение в степень.
  • Поиск НОД и НОК.

Технические особенности библиотеки

  • Язык реализации: С++.
  • Библиотека обладает объектно-ориентированным интерфейсом.
  • Применяются раличные механизмы оптимизации:
    • С применением шаблонов.
    • С принудительным разворачиванием циклов.
    • С поддержкой расширения языка OpenMP v2.0+.
    • С поддержкой расширений процессора:
      • x86/x86-64: SSE2, SSE4, AVX, AES-NI, CMUL.

Поддерживаемые платформы

  • PC x86:
    • Microsoft Windows.
    • Linux.
    • FreeBSD.
  • PC x86-64:
    • Microsoft Windows.
    • Linux.
    • FreeBSD.
    • Apple macOS.
  • Mobile x86:
    • Linux.
    • Android OS.
  • Mobile x86-64:
    • Linux.
    • Android OS.
  • ARM v7x 32-bit:
    • Linux.
    • Android OS.
    • Apple iOS.
  • ARM v8x 32/64-bit:
    • Linux.
    • Android OS.
    • Apple iOS.

Предлагаемые типы библиотек

  • Для платформы Microsoft Windows:
    • динамическая блиотека (dll).
    • статическая библиотека (lib).
  • Для платформы Linux, FreeBSD, Android, Apple Mac OS X, Apple iOS:
    • динамическая блиотека (so, dylib).
    • статическая библиотека (a).

Поддерживаемые компиляторы

  • Microsoft Visual C++ 2012/2015/2017/2019.
  • GCC 4.8.2+.
  • Clang 3.6+.

Дополнительные материалы: