Solaris スマートカードの管理

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

個々のスマートカードに属性を設定するときは、ユーザーの要求、サイトのセキュリティポリシー、使用するスマートカードのタイプによる制限を考慮する必要があります。第 2 章「スマートカードをサポートするホストの設定」では、ホストで実行されている ocfserv サーバーとクライアントアプリケーションに属性を定義しました。smartcard -c init コマンドを使って、対応する属性を個別のスマートカードに定義します。ホスト上のクライアントとサーバープログラムは、スマートカード上の属性を読み込んで、特定のアプリケーションに対するアクセス権をユーザーに許可するかどうかを判定します。

表 3-1 スマートカードで初期化できる属性

属性 

サポートするカードタイプ 

説明 

PIN 

すべて 

暗証番号。「PIN 属性」を参照

パスワード 

すべて 

ユーザーのパスワード (ホストまたはドメインのパスワードデータベースにあるパスワードと同じ)。「ユーザーとパスワードの属性」を参照

ユーザー 

すべて 

ユーザーのアカウント名 (ホストまたはドメインのパスワードデータベースにあるアカウント名と同じ)。「ユーザーとパスワードの属性」を参照

アプリケーション 

すべて 

このスマートカード上の情報を使ってログインするようにユーザーに要求するアプリケーション。「アプリケーション属性」を参照

非公開鍵 

Cyberflex iButton 

ファイルに署名する際に使用する非公開鍵。「非公開鍵属性」を参照

証明書 

Cyberflex iButton 

設定可能な属性であるが、Solaris スマートカードには証明書用に定義されたインタフェースは用意されていない。詳細については、smartcard(1M) のマニュアルページを参照


注 -

これらの属性は、Solaris スマートカードの SolarisAuthApplet を使って初期化されたカードにのみ適用されます。サイトが別のスマートカードアプレットを使っている場合、利用可能な属性が異なる場合があります。詳細については、smartcard(1M) のマニュアルページを参照してください。


PIN 属性

PIN 属性は、そのカードの暗証番号 (PIN) を定義する、スマートカード上の認証属性です。smartcard -c load コマンドによって、デフォルトの PIN $$$$java がカードに作成されます。管理者やユーザーは、$$$$java を個人用 PIN に変更できます。サイトで使用する際は、changeme のようなデフォルトの PIN 名または同様のシーケンスを持つカードをユーザーに配布してください。「スマートカード上の PIN を変更するには」で説明されているように、ユーザーは後でこの PIN を変更できます。


注 -

スマートカード上には、ユーザー名とパスワードの組み合わせを複数定義できます。ただし、PIN は 1 つしか定義できません。


スマートカードの PIN を初期化するには

この手順は、Solaris スマートカードがサポートするすべてのカードに当てはまります。この手順を繰り返すことで、複数のスマートカードの PIN 属性を同時に初期化できます。

  1. スマートカードの初期化を行うホストにスーパーユーザーとしてログインします。

  2. 初期化しようとしているスマートカードがリーダーに挿入されていることを確認します。

  3. 次のように入力して、そのカードの PIN を設定します。


    # smartcard -c init -A A000000062030400 -P `PIN_number' 
    

    この場合、PIN_number は、ユーザーの ID 確認に必要な、カードに設定しようとしている PIN 番号を表しています。

PIN 属性の機能

ocfserv と個々のアプリケーションのデフォルトの認証メカニズムは、PIN パスワード方式です。この場合、ユーザーがデスクトップのようなアプリケーションにログインしようとすると、アプリケーションはユーザーに PIN の入力を要求します。

ocfserv サーバーは、ユーザーが入力した PIN とスマートカードの PIN を照合して、ユーザーが本人であることを確認します。これらの PIN が一致すると、ユーザーにアプリケーションへのアクセスが許可されます。許可されない場合は、ocfserv がカードに補助認証属性を読み込みます。

ユーザーとパスワードの属性

ユーザーとパスワードの属性は、カードにある補助認証属性です。これらの属性はユーザーを特定し、そのユーザーとスマートカードの PIN を関連付けます。これらの属性を設定する前に、サイトでスマートカードを使用するすべてのユーザーを対象に、ユーザーアカウントとアカウントに関連付けられたパスワードを取得する必要があります。

