跳到主要内容

JEP 273:基于 DRBG 的 SecureRandom 实现

QWen Max 中英对照

概述

实现 NIST 800-90Ar1 中描述的三种确定性随机比特生成器 (DRBG) 机制。

非目标

提供熵输入源(SEI)的 API,或者在所有平台上实现经核准的 SEI,其中“核准”是指获得 NIST 或 FIPS 的批准。

动机

JDK 有两种 SecureRandom 实现。一种依赖于平台,并基于本地调用或操作系统设备,例如在 Unix 上读取 /dev/{u}random,在 Windows 上使用 CryptoAPI,以及使用各种预配置的 PKCS11 库。SolarisLinuxWindows 的最新版本已经支持 DRBG,但旧版本和嵌入式系统可能不支持。另一种是 纯 Java 实现,它使用较旧的基于 SHA1 的 RNG 实现,其强度不如经批准的 DRBG 机制所使用的算法。

NIST(如 SP 800-90Ar1 中所述)开发和批准的 DRBG 机制使用了诸如 SHA-512 和 AES-256 这样强大的现代算法。这些机制中的每一个都可以根据用户需求配置不同的安全强度和特性。在某些环境中,对这些机制的支持变得非常重要,尤其是对于美国政府而言。

描述

根据 NIST SP 800-90,随机比特生成器(RBG,800-90C)由熵输入源(800-90B 和 800-90C)和一个 DRBG 机制(800-90Ar1)构成。熵输入源提供新鲜的随机性(熵)作为 DRBG 机制的种子,随后该机制能够持续生成“随机”比特序列。

APIs

  • 针对 SecureRandom 的新方法,符合 800-90C 标准,允许配置 SecureRandom 对象,并在种子生成、重新播种和随机比特生成过程中指定额外的输入。

  • SecureRandomSpi 中的新方法,用于实现上述新方法。

  • 一个新的 SecureRandomParameters 接口,以便可以为新的 SecureRandom 方法提供额外的输入。

这些新的 API 应该足够通用,适用于任何 SecureRandom 变体(而不仅仅是 DRBG),并且可以添加到 SecureRandomSecureRandomSpi 中。

  • 新的 DrbgParameters 类(及其内部类)实现了 SecureRandomParameters,供 DRBG 使用。

实现

  • 在 800-90Ar1 中实现三种 DRBG 机制(Hash_DRBG、HMAC_DRBG、CTR_DRBG)(在所有平台上)。

副产品

测试