README.md

information systems research and development tools

Инструменты исследований и разработок информационных систем

information systems research and development tools

Библиотека вычисления контрольных сумм ГОСТ 34.11-2018 (ГОСТ Р 34.11-2012)

isrdt-stribog

Описание

Библиотека содержит алгоритмы вычисления контрольных сумм ГОСТ 34.11-2018 (ГОСТ Р 34.11-2012) для платформ amd64 и ATmega328P. Поддерживаются вычисления обеих длин контрольных сумм 512 бит и 256 бит. Вычисления оптимизированы по использованию оперативной памяти и скорости обработки. Оптимизация выполнена за счёт предвычислений и алгебраических методов.

Начиная с версии 1.0 добавлен оптимизированный расчёт единственного блока 512 бит для анализа информационной безопасности парольных систем на базе ГОСТ 34.11-2018 (например Astra Linux Special Edition версии 1.3 и выше).

Авторские права

Copyright © 2025 Anatolii M. Kukartsev amkukarcev@yandex.ru. All rights reserved.

Основные файлы проекта предоставляются под лицензией Mozilla Public License Version 2.0, полный текст лицензии можно получить по адресу https://mozilla.org/MPL/2.0/.

Файлы тестов предоставляются под лицензией The MIT License (MIT), полный текст лицензии можно получить по адресу https://mit-license.org/.

Пожертвования

Проект является свободным программным обеспечением и не имеет финансирования кроме пожертвований. Если у Вас есть желание и возможность поддержать проект, то можно воспользоваться:

Сервис электронных платежей ЮMoney SPONSR Telegram

Ветки, версии и значения производительности

Основная ветка amd64

Содержит реализацию для платфоры amd64, покрытие кода тестами 100%. Параметры испытательного стенда:

  • процессор Intel(R) Core(TM) i7-7820X CPU @ 3.60GHz, 2 ядра;
  • оперативная память 8 ГиБ;
  • подкачка отключена;
  • операционная система Astra Linux Special Edition 1.7.5.9;
  • компилятор gcc version 8.3.0 (AstraLinuxSE 8.3.0-6).

Результаты испытаний

Ветка Версия Тест
1 КиБ,
мксек
Тест
1 МиБ,
мксек
Тест
100 МиБ,
мксек
Тест
250 МиБ,
мксек
Тест
500 МиБ,
мксек
Тест
20 млн паролей,
мксек
Объём
констант,
байт
amd64 0.0.0.0.0 1 527 1 221 112 - - - - 1 600
amd64 0.0.0.0.1 1 014 843 183 - - - - 1 600
amd64 0.0.0.0.2 964 790 697 - - - - 1 600
amd64 0.0.0.0.3 721 609 202 - - - - 1 600
amd64 0.0.1.0.0 277 224 064 22 142 838 - - - 2 012
amd64 0.0.1.0.1 66 59 905 5 540 266 - - - 2 012
amd64 0.0.1.0.2 60 52 928 5 185 500 - - - 2 012
amd64 0.0.1.0.3 59 51 558 4 928 357 - - - 2 012
amd64 0.0.2.0.0 153 125 573 12 028 302 - - - 3 136
amd64 0.0.2.0.1 40 32 325 3 153 650 - - - 3 136
amd64 0.0.2.0.2 33 28 095 2 711 273 - - - 3 136
amd64 0.0.2.0.3 31 27 418 2 513 546 - - - 3 136
amd64 0.0.3.0.0 84 73 006 6 763 338 - - - 17 472
amd64 0.0.3.0.1 26 24 034 2 330 037 - - - 17 472
amd64 0.0.3.0.2 21 17 963 1 789 219 - - - 17 472
amd64 0.0.3.0.3 20 19 300 1 671 131 - - - 17 472
amd64 0.0.4.0.0 70 64 900 5 998 57 - - - 17 216
amd64 0.0.4.0.1 32 28 003 2 510 595 - - - 17 216
amd64 0.0.4.0.2 17 15 971 1 567 156 - - - 17 216
amd64 0.0.4.0.3 14 12 303 1 198 134 - - - 17 216
amd64 0.0.5.0.0 62 52 631 5 049 807 12 640 953 25 276 353 - 17 216
amd64 0.0.5.0.1 17 14 236 1 368 097 3 425 993 6 855 039 - 17 216
amd64 0.0.5.0.2 14 12 588 1 254 369 3 146 270 6 283 869 - 17 216
amd64 0.0.5.0.3 13 11 854 1 179 690 2 995 344 6 010 826 - 17 216
amd64 0.0.6.0.0 61 51 567 4 968 303 12 446 337 24 802 891 - 17 152
amd64 0.0.6.0.1 13 10 520 994 337 2 507 819 5 066 533 - 17 152
amd64 0.0.6.0.2 11 9 660 899 893 2 262 147 4 539 694 - 17 152
amd64 0.0.6.0.3 11 9 340 914 794 2 291 163 4 581 247 - 17 152
amd64 0.0.7.0.0 53 47 590 4 741 342 11 891 433 23 774 477 - 16 384
amd64 0.0.7.0.1 11 8 829 867 286 2 176 428 4 378 868 - 16 384
amd64 0.0.7.0.2 10 8 844 870 056 2 175 025 4 350 688 - 16 384
amd64 0.0.7.0.3 11 9 600 914 339 2 284 312 4 570 518 - 16 384
amd64 0.1.0.0.0 49 41 402 3 919 981 9 825 560 19 647 150 - 16 448
amd64 0.1.0.0.1 10 8 973 866 879 2 180 541 4 365 497 - 16 448
amd64 0.1.0.0.2 10 8 392 820 354 2 049 849 4 096 603 - 16 448
amd64 0.1.0.0.3 11 9 169 891 547 2 225 930 4 449 730 - 16 448
amd64 1.0.0.0.0 44 40 399 3 899 576 9 823 821 19 640 712 14 257 749 16 448
amd64 1.0.0.0.1 11 9 439 906 202 2 267 127 4 533 565 2 994 423 16 448
amd64 1.0.0.0.2 11 8 732 823 044 2 052 943 4 107 954 3 003 002 16 448
amd64 1.0.0.0.3 12 9 279 922 889 2 301 312 4 604 026 3 419 007 16 448

