0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

技术分享 | 随机数生成过慢导致系统阻塞怎么办?

启扬ARM嵌入式开发 2022-08-15 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

/dev/random和/dev/urandom是linux上的随机数生成器,是个字符设备,为系统提供随机数。随机数主要应用在加密方面,没有加密的操作都是可预测且不安全的。

linux上随机数的生成原理

linux上随机数的生成原理是将系统的中断信息收集起来放入熵池中,通过算法生成更多无序的数据,有了大量的无序数据之后,每次获取随机数,就会从池子中读取指定的字节序列,而这些字节序列就是生成器生成的随机数。

linux开机时就会伴随着random设备的初始化,一般我们经常会遇见这两条log:

random: crng init done,

random: 7 urandom warning(s) missed due to ratelimiting,

这说明随机数已经初始化完成,可以随时请求使用。但是在某些时候会卡在这个log很长时间,这是因为在开机时系统中断不够或程序运行时熵不足,生成随机数非常缓慢,导致阻塞,进而导致无法开机、app无法正常运行等一系列bug。

为了解决这个问题,我们可以移植一个工具对熵池进行补熵,这样随机数生成器就会快速生成随机数,解决阻塞导致的一系列问题。

解决方案

解决这个问题的工具有很多,这里我们选用移植haveged工具,并使用启扬IAC-IMX8MM-kit开发板展示具体操作过程。

移植haveged-1.9.3

首先source我们的sdk开发环境,然后进入到源码内,通过configure配置makfile文件,命令如下:

./configure --host=aarch64-poky-linux --prefix=/home/ylook/haveged

配置完成后执行make && make install命令,会在/home/ylook/haveged目录下生成编译完成后的二进制文件以及相关库文件,如下图所示:

(注:笔者路径有所不同,根据环境自行更改即可)

279007a6-1a5a-11ed-9ade-dac502259ad0.png

注意:

为防止错误,可以使用file命令检查二进制文件架构,保证为aarch64架构即可。

将编译出来的二进制文件拷贝到板子的/usr/bin/目录,库文件拷贝到/usr/lib/目录,执行haveged --h命令,如下图所示:

27b356a2-1a5a-11ed-9ade-dac502259ad0.png

这里就相当于我们已经把板子里的环境配置好了,为了能够开机就使用该工具生成熵,所以我们需要在开机进程中将该工具设置为自动运行。

因为启扬i.MX8M Mini开发板上使用systemed工具配置相关服务,所以我们需要写一个service,然后让它开机运行,具体service如下:

27cc616a-1a5a-11ed-9ade-dac502259ad0.png

使用systemctl enable haveged之后重启就会生效,可从开机log中看出,如图所示,在很早之前初始化就已经完成了。

27efc4e8-1a5a-11ed-9ade-dac502259ad0.png

也可以使用命令cat /proc/sys/kernel/random/entropy_avail,查看当前熵值,在没有haveged之前该值只有几十几百,而开启之后有几千。

281a6a90-1a5a-11ed-9ade-dac502259ad0.png

