Hi Peter,

Thanks for the update, I'm just getting up to speed on this and had help correcting the bug description and linking to the history from the earlier discussions in June.

The static initializations of SecureRandom contribute to the large number of classes
loaded even for the trivial program so it may be useful to delay them so
the most trivial default use of SecureRandom does not load them immediately.

Roger


On 11/25/2014 6:37 PM, Peter Levart wrote:
Hi Roger,

I see the 8060435 bug already talks about that possible solution too.

I agree with Paul that a public static method on SecureRandom would be better for JDK9. Or maybe even some new class in java.util, which would implement just the interface to native /dev/urandom on Unixes and MSCAPI on Windows (without any SHA1 mixing or such) and make java security SeedGenerator depend on that rather than the other way around (where TLR/SplittableRandom depend on java security). I think this is better from modularization standpoint too.

In case of a new java.util class (what about a method on java.lang.System?) the code (together with native part on Windows) could just be copied from (Native)SeedGenerator where it is already tried and tested. Then NativeSeedGenerator would just become a facade for invoking java.util/java.lang.System method.

Regards, Peter

On 11/26/2014 12:15 AM, Peter Levart wrote:

On 11/24/2014 09:46 PM, roger riggs wrote:
Hi,

This topic has languished for a bit and could use a bit of expertise from
Windows developers.

The improvements in entropy for initializing Secure Random in JDK 8 have some negative attributes that affect maintainability, robustness and performance[1].
The dependency on networking, can in some OS's and configurations lead
to increased startup times and issues with bootstrapping the Java runtime.

Martin has proposed[2] an alternative for Linux based on /dev/urandom
with a fallback to a simpler algorithm if /dev/urandom is not available.

Since /dev/urandom is not native to Windows, it seems prudent to identify
a corresponding source of entropy data.

What are the recommended ways on Windows to get seeds for random?
Please suggest one or more ways to initialize SecureRandom

Hi Roger,

Do you mean SecureRandom or ThreadLocalRandom/SplittbleRandom, since the 8060435 talks about the later two ?

As Bernd identified, the Windows equivalent to /dev/urandom is MSCAPI.

5 months ago I made an attempt to expose a part of contained internal java security API to get access to /dev/urandom based and MSCAPI based seed generators. Here's the thread with the discussion:

http://mail.openjdk.java.net/pipermail/core-libs-dev/2014-June/027256.html

The minimal patch was the following:

http://cr.openjdk.java.net/~plevart/jdk9-dev/TLR_SR_SeedGenerator/webrev.01/

Regards, Peter


Thanks, Roger

p.s. Sorry to be covering old ground but I don't have all the context.


[1] 8060435  SecureRandom initialization latency on Windows
https://bugs.openjdk.java.net/browse/JDK-8060435

[2] http://cr.openjdk.java.net/~martin/webrevs/openjdk9/ThreadLocalRandom-system-entropy/



Reply via email to