Основная ветка ATmega328P

Содержит реализацию для платфоры ATmega328P, покрытие кода тестами 100%. Параметры испытательного стенда:

  • процессор ATmega328P 16 МГц;
  • оперативная память 2048 байт;
  • максимальный объём микропрограммы 32 КиБ.

Результаты испытаний

Ветка Версия Тест
512 байт,
мксек
Объём
микропрограммы,
байт
Объём ОЗУ,
байт
ATmega328P 0.0.0.0.0 526 184 3 732 (11%) 402 (19%)
ATmega328P_tiny 0.1.0.0.0 526 172 3 656 (11%) 398 (19%)
ATmega328P_tiny 0.2.0.0.0 526 164 3 622 (11%) 396 (19%)
ATmega328P 0.0.1.0.0 375 444 4 674 (14%) 402 (19%)
ATmega328P 0.0.2.0.0 339 632 4 382 (13%) 402 (19%)
ATmega328P 0.2.2.0.0 339 580 4 160 (12%) 396 (19%)
ATmega328P 0.2.3.0.0 218 948 5 186 (16%) 396 (19%)
ATmega328P 0.2.4.0.0 214 196 5 148 (15%) 396 (19%)
ATmega328P 0.2.5.0.0 137 608 19 138 (59%) 396 (19%)

Нумерация версий

Версия сборки проекта включает четыре компоненты и признак оптимизации

<major>.<minor>.<revision>.<patch>.<optimization>

где компоненты определяют:

  • <major> - добавление новых объектов и методов обработки (происходит изменение интерфейса библиотеки);
  • <minor> - добавление дополнительных методов обработки к имеющимся объектам (происходит изменение интерфейса библиотеки);
  • <revision> - изменение существующих объектов и методов обработки (рефакторинг и оптимизация);
  • <patch> - исправление ошибок в существующих объектах и методах.
  • <optimization> - признак оптимизации компилятором

При изменении компонент <major> и <minor> меняется интерфейс библиотеки. Поэтому при изменении этих компонент должен пересобираться пакет разработки isrdt-stribog.

Управление сборкой

Основной файл сборки makefile специального содержимого. Для взаимодействия со средой разработки qrcreator прилагается файл .pro.user, который уже подготовлен для работы со специальным makefile.

Важно! При миграции проекта на другую машину создаётся новый файл .pro.user. Для эффективной работы нужно получить из него EnvironmentId и вручную переписать этот параметр в старом файле .pro.user. В этом случае все настройки среды, включая этапы сборки, отладки и запуска, qtcreator мигрируют.

Компиляция производится с помощью g++ (версия не ниже 4).

Сборка осуществляется с помощью make:

  • make - сборка проекта (программы или библиотеки);
  • make release-test - сборка тестов;
  • make debug - сборка отладочной версии для GDB;
  • make debug-test - сборка отладочной версии тестов;
  • make build-coverage - сборка версии для анализа покрытия gcov;
  • make build-coverage-test - сборка версии для анализа покрытия gcov тестов.

Важно! При сборке для работы с тестами исключается одноимённый с проектом файл исходных текстов, содержащий функцию main(). Для библиотеки этот файл обычно пуст.

Версия сборки содержится в файле changelog и включает в себя параметр оптимизации, который непосредственно задаёт параметр g++ -On. Допустимые значения:

  • 0 - без оптимизации;
  • 1 - оптимизация -O1;
  • 2 - оптимизация -O2;
  • 3 - оптимизация -O3.

Запуск собранной версии:

  • make start - запускает проект;
  • make test - запускает тесты;
  • make start-coverage - запускает анализ покрытия кода программы;
  • make coverage - запускает анализ покрытия кода тестов.

Сборка deb-пакетов осуществляется:

  • make deb - собирает бинарную библиотеку;
  • make deb-dev - собирает заголовочные файлы библиотеки.

Сборка документации осуществляется:

  • make doc - собирает doxygen документацию в виде html и в виде pdf.

Служебные цели:

  • make clean - вычищает проект.
Описание

Реализации оптимизированных математическими и техническими методами алгоритмов вычисления контрольных сумм согласно ГОСТ 34.11-2018 (ГОСТ Р 34.11-2012) для платформ amd64 и ATMega328P

Конвейеры
0 успешных
0 с ошибкой