/*
*******************************************************************************
\file info.h
\brief Common info
\project bee2 [cryptographic library]
\created 2012.04.01
\version 2023.02.12
\copyright The Bee2 authors
\license Licensed under the Apache License, Version 2.0 (see LICENSE.txt).
*******************************************************************************
*/
/*!
*******************************************************************************
\file info.h
\brief Общая информация
*******************************************************************************
*/
#ifndef __BEE2_INFO
#define __BEE2_INFO
#define BEE2_NAME "Bee2"
#define BEE2_VERSION_MAJOR "@BEE2_VERSION_MAJOR@"
#define BEE2_VERSION_MINOR "@BEE2_VERSION_MINOR@"
#define BEE2_VERSION_PATCH "@BEE2_VERSION_PATCH@"
#define BEE2_VERSION\
BEE2_VERSION_MAJOR "." BEE2_VERSION_MINOR "." BEE2_VERSION_PATCH
#define BEE2_VERSION_NUM\
@BEE2_VERSION_MAJOR@, @BEE2_VERSION_MINOR@, @BEE2_VERSION_PATCH@
/*!
*******************************************************************************
\mainpage Библиотека Bee2
\version @BEE2_VERSION_MAJOR@.@BEE2_VERSION_MINOR@.@BEE2_VERSION_PATCH@
\section toc Содержание
-# \ref descr
-# \ref make
-# \ref license
\section descr Описание
Библиотека Bee2 реализует алгоритмы и протоколы криптографических
стандартов Республики Беларусь (СТБ 34.101.31,45,47,60,66,77,78,79).
Библиотека написана на языке Си, без ассемблерных вставок и поэтому
компилируется практически на любой аппаратно-программной платформе.
В низкоуровневые функции передаются указатели на память, в которой
размещаются состояния алгоритмов / протоколов и локальные переменные.
Память может содержать критические объекты (ключи), и поэтому взята под
контроль. Память выделяется только в высокоуровневых функциях и только
одним блоком: в нем размещаются и состояние, и стек всех подчиненных
функций. Блок может защищаться от попадания в файл подкачки. При
завершении работы с блоком его очистка выполняется так, что не может
показаться бесполезной оптимизатору, и он ее не исключит из кода
библиотеки.
В Bee2 реализуется программа полной регуляризации. Регуляризация состоит в
отказе от ветвлений, условия которых определяются критическими данными.
Отказ от ветвлений блокирует атаки, основанные на замерах времени или
питания.
Выделены предусловия -- они названы ожиданиями, -- проверить которые
вычислительно трудно: простота числа, неприводимость многочлена,
корректность эллиптической кривой. Функции не полагаются на безусловное
выполнение ожиданий и корректно работают даже при их нарушении.
Высокоуровневые функции объединяются в связки. Функции связки используют
общее состояние и стек, они похожи на методы класса C++. В необходимых
случаях объявляются ожидания относительно последовательности вызовов
функций связки.
Большое внимание уделено выбору оптимальных арифметических алгоритмов.
Разработаны новые алгоритмы арифметики больших чисел.
Работа с алгебраическими структурами реализована через достаточно общие
интерфейсы. Например, интерфейс qr описывает работу с абстрактным кольцом
вычетом по модулю его идеала. Интерфейс qr инстанциируется многими
способами: zm -- кольцо вычетов целых чисел, pp -- кольцо многочленов, gfp --
простое поле из p > 2 элементов, gf2 -- поле характеристики 2.
\section make Сборка
Подготовка конфигурационных файлов:
\verbatim
mkdir build
cd build
cmake [-DCMAKE_BUILD_TYPE={Release|Debug|Coverage|ASan|ASanDbg|MemSan|MemSanDbg|Check}]\
[-DBUILD_FAST=ON]\
[-DBASH_PLATFORM={BASH_32|BASH_64|BASH_AVX2|BASH_AVX512|BASH_NEON}] ..
\endverbatim
Конфигурации:
- Release -- окончательная (по умолчанию);
- Debug -- отладочная;
- Coverage -- со средствами мониторинга покрытия;
- ASan, ASanDbg -- со средствами проверки адресов (AddressSanitizer);
- MemSan, MemSanDbg -- со средствами проверки памяти (MemorySanitizer);
- Check -- строгие правила компиляции.
Опция BUILD_FAST (по умолчанию отключена) переключает между безопасными
(constant-time) и быстрыми (non-constant-time) редакциями функций.
Сборка:
\verbatim
make
\endverbatim
Тестирование:
\verbatim
make test
\endverbatim
Установка:
\verbatim
make install
\endverbatim
\section license Лицензия
Библиотека распространяется на условиях Apache License, Version 2.0.
*******************************************************************************
*/
#endif // __BEE2_INFO