第 IV 部: より強力な暗号化アルゴリズム (Java SE 6.0) を使用したセキュアな通信

課題 7: Kerberos 環境でのより強力な暗号化アルゴリズムを使用したセキュアな通信の構成

この課題の目標:

この課題の目標は、さまざまな Kerberos 暗号化アルゴリズムを使用してセキュアな通信を行う方法について学習することです。J2SE 1.4 では、Java GSS/Kerberos は DES 暗号化タイプのみをサポートしていました。Java GSS/Kerberos プロバイダは J2SE 5.0 およびそれ以降のリリースで機能が拡張され、より強力な Kerberos 暗号化アルゴリズムをサポートします。また、最新の Kerberos 仕様である RFC4120 に準拠しています。AES256、AES128、3DES、RC4-HMAC、DES など、さまざまな Kerberos 暗号化タイプをサポートしています。J2SE 5.0 は、3DES と DES の Kerberos 暗号化タイプをサポートしています。Java SE 6 以降では、Kerberos で AES および RC4-HMAC をサポートしています。

Java SE 6.0 の Java GSS/Kerberos プロバイダがサポートしている暗号化タイプは、次のとおりです。

  1. AES256-CTS
  2. AES128-CTS
  3. RC4-HMAC
  4. DES3-CBC-SHA1
  5. DES-CBC-MD5
  6. DES-CBC-CRC

実行手順:

  1. Key Distribution Center (KDC) を構成し、Kerberos データベースを更新します。

    最初に、必要な Kerberos 暗号化タイプ (Solaris 10 や MIT ディストリビューションの最新の MIT Kerberos 1.4 など) をサポートする Key Distribution Center (KDC) を使用するために更新を行う必要があります。Windows プラットフォームで Active Directory を使用している場合、DES と RC4-HMAC 暗号化タイプのみがサポートされます。

    より強力な暗号化アルゴリズムを使用して新しい鍵を生成するために、Kerberos データベースを更新する必要があります。デフォルトでは、Solaris 10 KDC は、前述のリストのすべての暗号化タイプ用の鍵を生成します。前述のすべての暗号化タイプ用のすべての鍵を含むキータブを作成できます。

    注:  Windows 2000 KDC を使用する場合は、Windows マシンで使用可能な DES および RC4-HMAC 暗号化タイプを使用するように構成します。

  2. Kerberos 構成ファイルを編集します。これは src/krb5.conf にあります

    使用する暗号化タイプを選択するには、Kerberos 構成ファイルを編集する必要があります。必要なパラメータを次に示します。これらのパラメータは、Kerberos 構成ファイルの libdefaults セクションの下に挿入する必要があります。この課題では、この課題に付属しているサンプルの Kerberos 構成ファイルにすべての必要なエントリが追加されています。これらのエントリはコメントアウトされています。必要な暗号化タイプを有効にするには、必要なエントリのコメントを解除するだけです。

    • AES256-CTS 暗号化タイプを有効にする場合

      [libdefaults]
      default_tkt_enctypes = aes256-cts default_tgs_enctypes = aes256-cts permitted_enctypes = aes256-cts
      注: デフォルトでは、Solaris 10 は AES256 をサポートしません。次のパッケージをインストールする必要があります。

      SUNWcry, SUNWcryr, SUNWcryptoint 
      
      また、デフォルトでは、Java SE の JCE も AES256 をサポートしません。

      AES に 256 ビットの鍵を許可するためには、制限のない JCE 暗号化ポリシーをインストールする必要があります。


    • AES128-CTS 暗号化タイプを有効にする場合

      [libdefaults]
      default_tkt_enctypes = aes128-cts
      default_tgs_enctypes = aes128-cts
      permitted_enctypes = aes128-cts

    • RC4-HMAC 暗号化タイプを有効にする場合

      [libdefaults]
      default_tkt_enctypes = rc4-hmac
      default_tgs_enctypes = rc4-hmac
      permitted_enctypes = rc4-hmac

    • DES3-CBC-SHA1 暗号化タイプを有効にする場合

      [libdefaults]
      default_tkt_enctypes = des3-cbc-sha1
      default_tgs_enctypes = des3-cbc-sha1
      permitted_enctypes = des3-cbc-sha1


    • DES-CBC-MD5 暗号化タイプを有効にする場合

      [libdefaults]
      default_tkt_enctypes = des-cbc-md5
      default_tgs_enctypes = des-cbc-md5
      permitted_enctypes = des-cbc-md5


    • DES-CBC-CRC 暗号化タイプを有効にする場合

      [libdefaults]
      default_tkt_enctypes = des-cbc-crc
      default_tgs_enctypes = des-cbc-crc
      permitted_enctypes = des-cbc-crc


      注: 前述のパラメータが Kerberos 構成ファイルに追加されていない場合、Solaris 10 はデフォルトで AES128 暗号化タイプを使用します。エクスポート可能な暗号化パッケージがインストールされている場合は、デフォルトで AES256 暗号化タイプを使用します。


      注: 以前の課題で使用したチケットキャッシュ内の既存の Kerberos TGT は破棄してください。
      
      % kdestroy 
      

    • 新規のウィンドウを起動し、更新した krb5.conf を使用してサーバーを起動します。
       
            % xterm &
      % java -Djava.security.auth.login.config=jaas-krb5.conf \ -Djava.security.krb5.conf=krb5.conf \ GSSServer
    • 更新した krb5.conf を使用してクライアントアプリケーションを実行します。GssClient は、次の 2 つのパラメータを取ります。サービス名、およびそのサービスが実行されているサーバーの名前です。たとえば、サービスがマシン j1hol-001 上で実行されている host の場合は、次のように入力します。パスワードの入力を求められた場合は、changeit を入力します。
      
      % java
      -Djava.security.auth.login.config=jaas-krb5.conf 
         -Djava.security.krb5.conf=krb5.conf \
      GSSClient host j1hol-001

サマリー:

この課題では、より強力な Kerberos 暗号化アルゴリズムを使用して、お互いセキュアに認証および通信を行うために Java GSS API を使用するクライアント/サーバーアプリケーションを記述する方法について学習しました。Kerberos デバッグ (-Dsun.security.krb5.debug=true) を有効にすると、使用されている Kerberos 暗号化タイプに関する情報を入手できます。


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.