Solaris スマートカードを使用する際は、ocfserv サーバーとクライアントアプリケーションの機能を定義する目的で、ホストごとに属性を設定する必要があります。カードリーダーの設定後、各ホストに Solaris 8 ソフトウェアをインストールするときに、デフォルトのスマートカードの属性のセットを再検討してください。次のような場合は、属性を変更する必要があります。
スマートカードやカードリーダーのメーカーが製品を更新した結果、製品番号、Java クラス名などが変更された場合
サイト内の開発者が、セキュリティ属性を必要とするカスタムアプリケーションを作成した場合
設定しようとしているホストにスーパーユーザーとしてログインします。
次のように入力して、設定可能な属性を表示させます。
# smartcard -c admin |
画面には次のように表示されます。
Client Properties: ClientName.PropertyName Value ----------------------- ----- default.validcards = CyberFlex IButton PayFlex default.authmechanism = Pin=UserPin default.defaultaid = A000000062030400 Server Properties: PropertyName Value ------------ ----- authmechanism = Pin Password OpenCard.terminals = com.sun.terminal.scm. SCMstcCardTerminalFactory|MySCM|SerialDrive| /dev/cua/b ocfserv.protocol = rpc PayFlex.ATR = 3B6900005792020101000100A9 3B69110000005792020101000100 authservicelocations = com.sun.opencard.service.auth OpenCard.services = com.sun.opencard.service. cyberflex.CyberFlexServiceFactory com.sun.opencard.service.ibutton. IButtonServiceFactory com.sun.opencard.service.payflex. PayFlexServiceFactory abc.class com.sun.services.scm. SCMstcCardTerminaFactory initializerlocations = com.sun.opencard.cmd.IButtonInit IButton.ATR = 008F0E0000000000000000000004000034909000 cardservicelocations = com.sun.opencard.service.common CyberFlex.ATR = 3B169481100601810F 3B169481100601811F country = US debugging.filename = /tmp/ocf_debugfile language = en debugging = 0 |
サーバー属性は、各ホスト上のスマートカードサーバー ocfserv の動作を定義します。この節では、smartcard -c admin によって一覧表示されるサーバーの属性について説明し、属性のデフォルト値を変更する方法を説明します。
smartcard -c admin コマンドを使用して、デフォルトのサーバー属性を変更できます。次のように入力して、ください。
# smartcard -c admin -x modify "property_name=property_value" |
-x modify - 変更操作を実行しようとしていることを示します。
"property_name=property_value" - 変更する属性とその属性に割り当てる値を表します。
authmechanism 属性によって、ocfserv がユーザーを認証するために使用するメカニズムを定義します。
authmechanism = Pin Password |
Pin
ユーザー認証のメカニズムとして、ホストへのログイン時に PIN の入力を求めます。ユーザーは、スマートカードに組み込まれた PIN と同じ PIN を入力する必要があります。
Password
この認証メカニズムでは、ホストがスマートカード上のパスワードを読み込み、このパスワードが自身のパスワードデータベース (NIS、NIS+、またはローカルファイル) に存在することを確認することによってユーザーを認証します。カード上にパスワードが存在しない場合、ocfserv はユーザーにパスワードの入力を要求し、入力されたパスワードをホストのパスワードデータベースにあるパスワードと照合します。
ChallengeResponse
Solaris スマートカードのデフォルトの認証メカニズムは、Pin パスワード方式です (「スマートカードによるログイン」を参照)。
認証メカニズムを変更しようとしているホストにスーパーユーザーとしてログインします。
たとえば次のように入力して、認証メカニズムを ChallengeResponse に変更します。
# smartcard -c admin -x modify authmechanism=ChallengeResponse |
smartcard -c admin と入力すると、結果が表示されます。この場合は、challenge-response メカニズムが追加されていることを確認できます。
authmechanism = ChallengeResponse |
サーバーの認証メカニズムは、明示的に challenge-response に設定しない限り、PIN パスワード方式になります (デフォルト)。challenge-response とは、ホストとスマートカードの間で発生する対話のことです。smartcard -c init を使ってカードにユーザー情報を追加すると、ホストは自動的に対象鍵 (DES キー) を生成し、そのコピーをカードに追加します。さらに、この対象鍵を /etc/smartcard/.keys ファイルに保管します。「複数のホストでのスマートカードの使用準備」を参照してください。
ocfserv で challenge-response 方式の認証を使用するように設定すると、ホストは乱数を生成し、リーダーに挿入されているカードにその乱数を送って質問 (challenge) を開始します。これに対するカードの応答 (response) は対象鍵を使って生成されるため、ホストはそれが正しいかどうかを判断できます。
OpenCard.terminals 属性は、そのホスト用に設定されたカードリーダーを定義します。たとえば、Sun Smart Card Reader I が接続されたホストの OpenCard.terminals の値は、次のようになります。
OpenCard.terminals = com.sun.terminal.scm. CMstcCardTerminalFactory|MySCM|SunSCRI dev/cua/b |
ここで OpenCard.terminals は、Sun Smart Card Reader I を現在設定されているリーダーとして定義しています。カードリーダーを追加すると、smartcard -c admin で表示される OpenCard.terminals 属性が表示されます。カードリーダーの追加については、「カードリーダーの設定」を参照してください。
ocfserv.protocol 属性は、ocfserv が使用する TCP/IP プロトコルを定義します。
ocfserv.protocol = rpc |
ocfserv は、遠隔手続き呼び出し (RPC) プロトコルを使用します。この値は変更しないでください。
リセットに対する回答 (Answer To Reset: ATR) 属性には、スマートカードのメーカーによって定義された数値が含まれています。Solaris スマートカードがサポートするカードには、次の ATR 属性が定義されています。
PayFlex.ATR = 3B6900005792020101000100A9 3B69110000005792020101000100 IButton.ATR = 008F0E0000000000000000000004000034909000 CyberFlex.ATR =3B169481100601810F 3B169481100601811F |
ATR の異なる新しいカードタイプがカードメーカーから発売されない限り、ATR 属性を変更する必要はありません。これについては、「ATR 属性を変更するには」を参照してください。
この属性は、認証モジュールが入った Java クラスディレクトリの位置を定義します。
authservicelocations = com.sun.opencard.service.auth |
この値は変更しないでください。
これは、カード固有のモジュールが配置される Java クラスディレクトリです。スマートカードタイプごとに、次のように定義されたモジュールが含まれています。
OpenCard.services = com.sun.opencard.service. cyberflex.CyberFlexServiceFactory ` com.sun.opencard.service.ibutton. IButtonServiceFactory com.sun.opencard.service.payflex. PayFlexServiceFactory |
これらの値を変更することはめったにありません。値を変更しなければならない場合は、smartcard(1M) のマニュアルページで詳しい説明を確認してください。
この属性は、アプレット初期設定機能が入った Java クラスディレクトリの位置を定義します。
initializerlocations = com.sun.opencard.cmd.IButtonInit |
この値は変更しないでください。
この属性は、カードサービスモジュールが配置されている Java クラスディレクトリの位置を定義します。
cardservicelocations = com.sun.opencard.service.common |
この値は変更しないでください。
ocfserv には、次のような 2 種類のロケール固有属性を定義できます。
country = US language = en |
ロケール固有の情報を変更しようとしているホストにスーパーユーザーとしてログインします。
次のように入力して、このホストに適する国を指定します。
# smartcard -c admin -x modify country=country_code |
country_code には、このホストに適する 2 文字の国コードが入ります。
次のように入力して、このホストに適する言語を指定します。
# smartcard -c admin -x modify language=language_code |
language_code には、このホストのロケールに適する 2 文字の言語コードが入ります。
このデバッグ属性を設定すると、ホスト上でスマートカードの動作をデバッグできます。指定によって、Solaris スマートカードは、標準的なデバッグ機能と詳細なトレース機能を提供します。デフォルトでは、ocfserv には次のデバッグ属性が定義されています。
debugging.filename = /tmp/ocf_debugfile debugging = 0 OpenCard.trace |
/tmp/ocf_debugfile はデバッグ情報が入ったファイルの名前です。
デフォルトのデバッグレベル 0 は、デバッグがオフになっていることを示しています。レベル 1 はデバッグがオンになっていることを示しています。
次のように入力して、デバッグを有効にします。
# smartcard -c admin -x modify debugging=1 |
(オプション) 次のように入力して、ocfserv のデバッグファイルの位置を変更します。
# smartcard -c admin -x modify debugging.filename=filename |
この場合の filename は、デバッグファイルの完全修飾名です。
(オプション) 次のように入力して、ocfserv によるオープンカードシステムのトレースを開始します。
# smartcard -t debug debug_level |
この場合の debug_level は、0 〜 9 の値になります。
Solaris スマートカードのデバッグに関する完全な情報については、smartcard(1M) のマニュアルページを参照してください。
クライアント属性では、dtlogin などのアプリケーションプログラムのセキュリティ条件がホストで処理されるときの方式を定義します。
defaultcard と validcards という 2 種類のカード属性によって、ホスト上のクライアントアプリケーションへのログインに使用するスマートカードタイプを指定します。
validcards 属性では、特定のアプリケーションに、有効なすべてのスマートカードタイプを指定します。一方、defaultcard では、defaultcard で定義されたカードの読み込みが完了するまで、アプリケーションが待機するように指定できます。
たとえば、アプリケーション B の validcards 属性に、iButton、Cyberflex、CardA を指定した場合を想定してください。さらに、defaultcard 属性には Cyberflex を指定します。ここで、アプリケーション B がデフォルトのカードだけを受け付けており、ユーザーがカード A を使ってアプリケーション B にログインしようとする場合、ホストは次のメッセージを表示します。
Waiting for Default Card |
アプリケーション B へのログインは、ユーザーがリーダーに Cyberflex を挿入するまでブロックされます。
smartcard -c admin を実行すると、次の値が表示されます。
default.validcards = CyberFlex IButton PayFlex |
スーパーユーザーとしてログインします。
次のように入力して、デフォルトの有効なカードを変更します。
# smartcard -c admin -a default -x modify validcards= ¥ - "IButton|CyberFlex |PayFlex" |
この場合の IButton|CyberFlex|PayFlex は、これらの値のいずれか 1 つ、またはその組み合わせを示しています。
たとえば、すべてのアプリケーションに対して有効なスマートカードとして、CyberFlex と PayFlex を定義するには、次のように入力します。
# smartcard -c admin -a default -x modify validcards= ¥ "CyberFlex Payflex" |
次のように入力して、デフォルトのスマートカードタイプをアプリケーションに割り当てます。
# smartcard -c admin -a application_name -x add defaultcard=card_name |
application_name は、デフォルトのスマートカードを定義しようとしているアプリケーションです。
card_name は、このアプリケーションにログインするために使用するカードタイプです。CyberFlex、PayFlex、または IButton のいずれかになります。
たとえば、iButton をホストのデスクトップのデフォルトカードタイプとして定義するには、次のように入力します。
# smartcard -c admin -a dtlogin -x add defaultcard=IButton |
その後、smartcard -c admin を実行すると、次のクライアント属性が表示されます。
dtlogin.defaultcard = IButton default.validcards = CyberFlex PayFlex |
Solaris スマートカードには、クライアントアプリケーションプログラムが使用する認証メカニズムを定義する authmechanism 属性が用意されています。この default.authmechanism 属性は、すべてのクライアントアプリケーションのデフォルトの認証メカニズムを指定します。デフォルトでは、このメカニズムは Pin=UserPin です。authmechanism 属性では、特定のクライアントアプリケーションで使用する認証メカニズムも定義できます。
変更しようとしている属性を持つホストにスーパーユーザーとしてログインします。
次のように 1 行に入力して、デフォルトの認証メカニズムを変更します。
# smartcard -c admin -a default -x modify ¥ authmechanism="Pin| Password|ChallengeResponse" |
この場合、Pin| Password|ChallengeResponse は、これらの値のいずれか 1 つ、またはその組み合わせとなります。
たとえば、クライアントプログラムのデフォルトの認証メカニズムとして Pin と Password の両方を指定したい場合、次のように入力します。
# smartcard -c admin -a default -x modify "authmechanism=Pin Password" |
その後、smartcard -c admin と入力すると、次のデフォルト認証メカニズムが表示されます。
default.authmechanism = Pin Password |
割り当てられたクライアント認証メカニズムと、ocf.server.authmechanism に割り当てられた認証メカニズムが一致しない場合、クライアント認証メカニズムの方が優先されます。
application_name.authmechanism 属性によって、特定のアプリケーションに固有の認証メカニズムを割り当てることができます。
ホストにスーパーユーザーとしてログインします。
次のように入力して、クライアントプログラムに認証メカニズムを割り当てます。
# smartcard -c admin -a application_name -x modify authmechanism=mechanism |
application_name は、固有の認証メカニズムを必要とするアプリケーションです。
mechanism は、使用するメカニズムです。Pin、Password、ChallengeResponse またはこれら 3 種の組み合わせです。
たとえば、次のように入力すると、ユーザーがログインする前に、デスクトップがスマートカードを使った challenge-response の会話を要求するように設定できます。
# smartcard -c admin -a dtlogin -x modify authmechanism="ChallengeResponse" |
以後、smartcard -c admin を実行すると、次の属性が表示されます。
dtlogin.authmechanism = ChallengeResponse |
デフォルトアプレット ID (AID) 属性とは、すべてのアプリケーションを対象に実行されるデフォルトのスマートカードアプレットに割り当てられた ID 番号です。smartcard -c admin によって表示されるデフォルト ID 番号は、次のとおりです。
default.defaultaid = A000000062030400 |
この値は、Solaris スマートカードがデフォルトで実行するアプレット、SolarisAuthApplet の AID です。
サイト専用にカスタマイズされたアプレットに置き換える必要がない場合は、この defaultaid 属性を変更する必要はありません。変更する場合は、参考のために smartcard(1M) のマニュアルページを参照してください。