Мне поручили сделать генератор случайных чисел для встраиваемой системы. На данный момент источниками энтропии, которые я использую, являются ввод с клавиатуры и другие переменные, такие как мощность сигнала и уровень заряда батареи.
Я использую PolarSSL, в котором есть потрясающая портативная библиотека SSL для встроенные системы. Однако, за исключением документации, в Интернете очень мало информации об этом!
Я думаю, что неправильно добавляю источники энтропии в свой аккумулятор энтропии. Это вызывает проблемы с модулем CTR-DRBG, который возвращает ошибку при инициализации. (Ошибка источника -52) Поскольку генератор случайных чисел предназначен для встроенной системы, нет начального энтропия из системы, следовательно, ошибка. (ССЫЛКА) Я не получаю ошибок, когда попробуйте тот же ГСЧ на других стандартных ОС, таких как Windows. Вот часть кода, относящаяся к нему.
// Global Variables.
ctr_drbg_context ctx;
entropy_context etx;
// Inside Main
entropy_init( &etx );
// Add entropy sources
// Initializing CTR_DRBG
printf("Before ctrdrbg: %d", err);
err = ctr_drbg_init( &ctx, entropy_func, &etx, (const unsigned char *) "RANDOM_GEN", 10 );
if( err != 0 )
{
printf("Failed in ctr_drbg init!: %d", err);
}
Выход: Error on Ctr_drbg init: -52
Я корпел над этим около недели, но безрезультатно. Почти сдался!! Есть желающие помочь?