Skip to content

Реализация алгоритма ЭЦП Шиповник на базе хэш-функции SHA512

License

Notifications You must be signed in to change notification settings

ruhakachmaz/shipovnik_tc26_sha512

 
 

Repository files navigation

Shipovnik

«Шиповник» - схема электронной подписи, построенная методом применения преобразования Фиата-Шамира к протоколу идентификации Штерна (с нулевым разглашением)

Данный репозиторий содержит открытую реализацию этого алгоритма на языке Си от компании QApp, разработанную совместно с авторами алгоритма - компанией Криптонит - в сотрудничестве в рамках ТК26.

В рамках форка в качестве хэш-функции используется SHA512

Сборка проекта

Для сборки требуется cmake версии 3.12 или более новой. Поддерживаются следующие опции:

  • GOST_OPTIMIZATION. С помощью этой опции можно задать уровень оптимизации хэша GOST 34.11-2012, используемого в алгоритме. Различные уровни оптимизаций могут поддерживаться не на всех платформах. Не имеет смысла указывать при текущей реализации на базе SHA512.
    • 0 нет оптимизации
    • 1 инструкции MMX
    • 2 инструкции SSE2
    • 3 инструкции SSE4.1
  • ENTROPY_SOURCE задает источник энтропии для генерации ключевых пар и подписей. Значение по умолчанию - /dev/urandom. Для генерации тестов с известным ответом (KAT) можно задать путь к файлу с детерминированными данными, например /dev/zero.

Пример сборки проекта:

$ mkdir build
$ cd build
$ cmake -DENTROPY_SOURCE=/dev/zero ..
$ make

Использование проекта

Проект компилируется в библиотеку, которую можно использовать в сторонних решениях. Для этого нужно либо добавить исходные тексты командой add_subdirectory(shipovnik), либо установить библиотеку командой make install и затем выполнить find_package(shipovnik).

KAT

Программа shipovnik_example генерирует данные для тестов с известным ответом (Known Answer Test, KAT) при использовании детерминированного источника энтропии (см. раздел "сборка проекта"). По умолчанию она генерирует случайные данные.

About

Реализация алгоритма ЭЦП Шиповник на базе хэш-функции SHA512

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 99.9%
  • CMake 0.1%