この章では、スマートカードを初期化する方法、つまりカードをセキュリティドメインで使えるようにする方法について説明します。Solaris スマートカードは、3 種類のスマートカードをサポートしています。
Cyberflex
Payflex
iButton
必要なインフラストラクチャをスマートカードに作成する作業
スマートカードをユーザー用に専用化する属性を設定する作業
スマートカードを設定する最初の手順では、必要なインフラストラクチャをカードにダウンロードする必要があります。セキュリティドメイン構成のサイトでは、個々のホスト上またはユーザーのマシン上でスマートカードを準備することができます。バッチオフィス構成のサイトでは、専用ホストに接続されたリーダーで、すべてのスマートカードを用意します。
スマートカードの初期化に使用するホストマシンを、あらかじめスマートカード用に設定しておく必要があります。まだそのように設定していない場合は、第 2 章「スマートカードをサポートするホストの設定」を参照してください。
コマンドを使って、Solaris スマートカードがサポートするすべてのタイプのカードにインフラストラクチャを読み込ませることができます。
カードをリーダーに挿入します。
スマートカードの初期化に使用するマシンにスーパーユーザーとしてログインします。
Solaris スマートカードの capx ファイルを読み込んでから、次のように入力し、カードのインフラストラクチャを設定します。
# smartcard -c load -i /usr/share/lib/smartcard/SolarisAuthApplet.capx |
smartcard -c load がインフラストラクチャの作成を完了すると、次のメッセージが表示されます。
処理が成功しました。 |
カードのインフラストラクチャが読み込まれたら、個人用にスマートカードを初期化します。Solaris スマートカードには、スマートカード上で特定ユーザー用に設定できる属性のセットが入っています。
スマートカードをカードリーダーに挿入します。
ホストにログインします。
# smartcard -c init -A A000000062030400 -L |
-A オプションより、smartcard -c init は、AID A000000062030400 を使ったアプレットから設定可能な属性を一覧表示します。この AID は、「カードのインフラストラクチャを読み込むには」で紹介した、デフォルトの SolarisAuthApplet.capx ファイルを指定しています。
smartcard -c init を使って、次の属性を一覧表示できます。
pin: enter pin application: enter application name user: enter user name password: enter password privatekey: please enter file path certificate: please enter file path |
個々のスマートカードに属性を設定するときは、ユーザーの要求、サイトのセキュリティポリシー、使用するスマートカードのタイプによる制限を考慮する必要があります。第 2 章「スマートカードをサポートするホストの設定」では、ホストで実行されている ocfserv サーバーとクライアントアプリケーションに属性を定義しました。smartcard -c init コマンドを使って、対応する属性を個別のスマートカードに定義します。ホスト上のクライアントとサーバープログラムは、スマートカード上の属性を読み込んで、特定のアプリケーションに対するアクセス権をユーザーに許可するかどうかを判定します。
表 3-1 スマートカードで初期化できる属性
属性 |
サポートするカードタイプ |
説明 |
---|---|---|
PIN |
すべて |
暗証番号。「PIN 属性」を参照 |
パスワード |
すべて |
ユーザーのパスワード (ホストまたはドメインのパスワードデータベースにあるパスワードと同じ)。「ユーザーとパスワードの属性」を参照 |
ユーザー |
すべて |
ユーザーのアカウント名 (ホストまたはドメインのパスワードデータベースにあるアカウント名と同じ)。「ユーザーとパスワードの属性」を参照 |
アプリケーション |
すべて |
このスマートカード上の情報を使ってログインするようにユーザーに要求するアプリケーション。「アプリケーション属性」を参照 |
非公開鍵 |
Cyberflex iButton |
ファイルに署名する際に使用する非公開鍵。「非公開鍵属性」を参照 |
証明書 |
Cyberflex iButton |
設定可能な属性であるが、Solaris スマートカードには証明書用に定義されたインタフェースは用意されていない。詳細については、smartcard(1M) のマニュアルページを参照 |
これらの属性は、Solaris スマートカードの SolarisAuthApplet を使って初期化されたカードにのみ適用されます。サイトが別のスマートカードアプレットを使っている場合、利用可能な属性が異なる場合があります。詳細については、smartcard(1M) のマニュアルページを参照してください。
PIN 属性は、そのカードの暗証番号 (PIN) を定義する、スマートカード上の認証属性です。smartcard -c load コマンドによって、デフォルトの PIN $$$$java がカードに作成されます。管理者やユーザーは、$$$$java を個人用 PIN に変更できます。サイトで使用する際は、changeme のようなデフォルトの PIN 名または同様のシーケンスを持つカードをユーザーに配布してください。「スマートカード上の PIN を変更するには」で説明されているように、ユーザーは後でこの PIN を変更できます。
スマートカード上には、ユーザー名とパスワードの組み合わせを複数定義できます。ただし、PIN は 1 つしか定義できません。
この手順は、Solaris スマートカードがサポートするすべてのカードに当てはまります。この手順を繰り返すことで、複数のスマートカードの PIN 属性を同時に初期化できます。
スマートカードの初期化を行うホストにスーパーユーザーとしてログインします。
初期化しようとしているスマートカードがリーダーに挿入されていることを確認します。
次のように入力して、そのカードの PIN を設定します。
# smartcard -c init -A A000000062030400 -P `PIN_number' |
この場合、PIN_number は、ユーザーの ID 確認に必要な、カードに設定しようとしている PIN 番号を表しています。
ocfserv と個々のアプリケーションのデフォルトの認証メカニズムは、PIN パスワード方式です。この場合、ユーザーがデスクトップのようなアプリケーションにログインしようとすると、アプリケーションはユーザーに PIN の入力を要求します。
ocfserv サーバーは、ユーザーが入力した PIN とスマートカードの PIN を照合して、ユーザーが本人であることを確認します。これらの PIN が一致すると、ユーザーにアプリケーションへのアクセスが許可されます。許可されない場合は、ocfserv がカードに補助認証属性を読み込みます。
ユーザーとパスワードの属性は、カードにある補助認証属性です。これらの属性はユーザーを特定し、そのユーザーとスマートカードの PIN を関連付けます。これらの属性を設定する前に、サイトでスマートカードを使用するすべてのユーザーを対象に、ユーザーアカウントとアカウントに関連付けられたパスワードを取得する必要があります。
この手順は、Solaris スマートカードがサポートするすべてのスマートカードデバイスに当てはまります。この手順を繰り返すことで、複数のスマートカードのユーザーとパスワードの属性を同時に初期化できます。
スマートカードを初期化するホストにスーパーユーザーとしてログインします。
初期化しようとしているスマートカードがリーダーに挿入されていることを確認します。
次のように 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 行に入力して、そのスマートカードのアプリケーションを初期化します。
# 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 |
-A A000000062030400 - SolarisAuthApplet です。
-P `$$$$java' - このカードの PIN です。ここではデフォルトの PIN が指定されています。ユーザー Frank は、後でこの PIN を変更できます。
application=dtlogin - スマートカードによるログインを要求するアプリケーションです。
user=frank - Frank がデスクトップ (dtlogin アプリケーション) にログインするために入力する名前です。
password=changeme - Frank がデスクトップにログインするために入力しなければならないパスワードです。
Frank が自分のカードをリーダーに挿入して、ホスト (dtlogin) にログインしようとすると、ocfserv サーバーによってカードの内容が読み込まれ、認証属性が dtlogin に関連付けられているかどうかのチェックが行われます。
ユーザーとパスワードの属性が dtlogin に関連付けられていることを検出した ocfserv は、Frank に PIN の入力を要求し、入力された PIN と、dtlogin アプリケーションに割り当てられたスマートカード上の PIN 属性を照合します。さらに、ホストのパスワードデータベースにあるパスワードと Frank のカード上の情報 (ユーザー名とパスワード) を照合して、Frank が本人であることを確認します。これらの属性が一致すると、Frank にデスクトップへのログインが許可されます。
Solaris スマートカードのこの機能を使用するには、認証管理インフラストラクチャ (AMI) のような公開鍵インフラストラクチャ (PKI) を使ってサイトを設定する必要があります。
1 枚のスマートカードには、1 つの非公開鍵しか格納できません。
この手順は、Java ベースの iButton と Cyberflex のスマートカードに当てはまります。Payflex のカードには非公開鍵を格納できません。
PKI 用の適切なコマンドを使用して、ユーザー用に 1 組の公開 / 非公開鍵を作成します。
鍵の組み合わせのうち、非公開鍵の部分を別のファイルにエクスポートします。
非公開鍵属性を設定する際にこのファイルの完全修飾パス名を指定する必要があるので、そのパス名を記録します。
スマートカードの初期化に使用するマシンにスーパーユーザーとしてログインします。
カードをスマートカードリーダーに挿入します。
次のように入力して、Java セキュリティディレクトリにアクセスします。
# /usr/java1.2/jre/lib/security |
ファイル内で、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> |
コメント記号 (#) が security.provider.<n>=<className> の前に置かれていることを確認します。
次のようにファイルを編集します。
# 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 |
次のように入力してサーバーを再起動します。
# /etc/init.d/ocfserv stop # /etc/init.d/amiserv stop # /etc/init.d/ocfserv start # /etc/init.d/amiserv start |
次のように 1 行に入力して、カードを初期化します。
# smartcard -c init -A A000000062030400 -P `PIN_number' privatekey=keyfile_name |
PIN_number - カードに割り当てられた PIN を表します。
keyfile_name - ユーザーの非公開鍵が入ったファイルのフルパス名です。
SolarisAuthApplet では、証明書属性の完全な実装は提供されていません。
カードの PIN とパスワードを認証すると、ocfserv サーバーは keyfile_name で指定されたファイルをスマートカードにコピーします。以後、追加的な認証としてデータに署名するとき、この非公開鍵を利用できます。ユーザーがデータに署名するコマンド (AMI では amisign) を実行すると、非公開鍵により、スマートカード上に署名付きデータが作成されます。
サイトポリシーによっては、ユーザーの非公開鍵ファイルをホストから削除したい場合があります。削除すると、その非公開鍵はユーザーのスマートカード上にしか存在しないことになります。
smartcard -c init コマンドを実行してユーザーのスマートカードを初期化すると、ホスト上とスマートカード上に対称鍵が作成されます。ocfserv は、ホストに設定されているすべての秘密鍵に関する情報が入った /etc/smartcard/.keys というファイルを作成します。ユーザーが、スマートカードを作成したホスト以外のホストにアクセスしなければならない場合、アクセスする必要があるすべてのホストに、/etc/smartcard/.keys ファイルをエクスポートする必要があります。
カードが作成されたホストから /etc/smartcard/.keys ファイルをエクスポートするには、この手順を使います。
カードが作成されたホストにスーパーユーザーとしてログインします。
バッチオフィス構成のサイトでは、このユーザーの鍵 (/etc/smartcard/.keys で表示) だけが入った専用の鍵ファイルを作成します。
次のように入力して、/etc/smartcard/.keys をエクスポートします。
# smartcard -c admin -k challenge_response -E -o key_file_name |
この場合、key_file_name は、個別ユーザーの対称鍵が入ったファイルの名前を表しており、/etc/smartcard/.keys ファイルまたはそのユーザー固有の別ファイルとなります。
ユーザーのカードが作成されたホスト以外のホストへユーザーの対称鍵をインポートするには、この手順を使います。