[ https://issues.apache.org/jira/browse/NIFI-1240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aldrin Piri reassigned NIFI-1240: --------------------------------- Assignee: Aldrin Piri > SecureRandom is improperly seeded with current time > --------------------------------------------------- > > Key: NIFI-1240 > URL: https://issues.apache.org/jira/browse/NIFI-1240 > Project: Apache NiFi > Issue Type: Bug > Components: Core Framework > Affects Versions: 0.4.0 > Reporter: Andy LoPresto > Assignee: Aldrin Piri > Priority: Critical > Labels: easyfix, security > Fix For: 0.4.0 > > Original Estimate: 1h > Remaining Estimate: 1h > > In PasswordBasedEncryptor.java, java.security.SecureRandom is used to > generate a salt for key derivation. However, the SecureRandom instance is > seeded by System.getCurrentTimeInMillis(), which is not random and is > predictable. Instead, we should allow SecureRandom to seed itself by calling > SecureRandom.nextBytes(). > The instance accessor should also explicitly specify "SUN" as the > cryptographic service provider to avoid default CSP issues. > "First, while it is good that the code explicitly specifies the instance of > SecureRandom to be SHA1PRNG (because a call to .getInstance() will return > whatever the Java properties specify), to be completely explicit, it should > be .getInstance("SHA1PRNG", "SUN") because the Java cryptographic service > provider (CSP) should be selected. On most systems this will default to Sun, > but it can conceivably cause issues if a different CSP is prioritized. > Second, seeding the SecureRandom with the current time is most definitely not > random and is predictable. SecureRandom.nextBytes() actually self-seeds if > the instance had not previously been seeded, and this manual seeding is > decreasing the entropy used. These two issues will be resolved in an upcoming > release, but are not related to the encryption issue we are addressing now." > The fix is very simple. I have searched the project and this is the only use > of SecureRandom which is manually seeded. -- This message was sent by Atlassian JIRA (v6.3.4#6332)