这样,就完美解决了随机数生成过慢导致系统阻塞的问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 生成器
    +关注

    关注

    7

    文章

    322

    浏览量

    22852
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MPC5746R有真随机数模块(TRNG)吗?

    MPC5746R有真随机数模块(TRNG)吗? 如果有,请给些资料和例程,谢谢! 我的工程里没有使用SDK。
    发表于 04-08 06:20

    刚入行看不懂电路图怎么办

    刚入行看不懂电路图怎么办?很多电子新手刚入行时,面对密密麻麻的电路图总会犯怵:“这么多元件和线路,到底从哪看起?”别慌!今天就带大家拆解电路图的核心逻辑,只要掌握这5大模块,看懂电路图真的没那么难
    的头像 发表于 04-02 09:01 483次阅读
    刚入行看不懂电路图<b class='flag-5'>怎么办</b>?

    硅臻正式推出QRNG全系列量子随机数发生器产品

    信息安全是社会稳定的必要条件,数字时代其重要性更是愈发凸显。无论在经典还是量子加密的过程中,随机数都是安全性的基石。加密密钥由随机数生成,安全性由随机数的不可预测性保证。与伪
    的头像 发表于 03-10 16:24 488次阅读
    硅臻正式推出QRNG全系列量子<b class='flag-5'>随机数</b>发生器产品

    三防漆不固化怎么办?从材料到工艺的排查指南 |铬锐特实业

    铬锐特实业|东莞厂家|三防漆不固化怎么办?从材料过期、固化条件错配、涂层过厚、前处理不当到环境温湿度,一文带你系统排查三防漆固化不良问题,附行业数据及实用解决方法。
    的头像 发表于 02-22 01:22 363次阅读
    三防漆不固化<b class='flag-5'>怎么办</b>?从材料到工艺的排查指南 |铬锐特实业

    飞凌嵌入式ElfBoard-系统信息与资源之产生随机数

    一、rand rand可在指定范围内生成随机数。1.头文件#include 2.函数原型int rand(void);3.参数无。4.返回值rand() 函数返回一个范围在 0 到 RAND_MAX
    发表于 01-22 08:59

    智能显示模块上电后显示“No Project”怎么办

    智能显示模块上电后显示“No Project”怎么办
    发表于 01-20 15:20

    如何在LTspice仿真中实现伪随机数和真随机数生成

    本文讨论如何在LTspice仿真中利用flat()、gauss()和mc()函数来实现伪随机数和真随机数生成,并介绍如何使用设置面板的Hacks部分中的 Use the clock
    的头像 发表于 01-09 14:08 4946次阅读
    如何在LTspice仿真中实现伪<b class='flag-5'>随机数</b>和真<b class='flag-5'>随机数</b>的<b class='flag-5'>生成</b>

    德思特应用 | 前沿量子随机数研究:多特蒙德工业大学如何通过高速数字化仪保障信息安全

    在量子信息时代,生成真正随机的数字对加密与安全至关重要。多特蒙德工业大学研究人员利用高速数字化仪对量子随机数生成过程进行多通道采集与分析,成功实验评估窃听风险,为密码协议与安全应用提供
    的头像 发表于 12-22 17:22 596次阅读
    德思特应用 | 前沿量子<b class='flag-5'>随机数</b>研究:多特蒙德工业大学如何通过高速数字化仪保障信息安全

    使用单片机系统时间不准怎么办

    使用单片机系统时间不准,怎么办?具体的是与晶振有关系还是MCU内部有关系,时间一长显示的时间就慢了
    发表于 12-05 07:51

    请问单片机RAM空间不够用了怎么办

    单片机RAM空间不够用了怎么办
    发表于 11-25 08:09

    ‌基于RNG90的真随机数生成技术解析与应用指南

    Microchip Technology RNG90 CryptoAuthentication™器件设计用于需要安全随机数发生器的系统。RNG90即用型,无需任何定制。Microchip RNG90
    的头像 发表于 10-10 15:01 938次阅读
    ‌基于RNG90的真<b class='flag-5'>随机数</b><b class='flag-5'>生成</b>器<b class='flag-5'>技术</b>解析与应用指南

    凌科芯安LCSHA204安全加密芯片介绍

    验证可移除、可更换或可消耗的客户端是否可信。通过预存共享密钥,主控芯片与加密芯片进行双向认证。主控芯片生成随机数发送至加密芯片,后者通过SHA-256算法生成信息摘要并回传,主控芯片对比本地计算结果一致则判定设备合法。
    的头像 发表于 09-24 10:16 1215次阅读
    凌科芯安LCSHA204安全加密芯片介绍

    随机数和伪随机数的区别

    随机数在当前程序运行环境中是一种常用参数,目前主要分为两种,伪随机数和真随机数,本期我们就来讲一下二者的区别。
    的头像 发表于 08-27 17:46 2992次阅读

    电脑开机每次自动开启很多软件怎么办

    电脑开机每次自动开启很多软件怎么办
    发表于 07-17 06:40

    路由器能连上但是没有网络怎么办

    路由器能连上但是没有网络怎么办
    发表于 07-10 06:15