Розширення для PHP 7

Програмний комплекс криптографічних перетворень «Шифр+» v 2.1 реалізований у вигляді набору бібліотек криптографічних функцій для різних апаратних платформ та операційних систем. Часто виникає необхідність використовувати криптографічні перетворення із скриптових мов, до яких відноситься і PHP. Напряму виклик методів бібліотеки «Шифр+» v 2.1 з 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.