c – 如何使用STM32 MCU生成REAL随机数?
发布时间:2020-12-16 10:43:46 所属栏目:百科 来源:网络整理
导读:我正在使用keil microvision IDE中的STM32F103E arm cortex-m3 MCU开展一个项目. 我需要为某些目的生成随机数,但我不想使用标准c库生成的伪随机数,所以我需要一种使用硬件功能生成REAL随机数的方法,但我不知道如何我能做到. 任何的想法? (我是一名软件工程
我正在使用keil microvision IDE中的STM32F103E arm cortex-m3 MCU开展一个项目.
我需要为某些目的生成随机数,但我不想使用标准c库生成的伪随机数,所以我需要一种使用硬件功能生成REAL随机数的方法,但我不知道如何我能做到. 任何的想法? (我是一名软件工程师而非电子专业人员,所以请说明一下:P) 解决方法
正如所指出的,该芯片没有硬件RNG.
但你可以自己动手.通常的方法是测量INDEPENDENT时钟之间的抖动.独立意味着两个时钟由不同的christal或RC振荡器支持,而不是来自相同的. 我会用: >从系统时钟(MHz范围)派生的SysTick定时器/计数器 在kHz范围RC振荡器上设置一个计数器,每秒几次给你一个中断.在中断处理程序中,您读取SysTick计数器的当前值.无论SysTick是否用于其他目的(调度),低5位都是不可预测的. 为了获得随机数,请使用普通的伪RNG.使用上面收集的熵不可预测地改变伪RNG的内部状态.对于密钥生成,不要一次读取所有位,但允许发生几个突变. 对此的攻击是显而易见的:如果攻击者可以测量或控制高达MHz精度的kHz范围RC振荡器,则随机性消失.如果您担心这一点,请使用智能卡或其他安全协处理器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |