Linux中使用haveged对/dev/random补熵

SecureRandom

随机数安全一文中提过安全随机数的概念 , 这里不具体描述 , 就是指强伪随机数甚至真随机数 . 在Java中除了弱伪随机数生成器java.util.Random之外 , 也提供了java.security.SecureRandom这种强伪随机数生成器 . 使用这种方式时 , Java会读取系统默认的随机源 . Java中有两种方法可以改变随机源的来源 :

  • JVM的启动项参数-Djava.security.egd
  • 配置文件$JAVA_PATH/jre/lib/security/java.security是否配置参数securerandom.source

当两种随即源都存在时,1的优先级高于2 ; JDK1.8中,java.security文件中的securerandom.source的默认值为:file:/dev/random


/dev/random

/dev/random产生随机数的原理是利用当前系统的**熵池(random pool)**来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回

熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过 很多参数来评估,如内存的使用文件的使用量不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,这产生的随机数的效果就不是很好了,/dev/random会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回

由于/dev/random生成强伪随机数的过程会阻塞当前的程序 , 所以生成随机数的速度必须越快越好 ; 而熵值从小数值升到目标数值的速度就是生成随机数的速度 , 为此 , 我们必须想办法提高熵值


haveged的使用

我们可以使用haveged组件来进行补熵

执行service haveged status或者ps –ef | grep "haveged" | grep -v "grep"命令可以确认系统是否开启了haveged进程

启动haveged , 并将其设置为随系统启动 :

systemctl start haveged
systemctl enable haveged.service

停止haveged : service haveged stop

在启动完havged后 , 可以通过cat /dev/random | od –x来查看屏幕输出随机数的速度明显比未开启时要快得多 ; cat /proc/sys/kernel/random/entropy_avail可以查看当前熵值 ; 没开启havaged正常是100多 , 开启之后会增大到1000多甚至2000

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值