Бібліотеки «Шифр+» 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 v 1.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.
Перелік алгоритмів кодування даних для направленого шифрування на основі алгоритму RSA:
  • 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+.

Додаткові матеріали: