Java9 (JSR 379) 介绍NIST DRBG的在9月273中指定。然而,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")
那么,开发人员如何配置和检测使用哪一种算法呢?
发布于 2019-10-09 12:44:06
来自杰普
一个新的SecureRandomParameters接口,以便可以向新的SecureRandom方法提供额外的输入。
从那里我们到达DrbgParameters,上面写着
实现注意事项: 以下说明适用于JDK参考实现的SUN提供程序中的"DRBG“实现。该实现使用DRBG算法AES-128、AES-192和AES-256支持Hash_DRBG和HMAC_DRBG机制,包括DRBG算法SHA-224、SHA-512/224、SHA-256、SHA-512/256、SHA-384和SHA-512,以及CTR_DRBG (使用派生函数和不使用派生函数)。 机制名和DRBG算法名由安全属性securerandom.drbg.config确定。默认选择是带有SHA-256的Hash_DRBG。
因此,实现依赖并在默认情况下只能使用属性切换。
发布于 2019-10-09 12:47:58
在调用Security.SetProperties之前使用SecureRandom:
Security.setProperty("securerandom.drbg.config", "Hash_DRBG");
SecureRandom random = SecureRandom.getInstance("DRBG");
有关更多信息,本文提供了一些深入的信息:https://metebalci.com/blog/everything-about-javas-securerandom/
https://stackoverflow.com/questions/58304220
复制相似问题