RFR: 8169229: RSAClientKeyExchange debug info is incorrect

Bradford Wetmore bradford.wetmore at oracle.com
Tue Nov 8 23:09:46 UTC 2016


Xuelei/I inadvertently left off security-dev in a later discussion, so 
cc'ing here on some main points.

On 11/4/2016 4:33 PM, Xuelei Fan wrote:
> As there is a preMaster, may not need the debug-only
> debugProtocolVersion class field.  It can be extracted from preMaster in
> the print() implementation.

On 11/6/2016 12:51 AM, Bradford Wetmore wrote:
 > What if it's not extractible?

Xuelei wrote:

 > We know the version for the ClientKeyExchange message generation
 > (client side).  For the receiving/server side, no idea about how to
 > get the version.  Maybe, we can just dump "version is not
 > extractable"?

For the client, the clientKeyExchange protocol version field for the 
message is actually set in the KeyGenerator, so 
RSAClientKeyExchange.protocolVersion may or may not be what is sent over 
the wire.  That is: RSAClientKeyExchange.protocolVersion is only a 
guess, and may not be accurate and will confuse any debug analysis.

For the server side, I would expect the same: if it's not extractable we 
could output some currentVersion, but again it's only a guess and would 
confuse things.

So IMHO, we should not look at this.protocolVersion for debug if the 
preMaster is not extractable:

     void print(PrintStream s) throws IOException {
+       String version = "protocol version not available";
+
+       byte[] ba = preMaster.getEncoded();
+       if (ba != null && ba.length >= 2) {
+           version = ProtocolVersion.valueOf(ba[0], ba[1]).name;
+       }
+
         s.println("*** ClientKeyExchange, RSA PreMasterSecret, " +
-                                         protocolVersion);
+                                         version);

Final update:

https://bugs.openjdk.java.net/browse/JDK-8169229
http://cr.openjdk.java.net/~wetmore/8169229/webrev.01

I'll run it through JPRT, but I'll mark as noreg-trivial.

Brad


 >>>>> On 11/5/2016 6:17 AM, Bradford Wetmore wrote:
 >>>>>>
 >>>>>> https://bugs.openjdk.java.net/browse/JDK-8169229
 >>>>>> http://cr.openjdk.java.net/~wetmore/8169229/webrev.00/
 >>>>>>
 >>>>>> Please review this minor bug fix.  Our RSAClientKeyExchange isn't
 >>>>>> properly outputing the RSA PreMasterSecret field.
 >>>>>>
 >>>>>> Thanks,
 >>>>>>
 >>>>>> Brad






More information about the security-dev mailing list