[
https://issues.apache.org/jira/browse/DERBY-5622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13291909#comment-13291909
]
Rick Hillegas commented on DERBY-5622:
--------------------------------------
Thanks for the additional comments, Dag. I'm proposing that we introduce the
new procedure as a separate, orthogonal issue.
I agree that the bug still needs to be addressed. I'm convinced that there is
value in just changing the boot password without re-encrypting the data. Right
now, I'm considering two approaches to addressing this issue:
1) Save the real boot password somewhere at boot time and compare it to what is
passed into the password-changing procedure (currently
SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY). The advantage of this solution is that
it is airtight. The disadvantage is that a sensitive piece of information would
be maintained in memory somewhere, which seems like a security vulnerability to
me.
2) Continue to try to reconstruct the generated key from the boot password that
was passed to the password-changing procedure. Use this to create a new
CipherProvider. Then use the old CipherProvider to encrypt some long byte array
and decrypt the result with the new CipherProvider. If the result is the
original byte array, then the boot password was probably correct. This is not
airtight, but with a sufficiently long byte array the probability of data
corruption might be vanishingly small.
I would be interested in your thoughts. Thanks.
> Reduce the chance for hash collisions when checking bootPassword at boot time
> and when changing password.
> ---------------------------------------------------------------------------------------------------------
>
> Key: DERBY-5622
> URL: https://issues.apache.org/jira/browse/DERBY-5622
> Project: Derby
> Issue Type: Improvement
> Components: Store
> Reporter: Dag H. Wanvik
> Attachments: derby-5622-instrumentation.diff, repro.sh
>
>
> There are two issues, already seen in DERBY-2687:
> "the boot issue": there is a 1/2**16 chance that a wrong bootPassword will
> allow boot to proceed (but since its decoded key is wrong the boot will fail).
> "the password change" issue: similarly, there is a chance that the wrong
> bootPassword will be accepted trying to change it via
> SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('bootPassword', ...) at least for
> algorithms that do not check IV (initialization vector) in addition to the
> digest, e.g. "DES/ECB/NoPadding"
> The latter case may lead to data corruption, cf. DERBY-2687 discussion. I
> think the risk is fairly low, though: One would need to have execution
> permission to change the property if SQL authorization is used, and in most
> scenarios the supplied existing password would be correct. But since the
> results can be bad, it would be good to reduce or eliminate the risk.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira