Java 9 (JSR 379)介绍 NIST DRBG如指定JEP 273:基于 DRBG 的 SecureRandom 实现.
然而,NIST 文档SP 800-90Ar1 (NIST 特别出版物 800-90A 修订版 1:使用确定性随机位生成器生成随机数的建议)总共指定了三种机制:
在 800-90Ar1(在所有平台上)中实现三种 DRBG 机制(Hash_DRBG、HMAC_DRBG、CTR_DRBG)。
然而,尽管您可能期望我们现在拥有三种方法来创建这种安全的随机算法:
SecureRandom.getInstance("Hash_DRBG")
SecureRandom.getInstance("HMAC_DRBG")
SecureRandom.getInstance("CTR_DRBG")
...可能有各种配置参数,我们似乎只有一个:
SecureRandom.getInstance("DRBG")
那么开发人员如何配置和检测使用的是哪一种算法呢?
来自JEP
A new 安全随机参数接口,以便可以进行额外的输入
提供给新的 SecureRandom 方法。
从那里我们到达Drbg参数其中说
实施注意事项:
以下注释适用于 SUN 中的“DRBG”实现
JDK 参考实现的提供者。本次实施
支持DRBG算法的Hash_DRBG和HMAC_DRBG机制
SHA-224、SHA-512/224、SHA-256、SHA-512/256、SHA-384 和 SHA-512,以及
CTR_DRBG(既使用求导函数又不使用求导函数
函数)与 DRBG 算法 AES-128、AES-192 和 AES-256。
机制名称和DRBG算法名称由
安全属性 securerandom.drbg.config。默认选择是
采用 SHA-256 的 Hash_DRBG。
因此,依赖于实现并且使用默认实现,只能通过属性进行切换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)