[9] RFR 8056026 Debug security logging should print Provider used for each crypto operation

Vincent Ryan vincent.x.ryan at oracle.com
Wed Sep 17 10:33:58 UTC 2014


I’ve renamed that boolean flag and inverted its logic:

-    private static final boolean doDebug = !(Debug.isOn("engine=") && !Debug.isOn(“XXX"));
+    private static final boolean skipDebug = Debug.isOn("engine=") && !Debug.isOn(“XXX”);


Updated webrev: http://cr.openjdk.java.net/~vinnie/8056026/webrev.02/

Docs bug: https://bugs.openjdk.java.net/browse/JDK-8058624


On 16 Sep 2014, at 22:07, Sean Mullan <sean.mullan at oracle.com> wrote:

> On 09/16/2014 11:27 AM, Vincent Ryan wrote:
>> Here's an updated webrev that supports including/excluding specific
>> JCA engines:
>> 
>> Webrev: http://cr.openjdk.java.net/~vinnie/8056026/webrev.01/
> 
> Looks good, although the doDebug boolean is making my head spin, is there an easier way to specify that?
> 
> Also, can you open a corresponding docs bug to update the troubleshooting guide: http://docs.oracle.com/javase/8/docs/technotes/guides/security/troubleshooting-security.html
> 
> --Sean
> 
>> 
>> 
>> For example, use the following to trace only MessageDigest and
>> Signature engines:
>> 
>>     -Djava.security.debug=provider:engine=MessageDigest,Signature
>> 
>> and use the following to trace all supported engines:
>> 
>>     -Djava.security.debug=provider
>> or
>>     -Djava.security.debug=all
>> 
>> 
>> 
>> On 15/09/2014 16:57, Vincent Ryan wrote:
>>> 
>>> On 15 Sep 2014, at 16:50, Sean Mullan <sean.mullan at oracle.com> wrote:
>>> 
>>>> On 09/15/2014 11:34 AM, Vincent Ryan wrote:
>>>>> Originally I did support tracing for MessageDigest but removed it
>>>>> because of the huge quantity of log messages that were generated.
>>>>> Hashes are very widely used before an application even starts.
>>>>> SecureRandom is similar.
>>>> 
>>>> Hmm, it would be nice to specify the engine classes you want to see.
>>>> Maybe that's too much work right now, but something like:
>>>> 
>>>> java -Djava.security.debug="provider engine=MessageDigest,Signature" …
>>> 
>>> We can log the JCE provider for all engine classes by default and also
>>> support a filtering mechanism using the ‘engine' sub-option as you
>>> suggest above.
>>> 
>>> 
>>>> 
>>>>> Also I omitted KeyStore log messages because there is usually only a
>>>>> single implementation for a given keystore type so the
>>>>> JCE provider which has been selected is obvious. I’ll add support
>>>>> for KeyStore.
>>>> 
>>>> Ok. I think it would be primarily useful to see the KeyStore when
>>>> PKCS11 is used with unextractable keys to help debug any subsequent
>>>> delayed provider selection.
>>>> 
>>>> --Sean
>>>> 
>>>>> 
>>>>> 
>>>>> On 15 Sep 2014, at 16:12, Sean Mullan <sean.mullan at oracle.com> wrote:
>>>>> 
>>>>>> Can you also add similar log messages for MessageDigest,
>>>>>> SecureRandom, and KeyStore?
>>>>>> 
>>>>>> Otherwise looks good. Please add a noreg label. Also the fix is
>>>>>> helpful to any platform and not just solaris/sparc so you should
>>>>>> change those fields to be generic.
>>>>>> 
>>>>>> --Sean
>>>>>> 
>>>>>> On 09/12/2014 11:11 AM, Vincent Ryan wrote:
>>>>>>> 
>>>>>>> Please review this change to display the JCE provider that has been
>>>>>>> selected for common crypto operations.
>>>>>>> This aids troubleshooting crypto applications when a given crypto
>>>>>>> algorithm is supported by several JCE providers.
>>>>>>> Some crypto operations delay selecting a provider until they
>>>>>>> examine the
>>>>>>> key supplied in the init() method.
>>>>>>> This fix also accommodates that behaviour.
>>>>>>> 
>>>>>>> The following crypto operations are supported: Cipher, KeyAgreement,
>>>>>>> KeyGenerator, KeyPairGenerator, Mac and Signature.
>>>>>>> To see these new messages, activate JCE provider debugging as normal.
>>>>>>> For example,
>>>>>>> 
>>>>>>> % java -Djava.security.debug=provider MySSLClientApp
>>>>>>>  :
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: Signature.SHA1withDSA verification from: SunPKCS11-Solaris
>>>>>>> Provider: Signature.SHA1withDSA verification from: SunPKCS11-Solaris
>>>>>>> Provider: Signature.MD5withRSA verification from: SunPKCS11-Solaris
>>>>>>> Provider: Signature.MD5withRSA verification from: SunPKCS11-Solaris
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: KeyPairGenerator.EC from: SunPKCS11-Solaris
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: Signature.SHA256withRSA verification from: SunRsaSign
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>> Provider: KeyGenerator.SunTls12RsaPremasterSecret from: SunJCE
>>>>>>> Provider: Cipher.RSA/ECB/PKCS1Padding key wrapping from:
>>>>>>> SunPKCS11-Solaris
>>>>>>> Provider: KeyGenerator.SunTls12MasterSecret from: SunJCE
>>>>>>> Provider: KeyGenerator.SunTls12KeyMaterial from: SunJCE
>>>>>>> Provider: Signature.SHA512withRSA signing from: SunPKCS11-Solaris
>>>>>>> Provider: KeyGenerator.SunTls12Prf from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: KeyGenerator.SunTls12Prf from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: KeyGenerator.SunTls12KeyMaterial from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: KeyGenerator.SunTls12Prf from: SunJCE
>>>>>>> Provider: KeyGenerator.SunTls12Prf from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding decryption from: SunJCE
>>>>>>> Provider: Cipher.AES/GCM/NoPadding encryption from: SunJCE
>>>>>>>  :
>>>>>>> 
>>>>>>> 
>>>>>>> Thanks.
>>>>>>> 
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8056026
>>>>>>> Webrev: http://cr.openjdk.java.net/~vinnie/8056026/webrev.00/
>>>>> 
>>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/security-dev/attachments/20140917/4e5e60b8/attachment.htm>


More information about the security-dev mailing list