Java™ 6 セキュリティーの拡張機能
Java プラットフォームは、バージョン 6 で次のセキュリティー機能のサポートを追加しました。
- 署名付きコードと署名なしコードの混合
Java SE 6 Update 19 リリース以降は、Java Web Start アプリケーションまたはアプレットに署名付きコンポーネントと署名なしコンポーネントの両方が含まれている場合に、警告ダイアログが表示されます。詳細は、「署名付きコードと署名なしコードの混合」を参照してください。
- JSR 105、XML デジタル署名 API および実装
詳細は、「XML デジタル署名 API 仕様」および「XML デジタル署名 API の概要およびチュートリアル」を参照してください。
- JSR 268、スマートカード I/O API
Sun の Java SE 6 実装は、利用可能な場合、JSR 268 によって定義されたスマートカード I/O API、およびプラットフォームのネイティブ PC/SC スマートカードスタックを使用する SunPCSC という名前のプロバイダをバンドルしています。API も SunPCSC プロバイダも Java SE 6 プラットフォームの仕様の一部ではなく、これに準拠するほかの Java SE 実装には存在しない場合があります。
- SunPKCS11 の楕円曲線暗号 (ECC)
SunPKCS11 プロバイダは、基盤となる PKCS#11 トークンがサポートする場合は ECC アルゴリズムを公開します。これには、ECDSA 署名および検証、ECDH 鍵協定、および EC 鍵ペアの生成が含まれています。サポートされるメカニズムの詳細については、「PKCS#11 リファレンスガイド」のサポートされるアルゴリズムのセクションを参照してください。
- SunJSSE の楕円曲線暗号化方式群
SunJSSE は、適合する暗号化プロバイダを使用できる場合 (たとえば、適切な PKCS#11 ライブラリを持つ SunPKCS11)、RFC 4492 で定義されている ECC 暗号化方式群をサポートします。詳細は、サポートされる暗号化方式群のリストとそれらの要件を参照してください。
- SunPKCS11 を使用したネットワークセキュリティーサービス (NSS) へのアクセス
SunPKCS11 プロバイダは、NSS セキュリティーライブラリへのアクセスを可能にする新しい構成指示をサポートします。これにより、Java アプリケーションは NSS データベースファイルに格納された鍵を読み取り、ECC アルゴリズムを使用し、NSS Softtoken を FIPS 140 準拠の暗号化プロバイダとして使用できます。詳細は、「PKCS#11 リファレンスガイド」の「NSS」のセクションを参照してください。
- SunJSSE の FIPS 140 準拠
SunJSSE プロバイダは、試験的な FIPS 140 準拠モードをサポートします。これを有効にして SunPKCS11 プロバイダおよび適切な FIPS 140 認定 PKCS#11 トークンと組み合わせて使用すると、SunJSSE は FIPS 140 に準拠します。詳細は、「JSSE リファレンスガイド」を参照してください。
- プラグイン可能制限の JSSE からの削除
以前のリリースの JSSE フレームワークでは、標準以外の暗号化方式群を実装するサードパーティーの JSSE プロバイダは輸出規制の問題のため許可されませんでした。
- SunJSSE SSLSocket によるソケットの読み取りタイムアウトの完全サポート
以前のリリースでは、setSoTimeout()
の呼び出しは予測不可能な結果をもたらす場合がありました。このドキュメントは修正されました。
- SunJCE ブロック暗号への Cipher Text Stealing (CTS) モードの追加
CTS は、Bruce Schneier の書籍『Applied Cryptography-Second Edition』(John Wiley & Sons 発行、1996 年) の 195 - 196 ページで説明されており、一部の Kerberos 実装で使用されています。
- SunJCE への新しい
PBKDF2WithHmacSHA1 Secretkeyfactory
アルゴリズムの追加
PKCS5 v2.0 にあるパスワードベースキー派生機能を使用して秘密鍵を構築します。
- 2048 RSA キーサイズ制限の local_policy.jar からの削除
以前の実装では、制限のない暗号化ポリシーファイルをインストールしない場合、2048 ビットを超える RSA 鍵の取得が制限されていました。
- 新しい証明書発行局 (CA) 証明書の追加
多数の CA 証明書が、デフォルトのシステム lib/security/cacerts
ファイルに追加されました。CA 証明書のリストについては、keytool のドキュメントを参照してください。
jarsigner
ツールへの 2 つの新しいオプションの追加
オプション -digestalg
および -sigalg
が jarsigner ツールに追加され、ユーザーは jar ファイルに署名するときにデフォルトの署名およびダイジェストアルゴリズムをオーバーライドできるようになりました
keytool
ツールの新しいオプション
オプション -genseckey
および -importkeystore
が keytool ツールに追加され、ユーザーはキーストア内で SecretKey を生成したり、1 つのキーストアから別のキーストアにエントリをコピーしたりできるようになりました。オプション -genkey
、-import
、および -export
の名前は、-genkeypair
、-importcert
、および -exportcert
に変更されました。
- ユーザーが入力したパスワードの画面表示の中止
keytool
/jarsigner
などのセキュリティーツールおよび JAAS ログイン認証モジュールでは、ユーザーが入力したパスワードが画面に表示されないように新しい java.io.Console
クラスを使用します。
- Java GSS/Kerberos での AES 暗号化タイプのサポート
Java GSS/Kerberos での AES 暗号化タイプ (AES128 および AES256) をサポートします。これにより、Solaris 10 や MIT Kerberos などのほかの Kerberos 実装と、Java SE Kerberos 実装の相互運用性が改善されています。詳細は、「Java GSS セキュリティー機能」を参照してください。
- Java GSS/Kerberos での RC4-HMAC 暗号化タイプのサポート
Java GSS/Kerberos での RC4-HMAC 暗号化タイプをサポートします。これにより、Windows、Solaris 10 や MIT Kerberos などのほかの Kerberos 実装と、Java SE Kerberos 実装の相互運用性が改善されています。Windows Active Directory は、RC4-HMAC をデフォルトの Kerberos 暗号化タイプとしてサポートしています。詳細は、「Java GSS セキュリティー機能」を参照してください。
- Java GSS での SPNEGO のサポート
Java GSS での SPNEGO メカニズムのサポートが利用可能になりました。擬似セキュリティーメカニズムである Simple and Protected GSS-API Negotiation (SPNEGO) メカニズムを使用すると、GSS-API ピアは、使用する共通のセキュリティーメカニズムとセキュアにネゴシエーションを行うことができます。
HTTP での SPNEGO 認証方式もサポートします。詳細は、「Java GSS セキュリティー機能」を参照してください。
- 新規の事前認証メカニズムのサポート
Java GSS/Kerberos は、最新の Kerberos 仕様に記述されているように、新規の事前認証メカニズムをサポートします。詳細は、「Java GSS セキュリティー機能」を参照してください。
- ネイティブプラットフォーム GSS 統合
この機能を使用すると、Java GSS アプリケーションは、プラットフォームで使用可能なネイティブ GSS 実装の機能を利用できます。詳細は、「Java GSS セキュリティー機能」を参照してください。
- Microsoft Windows のネイティブ PKI および暗号化サービスへのアクセス
Microsoft CryptoAPI (CAPI) を使用してさまざまな RSA 暗号化機能を提供する SunMSCAPI JCE プロバイダが追加されました。これは、Java アプリケーションと、CAPI によって利用可能なデフォルトの RSA サービスプロバイダによって提供されるサービスとの間の、ブリッジとして機能します。X.509 証明書および RSA 鍵ペアへのアクセスを提供し、RSA 暗号化および復号化を実行して RSA 署名の作成および検証を行います。暗号化乱数ジェネレータもサポートします。
- PKI 証明書パス検証の実装の拡張機能
セグメント化された間接的な CRL のサポートが追加され、パフォーマンスと PKIX への準拠 (RFC 3280) が向上しました。
- LDAP を使用する JAAS ベースの認証
LDAP ディレクトリサービスに格納された資格を使用してユーザーが認証を実行できるようにする、JAAS ログインモジュールが追加されました。LDAP を使用した認証をサポートする必要がある既存の JAAS 対応のアプリケーションに、ドロップイン式の対処方法を提供します。詳細は、「LdapLoginModule」を参照してください。
- デフォルトの SSLContext
static メソッド getDefault()
および setDefault()
が SSLContext に追加されました。getDefault()
は、デフォルトの SSLContext を返します。これは、たとえばシステムプロパティーを使用して、実装固有の形式で初期化されます。setDefault()
によって、アプリケーションは、プログラムを介してデフォルトコンテキストを初期化された SSLContext オブジェクトに設定できます。
- SSLParameters
新しい SSLParameters クラスは、SSL 端点の構成パラメータをカプセル化します。特に、暗号化方式群、プロトコルのバージョン、およびサーバーの場合はクライアント認証要件をカプセル化します。これらは、SSLSocket.setSSLParameters()
または SSLEngine.setSSLParameters()
の単一の呼び出しによって適用できます。