我的任务是为嵌入式系统制作随机数生成器。到目前为止,使用的熵源是键盘输入,以及信号强度和电池强度等其他变量。
我一直在使用PolarSSL,它有一个用于嵌入式系统的惊人的便携式 SSL 库。但是,除了文档之外,互联网上几乎没有关于它的信息!
我认为没有以正确的方式将熵源添加到我的熵累加器中。这会导致CTR-DRBG 模块出现问题,该模块在 Init 上返回错误。(源错误-52) 由于RNG用于嵌入式系统,因此系统没有初始熵,因此出现错误。(链接) 当我在其他标准操作系统(如 Windows)上尝试相同的 RNG 时,我没有收到任何错误。这是一些与它相关的代码。
// 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
我已经仔细研究了大约一个星期,但没有任何进展。差点放弃!!有人愿意帮忙吗?