Программный комплекс криптографических преобразований «Шифр+» 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 - не используется.
Необходимость установки начального заполнения:
Информацию о поддерживаемых режимах каждым алгоритмом хеширования, следует смотреть в разделе касающемся алгоритма.
Алгоритмы электронной подписи
Для всех алгоритмов постановки и проверки электронной подписи, на вход подается хеш-образ подписываемого сообщения, причем размер образа не должен превышать двоичный размер личного ключа. Т.е. необходимо подбирать соответствующую хеш-функцию.
-
ДСТУ 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 бит.
Следует обратить внимание, что на вход функции подписания или проверки электронной подписи следует передавать заранее закодированное сообщение с помощью функций:
Следует обратить внимание, что на вход функции подписания или проверки электронной подписи следует передавать заранее закодированное сообщение с помощью функций:
Размер закодированного сообщения определяется двоичной длиной личного ключа.
Алгоритмы формирования криптографически стойкой псевдослучайной последовательности
-
Генератор на основе ДСТУ 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
Технические особенности библиотеки
Поддерживаются платформы:
-
PC x86:
-
PC x86-64:
-
Linux.
-
FreeBSD.
-
Apple macOS.
-
Mobile x86:
-
Mobile x86-64:
-
ARM v7x 32-bit:
-
ARM v8x 32/64-bit: