スマートカード

提供: ArchWiki
2022年5月26日 (木) 11:29時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (関連記事のリンクを修正)
ナビゲーションに移動 検索に移動

関連記事

この記事ではスマートカード (IC カード) リーダーを使うために環境を設定する方法を説明します。

インストール

公式リポジトリから ccidopenscインストールしてください。

カードリーダーに PIN パッドが付いていない場合、opensc の設定ファイル /etc/opensc.confenable_pinpad = false 行を追加・設定してください。

ノート: ccid パッケージにはスマートカードリーダーの汎用 USB インターフェイスドライバーが含まれています。あなたのスマートカードが汎用ドライバーでサポートされていない場合、適切なドライバーをインストールしてください。

pcscd.service起動有効化してください。

ヒント: Failed to start pcscd.service: Unit pcscd.socket not found. というエラーが表示される場合、systemctl daemon-reload で systemd ユニットをリロードしてください。

カードリーダーのスキャン

pcsc-tools をインストールして pcsc_scan ユーティリティを起動し、スマートカードリーダーを接続してカードを挿入してください。以下のような出力がされた場合、スマートカードリーダーとカードが正しく認識されています:

$ pcsc_scan 
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: Alcor Micro AU9560 00 00

Sat Aug  5 18:49:32 2017
 Reader 0: Alcor Micro AU9560 00 00
  Card state: Card removed, 
  
Sat Aug  5 19:00:35 2017
 Reader 0: Alcor Micro AU9560 00 00
  Card state: Card inserted, 
  ATR:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

ATR:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+ TS = 3B --> Direct Convention
+ T0 = DF, Y(1): 1101, K: 15 (historical bytes)
  TA(1) = 18 --> Fi=372, Di=12, 31 cycles/ETU
    129032 bits/s at 4 MHz, fMax for Fi = 5 MHz => 161290 bits/s
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 7D --> Block Waiting Integer: 7 - Character Waiting Integer: 13
+ Historical bytes: 00 6B 02 0C 01 82 01 11 01 43 4E 53 10 31 80
  Category indicator byte: 00 (compact TLV data object)
    Tag: 6, len: B (pre-issuing data)
      Data:  FF FF FF FF FF FF FF FF FF FF
    Mandatory status indicator (3 last bytes)
      LCS (life card cycle): 10 (Proprietary)
      SW: 3180 (Error not defined by ISO 7816)
+ TCK = FC (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
      Italian healtcare card (TS) National Service Card (CNS) (HealthCare)
ノート: 上記の例ではスマートカードリーダーは Alcor Micro AU9560 で、挿入したカードは Italian CNS カードです。

設定

Mozilla Firefox

新しいセキュリティ関連デバイスを設定する必要があります。(設定, 詳細, 証明書から) セキュリティデバイスのページを開いて、追加をクリックしてモジュール名を CAC Module に、ファイル名を /usr/lib/opensc-pkcs11.so に設定してください。

Chromium

Chromium では Network Security Services が使われます。端末を開き、 CAC Module が現時点で存在していないことを確かめてください:

 $ modutil -list -dbdir .pki/nssdb/
 
 Listing of PKCS #11 Modules
-----------------------------------------------------------
  1. NSS Internal PKCS #11 Module
    ....

存在しなければ、ブラウザーをすべて閉じ、モジュールを追加します (ユーザーによる確認操作が必要です):

 $ modutil -dbdir sql:.pki/nssdb/ -add "CAC Module" -libfile /usr/lib/opensc-pkcs11.so
 
 WARNING: Performing this operation while the browser is running could cause
 corruption of your security databases. If the browser is currently running,
 you should exit browser before continuing this operation. Type
 'q <enter>' to abort, or <enter> to continue:
 
 Module "CAC Module" added to database.

次のコマンドが正しく動いていると確認してください:

 Listing of PKCS #11 Modules
 -----------------------------------------------------------
   1. NSS Internal PKCS #11 Module
     ....
   2. CAC Module
     library name: /usr/lib/opensc-pkcs11.so
        uri: pkcs11:library-manufacturer=OpenSC%20Project;library-description=OpenSC%20smartcard%20framework;library-version=0.19
      slots: 1 slot attached
     status: loaded

ヒントとテクニック

Smargo/TV カードリーダー

テレビの視聴や録画 (PVR/DVR) のために TV カードを使用する場合、復号化を許可するためスマートカードを video グループに割り当てる必要があります。Smargo Smartreader を使用する場合、以下の udev ルールを使用:

/etc/udev/rules.d/98-smargo.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="video", MODE="0666", SYMLINK+="smargo"

p11tool

p11tool などのGnuTLS スイートのパッケージを使っており、OpenSC ドライバーが正しく読み込まれていないことがありえます。p11tool --list-tokens を実行した結果一覧に、ハードウエアトークンが存在しなければそのようになっていると判断できます。次のファイルを追加し、OpenSC ドライバーが正しく読み込まれるようにできます:

/usr/share/p11-kit/modules/opensc.module
module: opensc-pkcs11.so

OSCam などのソフトウェアカメラアプリケーションを使用するときに読み取りデバイスとして /dev/smargo を設定してください。

トラブルシューティング

Firefox がデータにアクセスできない

ブラウザーがスマートカードのデータを利用できない場合、デバイスへのアクセスを提供するサービスが認識していないことがあります。Firefox を開いた後にスマートカードを差し込んだときに起こります。

解決策は、単に Firefox を再起動することです。

参照