下面是来自于arc4random.c中使用的LibreSSL伪随机生成器的OpenBSD。
它的工作如下:
我不太明白第3步的目的(参见链接代码的第135-138行):
/* immediately reinit for backtracking resistance */
_rs_init(rsx->rs_buf, KEYSZ + IVSZ);
memset(rsx->rs_buf, 0, KEYSZ + IVSZ);
rs->rs_have = sizeof(rsx->rs_buf) - KEYSZ - IVSZ;为什么没有使用作为PRG输出的整个密钥流?为什么“重组”一步会使PRG更加安全?
发布于 2016-02-28 13:33:44
这是为了防止两种不同类型的攻击。
https://crypto.stackexchange.com/questions/33191
复制相似问题