スマートカードのパスワードを初期化するには

この手順は、Solaris スマートカードがサポートするすべてのスマートカードデバイスに当てはまります。この手順を繰り返すことで、複数のスマートカードのユーザーとパスワードの属性を同時に初期化できます。

  1. スマートカードを初期化するホストにスーパーユーザーとしてログインします。

  2. 初期化しようとしているスマートカードがリーダーに挿入されていることを確認します。

  3. 次のように 1 行に入力して、そのカードのユーザー名とパスワードを設定します。


    # smartcard -c init -A A000000062030400 -P `PIN_number' user=user_name ¥
    password=user_password application=application_name
    

    • PIN_number - カードに割り当てられた PIN を表しています。ユーザーの ID を確認するために必要です。

    • user_name - 個人の UNIX ログイン名です。

    • user_password - user_name に関連付けられたパスワードです。このパスワードは、ホストの /etc/nsswitch.conf ファイル ( NIS、NIS+、またはローカルファイル) によって定義されたパスワードデータベースの中に存在する必要があります。

    • application= application_name - この PIN とパスワードを使ったスマートカードによるログインを要求するアプリケーションを指定します。

ユーザーとパスワードの属性の機能

PIN パスワード方式 (デフォルトの認証メカニズム) を使用しているホストでは、ocfserv は、「PIN 属性の機能」で説明されているように、PIN が本物であることを確認します。さらに、ocfserv は、カードのユーザーとパスワードの属性を読み込みます。スマートカードのパスワードが、ホストのパスワードデータベースにあるパスワードと一致すると、ユーザーにアプリケーションへのアクセスが許可されます。

1 つのスマートカードにユーザーとパスワードの組み合わせを複数定義することができます。たとえば、スマートカードの所有者が、別のアプリケーションにアクセスするために、異なるユーザー名とパスワードを必要とする場合があります。さらに、システム管理者については、標準のユーザー名とパスワードの他に、カードのスーパーユーザーとしてのパスワードを定義できます。ただし、スマートカードには、1 つの PIN しか定義できません。

アプリケーション属性

アプリケーション属性を使うと、特定のユーザー名とパスワードを使ってログインする必要があるアプリケーションを指定できます。たとえば、スマートカードを使ってデスクトップにログインする必要がある場合、カードのユーザー名とパスワードに関連付けられたアプリケーションとして、dtlogin を指定する必要があります。また、財務パッケージや人事データベースのようなサイト固有のアプリケーションの名前をアプリケーション属性として指定することによって、このアプリケーションへのスマートカードベースのログインを要求することもできます。

カード上のアプリケーションを初期化する前に、スマートカードによる認証を使ってアクセスする必要があるアプリケーションを調べておきます。root (スーパーユーザー) など、一般のユーザーには使用が制限されているユーザー名でアプリケーションにログインする必要があるユーザー (システム管理者など) のスマートカードを用意する場合は、この作業が特に重要です。

スマートカードのアプリケーションを初期化するには

この手順は、Solaris スマートカードがサポートするすべてのスマートカードデバイスに当てはまります。この手順を繰り返すことで、複数のスマートカードのアプリケーション属性を同時に初期化できます。

  1. スマートカードを初期化するマシンにスーパーユーザーとしてログインします。

  2. 初期化しようとしているスマートカードがリーダーに挿入されていることを確認します。

  3. 次のように 1 行に入力して、そのスマートカードのアプリケーションを初期化します。


    # smartcard -c init -A A000000062030400 -P `PIN_number' user=user_name ¥
    password=user_password application=application_name
    

    • -P PIN - このカードに割り当てられた PIN です。

    • user=user_name - このアプリケーションにログインする際に使用するユーザー名を定義します。

    • password=password - このアプリケーションにログインする際に使用するパスワードを定義します。

    • application= application_name - この PIN とパスワードを使ったスマートカードによるログインが必要なアプリケーションを指定します。

アプリケーション属性の機能

