Расширение для PHP 7

Программный комплекс криптографических преобразований «Шифр+» v 2.1 реализован в виде набора библиотек криптографических функций для различных аппаратных платформ и операционных систем. Часто возникает необходимость использовать криптографические преобразования из скриптовых языков, к которым относится и PHP. Напрямую вызов методов библиотеки «Шифр+» из PHP 7 невозможен, для этого следует воспользоваться механизмом расширений для PHP 7.
Расширение является средством криптографической защиты информации для решения в PHP 7 следующих задач:
  • обеспечение конфиденциальности данных;
  • обеспечения целостности, авторства и неотказуемости;
  • формирование псевдослучайной последовательности на основе аппаратного источника случайного начального заполнения;
  • различные вспомагательные преобразования.​

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

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

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

  • Генератор на основе ДСТУ 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.

Комплект поставки

В комплект поставки расширения для PHP 7 входит:
  • Подключаемый файл CiExt.php в проект PHP
  • Динамическая библиотека расширения libCiExt для PHP 7
  • Динамическая библиотека libCCPPLib криптографических преобразований «Шифр+» v 2.1
  • Примеры использования расширения в PHP 7
  • Документация к исходному коду C++ библиотеки расширения libCiExt для PHP 7

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

  • Язык реализации: С++.
  • Библиотека обладает объектно-ориентированным интерфейсом.
  • Применяются раличные механизмы оптимизации:
    • С применением шаблонов.
    • С принудительным разворачиванием циклов.
    • С поддержкой расширения языка OpenMP v 2.0+.
    • С поддержкой расширений процессора:
      • x86/x86-64: SSE2, SSE4, AVX, AES-NI, CMUL.
Поддерживаются платформы:
  • PC x86:
    • Linux.
    • FreeBSD.
  • PC x86-64:
    • Linux.
    • FreeBSD.
    • Apple macOS.
  • Mobile x86:
    • Linux.
    • Android OS.
  • Mobile x86-64:
    • Linux.
  • ARM v7x 32-bit:
    • Linux.
  • ARM v8x 32/64-bit:
    • Linux.