基于杂凑函数的确定性随机比特生成器(Hash_DRBG)

        对称加密的密钥及非对称加密的私钥,通常是随机生成的比特串。在公钥加密、数字签名计算过程中,如果使用概率性非对称算法(比如椭圆曲线算法),将会用到随机数。要生成随机数,可以使用物理噪声源。在对安全性要求较高的环境中,随机数一般使用特殊硬件生成。当没有可用来生成随机数的硬件时,如果能够进行人机交互,可以采集用户的随意行为轨迹数据(比如敲击键盘的时间间隔、鼠标随意移动的轨迹)作为随机源。当随机源一次只能生成长度有限的随机字节流,并且每次访问随机源后都必须等待很久才能进行下一次访问时,可以使用“确定性随机比特生成器”(Deterministic Random Bit Generator,缩写为DRBG)。DRBG 的优点是:只要将长度有限的随机数据作为“种子”(Seed)输入到 DRBG 中,它就能够输出比较长的伪随机字节流。
        在 NIST SP 800-90A 《Recommendation for Random Number Generation Using Deterministic Random Bit Generators》Revision 1 文档(下载网址:https://csrc.nist.gov/publications/detail/sp/800-90a/rev-1/final)中,给出了以下三种 DRBG 的构造方法:Hash_DRBG,HMAC_DRBG 和 CTR_DRBG。其中 Hash_DRBG 是基于杂凑函数构造的确定性随机比特生成器,它在生成随机比特流的过程中,要进行大整数的模加运算,效率不够高。在追求高效率的环境中,一般使用 CTR_DRBG。
        根据 NIST SP 800-90A Rev.1 文档,我通过调用 OpenSSL 1.1.1版中提供的大整数模运算函数和杂凑函数,编程实现了基于杂凑函数的DRBG,代码已发布在以下网址:https://github.com/greendow/Hash-DRBG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值