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

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

この課題の目標

この課題の目標は、様々なKerberos暗号化アルゴリズムを使用してセキュアな通信を行う方法について学習することです。Java GSS/Kerberosは、AES256、AES128、3DES、RC4-HMAC、DESなどの幅広い暗号化アルゴリズムを提供します。

ノート:

DES、DES3およびRC4に基づく暗号化タイプは、デフォルトで無効になっています。無効化されたこれらの暗号化タイプのいずれかを使用する場合は、Kerberos構成ファイルで、パラメータallow_weak_crpytotrueに設定する必要があります。「サポートされるkrb5.conf設定」を参照してください。

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

  • AES256-CTS
  • AES128-CTS
  • AES256-SHA2
  • AES128-SHA2
  • RC4-HMAC
  • DES3-CBC-SHA1
  • DES-CBC-MD5
  • DES-CBC-CRC

実行ステップ

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

    まず、必要なKerberos暗号化タイプをサポートするKDCを使用するように更新してください。

    より強力な暗号化アルゴリズムを使用して新しいキーを生成するために、Kerberosデータベースを更新する必要があります。

  2. 必要に応じて、Kerberos構成ファイル(krb5.conf)を編集します。

    Kerberos構成ファイルを編集して、目的の使用する暗号化タイプが選択されるようにすることが可能です。たとえば、AES256-CTS暗号化タイプのみを有効にするには、次を追加します:

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

    AES128-CTS暗号化タイプのみを有効にするには、次を追加します:

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

    ノート:

    以前の課題のチケット・キャッシュ内の既存のKerberos TGTは次のように破棄してください。

    % kdestroy
  3. 新規のウィンドウを起動し、次のように更新したkrb5.confを使用してサーバーを起動します。

    % java -Djava.security.auth.login.config=jaas-krb5.conf \
    -Djava.security.krb5.conf=krb5.conf GSSServer
  4. 更新したkrb5.confを使用してクライアント・アプリケーションを実行します。GssClientクラスは、サービス名とそのサービスが実行されているサーバーの名前の2つのパラメータを取ります。たとえば、サービスがマシンj1hol-001上で実行されているhostの場合は、次を使用します(入力が求められたら、セキュアなパスワードを入力します)。

    % java -Djava.security.auth.login.config=jaas-krb5.conf \
    -Djava.security.krb5.conf=krb5.conf \
    GSSClient host j1hol-001

サマリー

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