Solaris スマートカードの管理

スマートカードの属性の設定

Solaris スマートカードを使用する際は、ocfserv サーバーとクライアントアプリケーションの機能を定義する目的で、ホストごとに属性を設定する必要があります。カードリーダーの設定後、各ホストに Solaris 8 ソフトウェアをインストールするときに、デフォルトのスマートカードの属性のセットを再検討してください。次のような場合は、属性を変更する必要があります。

スマートカードの属性を確認するには
  1. 設定しようとしているホストにスーパーユーザーとしてログインします。

  2. 次のように入力して、設定可能な属性を表示させます。


    # 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"

サーバー認証メカニズム属性

authmechanism 属性によって、ocfserv がユーザーを認証するために使用するメカニズムを定義します。


 authmechanism  = Pin Password

可能な認証メカニズムは次の通りです。

Solaris スマートカードのデフォルトの認証メカニズムは、Pin パスワード方式です (「スマートカードによるログイン」を参照)。

デフォルトの認証メカニズムを変更するには
  1. 認証メカニズムを変更しようとしているホストにスーパーユーザーとしてログインします。

  2. たとえば次のように入力して、認証メカニズムを ChallengeResponse に変更します。


    # smartcard -c admin -x modify authmechanism=ChallengeResponse
    

    smartcard -c admin と入力すると、結果が表示されます。この場合は、challenge-response メカニズムが追加されていることを確認できます。


    authmechanism  = ChallengeResponse

challenge-response 認証の機能

サーバーの認証メカニズムは、明示的に 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 属性を変更するには」を参照してください。

authservicelocations 属性

この属性は、認証モジュールが入った 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) のマニュアルページで詳しい説明を確認してください。

initializerlocations 属性

この属性は、アプレット初期設定機能が入った Java クラスディレクトリの位置を定義します。


initializerlocations      = com.sun.opencard.cmd.IButtonInit

この値は変更しないでください。

カードサービス位置属性

この属性は、カードサービスモジュールが配置されている Java クラスディレクトリの位置を定義します。


cardservicelocations      = com.sun.opencard.service.common

この値は変更しないでください。

ロケール固有属性

ocfserv には、次のような 2 種類のロケール固有属性を定義できます。


country                   = US
language                  = en

スマートカードホストのデフォルトのロケールを変更するには
  1. ロケール固有の情報を変更しようとしているホストにスーパーユーザーとしてログインします。

  2. 次のように入力して、このホストに適する国を指定します。


    # smartcard -c admin -x modify country=country_code
    

    country_code には、このホストに適する 2 文字の国コードが入ります。

  3. 次のように入力して、このホストに適する言語を指定します。


    # smartcard -c admin -x modify language=language_code
    

    language_code には、このホストのロケールに適する 2 文字の言語コードが入ります。

デバッグ属性

このデバッグ属性を設定すると、ホスト上でスマートカードの動作をデバッグできます。指定によって、Solaris スマートカードは、標準的なデバッグ機能と詳細なトレース機能を提供します。デフォルトでは、ocfserv には次のデバッグ属性が定義されています。


debugging.filename        = /tmp/ocf_debugfile
debugging                 = 0
OpenCard.trace

ocfserv デバッグを有効化するには
  1. ocfserv をデバッグしようとしているホストにスーパーユーザーとしてログインします。

  2. 次のように入力して、デバッグを有効にします。


    # smartcard -c admin -x modify debugging=1
    
  3. (オプション) 次のように入力して、ocfserv のデバッグファイルの位置を変更します。


    # smartcard -c admin -x modify debugging.filename=filename
    

    この場合の filename は、デバッグファイルの完全修飾名です。

  4. (オプション) 次のように入力して、ocfserv によるオープンカードシステムのトレースを開始します。


    # smartcard -t debug debug_level
    

    この場合の debug_level は、0 〜 9 の値になります。


注 -

Solaris スマートカードのデバッグに関する完全な情報については、smartcard(1M) のマニュアルページを参照してください。


クライアント属性

クライアント属性では、dtlogin などのアプリケーションプログラムのセキュリティ条件がホストで処理されるときの方式を定義します。

クライアントアプリケーション属性に関するデフォルトのカードタイプ

defaultcardvalidcards という 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

アプリケーションの有効なスマートカードを変更するには
  1. スーパーユーザーとしてログインします。

  2. 次のように入力して、デフォルトの有効なカードを変更します。


    # 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"
    

アプリケーションにデフォルトのスマートカードを割り当てるには
  1. クライアント属性を変更しようとしているホストにスーパーユーザーとしてログインします。

  2. 次のように入力して、デフォルトのスマートカードタイプをアプリケーションに割り当てます。


    # smartcard -c admin -a application_name -x add defaultcard=card_name
    

    • application_name は、デフォルトのスマートカードを定義しようとしているアプリケーションです。

    • card_name は、このアプリケーションにログインするために使用するカードタイプです。CyberFlexPayFlex、または 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. 変更しようとしている属性を持つホストにスーパーユーザーとしてログインします。

  2. 次のように 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 属性によって、特定のアプリケーションに固有の認証メカニズムを割り当てることができます。

  1. ホストにスーパーユーザーとしてログインします。

  2. 次のように入力して、クライアントプログラムに認証メカニズムを割り当てます。


    # 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 属性

デフォルトアプレット ID (AID) 属性とは、すべてのアプリケーションを対象に実行されるデフォルトのスマートカードアプレットに割り当てられた ID 番号です。smartcard -c admin によって表示されるデフォルト ID 番号は、次のとおりです。


default.defaultaid        = A000000062030400

この値は、Solaris スマートカードがデフォルトで実行するアプレット、SolarisAuthApplet の AID です。

サイト専用にカスタマイズされたアプレットに置き換える必要がない場合は、この defaultaid 属性を変更する必要はありません。変更する場合は、参考のために smartcard(1M) のマニュアルページを参照してください。