JDK 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」のセクションを参照してください。
- プラグイン可能制限の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()
の単一の呼出しによって適用できます。