この課題の目標は、様々なKerberos暗号化アルゴリズムを使用してセキュアな通信を行う方法について学習することです。Java GSS/Kerberosは、AES256、AES128、3DES、RC4-HMAC、およびDESなど幅広い暗号化アルゴリズムを提供します。
次は、Java SEでJava GSS/Kerberosプロバイダがサポートしているすべての暗号化タイプのリストです。
Key Distribution Center (KDC)を構成し、Kerberosデータベースを更新します。
まず、必要なKerberos暗号化タイプ(Solaris 10やMITディストリビューションの最新のMIT Kerberos 1.4など)をサポートするKDCを使用するように更新する必要があります。WindowsプラットフォームでActive Directoryを使用している場合、DESとRC4-HMAC暗号化タイプのみがサポートされます。
より強力な暗号化アルゴリズムを使用して新しい鍵を生成するために、Kerberosデータベースを更新する必要があります。デフォルトでは、Solaris 10 KDCは、前述のリストのすべての暗号化タイプ用の鍵を生成します。前述のすべての暗号化タイプ用のすべての鍵を含むキー・タブを作成できます。
注: Windows 2000 KDCを使用する場合は、Windowsで使用可能なDESおよびRC4-HMAC暗号化タイプを使用するように構成できます。
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
の場合は、次を使用します(入力が求められたら、セキュアなパスワードを入力します)。
% 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暗号化タイプに関する情報を入手できます。