この課題の目標は、さまざまな 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 プロバイダがサポートしている暗号化タイプは、次のとおりです。
src/krb5.conf
にありますAES256-CTS
暗号化タイプを有効にする場合[libdefaults]注: デフォルトでは、Solaris 10 は
default_tkt_enctypes = aes256-cts default_tgs_enctypes = aes256-cts permitted_enctypes = aes256-cts
AES256
をサポートしません。次のパッケージをインストールする必要があります。SUNWcry, SUNWcryr, SUNWcryptointまた、デフォルトでは、Java SE の JCE も
AES256
をサポートしません。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
% kdestroy
% xterm &
% java -Djava.security.auth.login.config=jaas-krb5.conf \ -Djava.security.krb5.conf=krb5.conf \ GSSServer
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 暗号化タイプに関する情報を入手できます。