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と比較してどうなのか調べていきましょう。 下に示す両者の間でどう違うのか見ていきます。
| Java | IBM Java 6.0 Win | IBM Java 7.0 Linux |
|---|---|---|
| Build | pwi3260sr1-20080416_01(SR1) | pxi3270-20110827_01 |
| Arch | Windows XP x86-32 | Linux x86-32 |
| Provider | IBM Java 6.0 Win | IBM Java 7.0 Linux |
|---|---|---|
| IBMJSSE2 | 1.6 | 1.7 TLSv1.1/v1.2サポートを追加 |
| IBMJCE | 1.2 | 1.7 楕円(EC,ECDH)追加 SHA1/256/384/512withECDSAを追加 HmacSHA256/512を追加 |
| IBMJGSSProvider | 1.6 | 7.0 |
| IBMCertPath | 1.1 | 1.1 |
| IBMSASL | 1.5 | 1.7 NTLM認証を追加 |
| IBMXMLCRYPTO | 1.0 | 1.0 変更無 |
| IBMXMLEnc | 1.0 | 1.0 変更無 |
| IBMSPNEGO | 1.0 | 1.0 変更無 |
| SUN | 1.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が無い
| 値(16進) | 曲線名 |
|---|---|
| 0004 | TLS_RSA_WITH_RC4_128_WITH_MD5 |
| 0005 | TLS_RSA_WITH_RC4_128_CBC_SHA |
| 000a | TLS_RSAWITH_3DES_EDE_CBC_SHA |
| 0013 | TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA |
| 0016 | TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA |
| 002f | TLS_RSA_WITH_AES_128_CBC_SHA |
| 0032 | TLS_DHE_DSS_WITH_AES_128_CBC_SHA |
| 0033 | TLS_DHE_RSA_WITH_AES_128_CBC_SHA |
| 0035 | TLS_RSA_WITH_AES_256_CBC_SHA |
| 0038 | TLS_DHE_DSS_WITH_AES_256_CBC_SHA |
| 0039 | TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
| 00ff | TLS_EMPTY_RENEGOTIATION_INFO_SCSV |
| c002 | TLS_ECDH_ECDSA_WITH_RC4_128_WITH_CBC_SHA |
| c003 | TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA |
| c004 | TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA |
| c005 | TLS_ECDH_ECDSA_WITH_AES_256_WITH_CBC_SHA |
| c007 | TLS_ECDHE_ECDSA_WITH_RC4_128_CBC_SHA |
| c008 | TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA |
| c009 | TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA |
| c00a | TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA |
| c00c | TLS_ECDH_RSA_WITH_RC4_128_WITH_CBC_SHA |
| c00d | TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA |
| c00e | TLS_ECDH_RSA_WITH_AES_128_CBC_SHA |
| c00f | TLS_ECDH_RSA_WITH_AES_256_CBC_SHA |
| c011 | TLS_ECDHE_RSA_WITH_RC4_128_CBC_SHA |
| c012 | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA |
| c013 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA |
| c014 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |
SSL/TLS 拡張について
同様にSSL/TLSネゴシエーションの際のSSL/TLS拡張について 見てみました。特徴的なところは次の2点です。
- SNI(Server Name Indication)在り
- 楕円曲線拡張 (25曲線)
| 値(16進) | 曲線名 |
|---|---|
| 0001 | sect163k1 |
| 0002 | sect163r1 |
| 0003 | sect163r2 |
| 0004 | sect193r1 |
| 0005 | sect193r2 |
| 0006 | sect233k1 |
| 0007 | sect233r1 |
| 0008 | sect239k1 |
| 0009 | sect283k1 |
| 000b | sect409k1 |
| 000c | sect409r1 |
| 000d | sect571k1 |
| 000e | sect571r1 |
| 000f | secp160k1 |
| 0010 | secp160r1 |
| 0011 | secp160r2 |
| 0012 | secp192k1 |
| 0013 | secp192r1 |
| 0014 | secp224k1 |
| 0015 | secp224r1 |
| 0016 | secp256k1 |
| 0017 | secp256r1 |
| 0018 | secp384r1 |
| 0019 | secp521r1 |
今日はこの辺で