JEP 273: DRBG-Based SecureRandom ImplementationsJEP 273: DRBG-Based SecureRandom ImplementationsOwnerWeijun WangTypeFeatureScopeSEStatusClosed / DeliveredRelease9Componentsecurity-libs / java.securityDiscussionsecurity dash dev at openjdk dot java dot netEffortMDurationMReviewed byBrian Goetz, Sean MullanEndorsed byBrian GoetzCreated2013/05/28 19:56Updated2019/11/28 11:21Issue8051408Summary
Implement the three Deterministic Random Bit Generator (DRBG) mechanisms
described in NIST 800-90Ar1.
Non-Goals
Provide API for Source of Entropy Input (SEI), or implement approved SEI on all platforms, where "approved" means approved
by NIST or FIPS.
Motivation
The JDK has two kinds of SecureRandom implementations.  One is
platform-dependent and based on native calls or OS devices such as
reading /dev/{u}random on Unix, using the CryptoAPI on Windows, and
using various preconfigured PKCS11 libraries. The latest releases of
Solaris, Linux and Windows
already support DRBG, but older releases and embedded systems might
not. The other kind is a pure Java implementation that uses
an older SHA1-based RNG implementation, which is not as strong as the
algorithms used by approved DRBG mechanisms.
The DRBG mechanisms developed and approved by NIST (as in SP 800-90Ar1)
use modern algorithms as strong as SHA-512 and AES-256. Each of these
mechanisms can be configured with different security strengths and
features to match user requirements. Support for these mechanisms is
becoming very important in some environments, especially for the
U.S. Government.
Description
According to NIST SP 800-90, a random bit generator (RBG, 800-90C) is
constructed with a source of entropy input (800-90B and 800-90C) and a
DRBG mechanism (800-90Ar1). The source of entropy input provides fresh
randomness (entropy) as a seed to the DRBG mechanism, which is then able
to continuously generate "random" bit sequences.
APIs


New methods for SecureRandom matching 800-90C, which allows
configuration of a SecureRandom object and specifying
additional input in the course of seeding, reseeding,
and random-bit generation.


New methods in SecureRandomSpi, to implement the new methods above.


A new SecureRandomParameters interface so that additional input can be provided to the new SecureRandom methods.


These new APIs should be generalized enough for any SecureRandom flavors
(not just DRBG) and can be added to SecureRandom and SecureRandomSpi.

A new DrbgParameters class (and its inner classes) implementing SecureRandomParameters to be used by DRBG.

Implementation

Implement the three DRBG mechanisms (Hash_DRBG, HMAC_DRBG, CTR_DRBG)
in 800-90Ar1 (on all platforms).

By-products


SHA-512/224 and SHA-512/256 secure hash algorithms as described in
FIPS 180-4.


Related HmacSHA512/224 and HmacSHA512/256 algorithms.


Testing


The DRBG implementations must pass the CAVP test vectors.


SHA-512/224 and SHA-512/256 test vectors.


An informal test vector for HmacSHA512/224 and
HmacSHA512/256.


InstallingContributingSponsoringDevelopers' GuideVulnerabilitiesJDK GA/EA BuildsMailing listsWiki
                      · IRCBylaws · CensusLegalWorkshopJEP ProcessSource codeMercurialGitHubToolsGitjtreg harnessGroups(overview)AdoptionBuildClient LibrariesCompatibility & Specification ReviewCompilerConformanceCore LibrariesGoverning BoardHotSpotIDE Tooling & SupportInternationalizationJMXMembersNetworkingPortersQualitySecurityServiceabilityVulnerabilityWebProjects(overview,
      archive)AmberBabylonCRaCCaciocavalloClosuresCode ToolsCoinCommon VM InterfaceCompiler GrammarDetroitDevelopers' GuideDevice I/ODukeGalahadGraalIcedTeaJDK 7JDK 8JDK 8 UpdatesJDK 9JDK
      (…,
       21,
       22,
       23)JDK UpdatesJavaDoc.NextJigsawKonaKullaLambdaLanaiLeydenLilliputLocale EnhancementLoomMemory Model UpdateMetropolisMission ControlMulti-Language VMNashornNew I/OOpenJFXPanamaPenrosePort: AArch32Port: AArch64Port: BSDPort: HaikuPort: Mac OS XPort: MIPSPort: MobilePort: PowerPC/AIXPort: RISC-VPort: s390xPortolaSCTPShenandoahSkaraSumatraTiered AttributionTsanType AnnotationsValhallaVeronaVisualVMWakefieldZeroZGC

        © 2024 Oracle Corporation and/or its affiliates
        Terms of Use
        ·
        
            License: GPLv2
        · Privacy
        · Trademarks
