IBMのJava SDK 7.0(IBM SDK, Java Technology Edition, Version 7.0)が2011年9月19日に リリースされました。

私が食いつくのは暗号ライブラリ(Java Cryptography Extension(JCE))の部分しかありません。 先日Oracle(Sun) Java J2SE 7.0がリリースされたばかりですが、 IBMの方はどうちがうのか見ていきましょう。

早速IBM Java 6.0と比較

まずはIBM Java 6.0と比較してどうなのか調べていきましょう。 下に示す両者の間でどう違うのか見ていきます。

JavaIBM Java 6.0 WinIBM Java 7.0 Linux
Buildpwi3260sr1-20080416_01(SR1)pxi3270-20110827_01
ArchWindows XP x86-32Linux x86-32
IBM Java 7.0 に同梱されたJCEプロバイダの一覧は以下の通りです。 変更の概要についても簡単に書いておきました。
ProviderIBM Java 6.0 WinIBM Java 7.0 Linux
IBMJSSE21.61.7
TLSv1.1/v1.2サポートを追加
IBMJCE1.21.7
楕円(EC,ECDH)追加
SHA1/256/384/512withECDSAを追加
HmacSHA256/512を追加
IBMJGSSProvider1.67.0
IBMCertPath1.11.1
IBMSASL1.51.7
NTLM認証を追加
IBMXMLCRYPTO1.01.0
変更無
IBMXMLEnc1.01.0
変更無
IBMSPNEGO1.01.0
変更無
SUN1.7
新規追加
ポリシ対応のみでほぼ空

SSL/TLS CipherSuitesについて

次に、IBMJSSE2プロバイダがサポートするCipherSuitesを見てみようと思います。 簡単なTLSクライアントを実装して接続して試してみました。 以下のようなところが特徴的かと思います。

  • 28のCipherSuitesをサポートとSun Javaに比べ少なめ
  • 楕円系(ECDSA,ECDHをサポート)
  • MD5は1つのみで残り27はSHA1
  • NSA Suite-Bはサポートしない(GCM,SHA2がない)
  • 安全な再ネゴシエーション(RFC 5746に対応している
  • AESが基本でRC4、3DESがちょっと
  • Sun JavaでサポートするSHA2系のCipherSuitesが無い
サポートしているCipherSuitesは以下の通りです。
値(16進)曲線名
0004TLS_RSA_WITH_RC4_128_WITH_MD5
0005TLS_RSA_WITH_RC4_128_CBC_SHA
000aTLS_RSAWITH_3DES_EDE_CBC_SHA
0013TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
0016TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
002fTLS_RSA_WITH_AES_128_CBC_SHA
0032TLS_DHE_DSS_WITH_AES_128_CBC_SHA
0033TLS_DHE_RSA_WITH_AES_128_CBC_SHA
0035TLS_RSA_WITH_AES_256_CBC_SHA
0038TLS_DHE_DSS_WITH_AES_256_CBC_SHA
0039TLS_DHE_RSA_WITH_AES_256_CBC_SHA
00ffTLS_EMPTY_RENEGOTIATION_INFO_SCSV
c002TLS_ECDH_ECDSA_WITH_RC4_128_WITH_CBC_SHA
c003TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
c004TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
c005TLS_ECDH_ECDSA_WITH_AES_256_WITH_CBC_SHA
c007TLS_ECDHE_ECDSA_WITH_RC4_128_CBC_SHA
c008TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
c009TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
c00aTLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
c00cTLS_ECDH_RSA_WITH_RC4_128_WITH_CBC_SHA
c00dTLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
c00eTLS_ECDH_RSA_WITH_AES_128_CBC_SHA
c00fTLS_ECDH_RSA_WITH_AES_256_CBC_SHA
c011TLS_ECDHE_RSA_WITH_RC4_128_CBC_SHA
c012TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
c013TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
c014TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

SSL/TLS 拡張について

同様にSSL/TLSネゴシエーションの際のSSL/TLS拡張について 見てみました。特徴的なところは次の2点です。

  • SNI(Server Name Indication)在り
  • 楕円曲線拡張 (25曲線)
サポートしている楕円曲線の数が多いですが、これはOracle(Sun) Java J2SE 7.0と 同じ数ですね。たぶん値も同じでしょう。下に一覧表を示します。
値(16進)曲線名
0001sect163k1
0002sect163r1
0003sect163r2
0004sect193r1
0005sect193r2
0006sect233k1
0007sect233r1
0008sect239k1
0009sect283k1
000bsect409k1
000csect409r1
000dsect571k1
000esect571r1
000fsecp160k1
0010secp160r1
0011secp160r2
0012secp192k1
0013secp192r1
0014secp224k1
0015secp224r1
0016secp256k1
0017secp256r1
0018secp384r1
0019secp521r1

今日はこの辺で