カードのアプリケーション属性は、3 種類の認証属性とともに機能します。たとえば、Frank というユーザーのスマートカードに、次のような情報を付けて初期化する場合を想定してください。


# smartcard -c init -A A000000062030400 -P `$$$$java' application=dtlogin ¥
user=frank password=changeme

Frank が自分のカードをリーダーに挿入して、ホスト (dtlogin) にログインしようとすると、ocfserv サーバーによってカードの内容が読み込まれ、認証属性が dtlogin に関連付けられているかどうかのチェックが行われます。

ユーザーとパスワードの属性が dtlogin に関連付けられていることを検出した ocfserv は、Frank に PIN の入力を要求し、入力された PIN と、dtlogin アプリケーションに割り当てられたスマートカード上の PIN 属性を照合します。さらに、ホストのパスワードデータベースにあるパスワードと Frank のカード上の情報 (ユーザー名とパスワード) を照合して、Frank が本人であることを確認します。これらの属性が一致すると、Frank にデスクトップへのログインが許可されます。

非公開鍵属性

Solaris スマートカードのこの機能を使用するには、認証管理インフラストラクチャ (AMI) のような公開鍵インフラストラクチャ (PKI) を使ってサイトを設定する必要があります。


注 -

1 枚のスマートカードには、1 つの非公開鍵しか格納できません。


スマートカードの非公開鍵を初期化するには

この手順は、Java ベースの iButton と Cyberflex のスマートカードに当てはまります。Payflex のカードには非公開鍵を格納できません。

  1. PKI 用の適切なコマンドを使用して、ユーザー用に 1 組の公開 / 非公開鍵を作成します。

  2. 鍵の組み合わせのうち、非公開鍵の部分を別のファイルにエクスポートします。

    非公開鍵属性を設定する際にこのファイルの完全修飾パス名を指定する必要があるので、そのパス名を記録します。

  3. スマートカードの初期化に使用するマシンにスーパーユーザーとしてログインします。

  4. カードをスマートカードリーダーに挿入します。

  5. 次のように入力して、Java セキュリティディレクトリにアクセスします。


    # /usr/java1.2/jre/lib/security
    
  6. java.security ファイルを編集します。

  7. ファイル内で、security.provider 定義を探します。


     This is the "master security properties file".
    #
    .
    .
    # Each provider must implement a subclass of the Provider class.
    # To register a provider in this master security properties file,
    # specify the Provider subclass name and priority in the format
    #
    security.provider.<n>=<className>
    

  8. コメント記号 (#) が security.provider.<n>=<className> の前に置かれていることを確認します。

  9. 次のようにファイルを編集します。


    # Each provider must implement a subclass of the Provider class.
    # To register a provider in this master security properties file,
    # specify the Provider subclass name and priority in the format
    #
    #    security.provider.<n>=<className>
    security.provider.2=com.sun.ami.common.SunAMI
    

  10. 次のように入力してサーバーを再起動します。


    # /etc/init.d/ocfserv stop
    # /etc/init.d/amiserv stop
    # /etc/init.d/ocfserv start
    # /etc/init.d/amiserv start
    

  11. 次のように 1 行に入力して、カードを初期化します。


    # smartcard -c init -A A000000062030400 -P `PIN_number' privatekey=keyfile_name 
    

    • PIN_number - カードに割り当てられた PIN を表します。

    • keyfile_name - ユーザーの非公開鍵が入ったファイルのフルパス名です。


注 -

SolarisAuthApplet では、証明書属性の完全な実装は提供されていません。


非公開鍵属性の機能

カードの PIN とパスワードを認証すると、ocfserv サーバーは keyfile_name で指定されたファイルをスマートカードにコピーします。以後、追加的な認証としてデータに署名するとき、この非公開鍵を利用できます。ユーザーがデータに署名するコマンド (AMI では amisign) を実行すると、非公開鍵により、スマートカード上に署名付きデータが作成されます。

サイトポリシーによっては、ユーザーの非公開鍵ファイルをホストから削除したい場合があります。削除すると、その非公開鍵はユーザーのスマートカード上にしか存在しないことになります。