Mbedtls学习--伪随机数生成器
伪随机数
应用
- 生成盐,用于基于口令的密码
- 生成密钥,用于加密和认证
- 生成一次性整数Nonce,防止重放攻击
- 生成初始化向量IV
构成
- 种子,真随机数生成器的种子来源于物理现象
- 内部状态,种子用来初始化内部状态
算法
算法 | 原理 |
---|---|
Hash_DRBG | 使用单向散列函数 |
HMAC_DRBG | 使用消息认证码 |
CTR_DRBG | 使用分组密码算法 |
工具
gen_entropy file # 产生熵
gen_random_ctr_drbg file # 生成随机数
gen_random_havege file # 使用硬件时钟源生成伪随机数,依赖MBEDTLS_HAVEGE_C
CTR_DRBG
原理
攻击时,由于无法破解明文获取内部状态,得到计数值,因此无法预测下一个随机数。