🌞

Linux & IO DATA USB-NFC4 & マイナンバーカード

2024/01/08に公開

Linux & IO DATA USB-NFC4 & マイナンバーカード

2024-01-08

※追加・訂正

  • 20240907追加: Ubuntu 24.04.1の場合

(1).結論

  • IO DATA USB-NFC4、Linux OK
  • IO DATA USB-NFC4 ≒ AB Circle CIR315A
  • AB Circle CIR315A の Linux 用ドライバーあるよ
  • pkcs15-tool 動いた
  • マイナンバーカードOK、myna 動いた

(2).想像

  • ELECOM MR-ICA001BK ≒ AB Circle CIR315 の予感...未確認

(3).環境

  • Ubuntu 22.04
  • PC(USB2, PCIe2.0時代のマザーボード)
    • USB延長ケーブルは調子悪かった
  • Laptop(USB3.0を持つ物)

(4).動機

  • マイナンバーカードをLinuxで使いたい
    • PDFの署名やRFC 3161 TSAに使ってみたい
    • え?LibreOfficeの署名にも使えるって?やってみたい!
  • 接触式のカードリーダーは持っていたが、傷がつくので非接触式の物を探していた
  • 入ったお店にIO DATAがあった

(5).感想

  • AB Circleありがたや。
  • エストニアすごいね。

(6).詳細

(6)-a.動機

マイナンバーカードをLinuxで使いたかった。非接触式カードリーダーで。
エストニアのe-Residencyのリーダーがあり、それでマイナンバーカードを試したら問題なく動作した。
しかし接触式につきカードの金属面をカリカリする事になるが、これ、何回ぐらいまで耐えれるものだろうか?という疑問。LibreOffice書類、PDFにサインをするのが目的。回数が半端ではない。ハード屋ではないため、全く予想できない。

そこで非接触式を探すが、ネット上は、Linuxで動くブログ記事等はどれもこれもSony。しかも販売終了品の話が多い。制限も色々書かれているが、何かいまいちつかめない。

そこで海外をみると、Linux readyの製品結構出回っている。
日本はというと.....
そうですよね、だいたい日本のメーカーも税務署も国もLinuxは無視ですもんね。
それをみると、Linux対応のエストニアってすごいね。Firefoxの拡張機能あるし、aptで取れるようになっているし、ハードまで配るし。RFC 3161 TSAもフリーかぁ。環境整えてるね。

あやしい出品を買う勇気はないため、日本向けに売っている製品はないかと探す。

さんざんみてまわると、ソフトつきであった!
AB Circle CIR315A
凄い!これはありがたい!たすかる!
どこで売っているのだろう?

ん〜〜〜、わからん...。

もう無いのかなと諦めていてふと目にとまった
IO DATA USB-NFC4
一般の家電量販店に出回っていそう。
なにより、

似ている....なんだかAB Circle CIR315Aに似ている....

写真を見比べてみると、本体の形、似てないかいこれ?
マニュアルを見る。えー何々...

デバイスマネージャーを開き、「スマートカード読み取り装置」の下に本製品(CIR315 CL)が認識されているかどうかご確認ください。

これ、もしかしてOEM?
お店にあったので購入。

(6)-b.動作

インストールソフト

  • Ubuntu側

    $ sudo aptitude install \
        opensc opensc-pkcs11 \
        pcscd pcsc-tools libpcsclite1 libusb-1.0-0 \
        libpcsclite-dev libusb-1.0-0-dev
    

    エストニアe-Residencyのリーダー+mynaを試した時にすでに環境は作っていた。
    devはソースをコンパイルしたいなら。

  • AB Circle ドライバー

    • AB Circle CIR315A
    • 「USB Linux インストーラ」はバイナリ
    • 「USB Linux & Mac ドライバ」はソース
    • どちらでも動く。
  • マイナンバーカードのソフト myna

動かす

ソフトを先に入れた後、購入したIO DATA USB-NFC4をぶっさしたら、はいおしまい。
何も問題なく。

$ opensc-tool -l
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    Yes             Circle CIR315 CL [CIR315 CL] 00 0

$ pkcs15-tool --list-pins
PIN [User Authentication PIN]
()
        Tries left     : 3

PIN [Digital Signature PIN]
()
        Tries left     : 5

# JPKIのpem
$ pkcs15-tool --read-certificate 1
#パスフレーズなどは聞かれない

# JPKIの署名用のpem
$ pkcs15-tool --read-certificate 2 --verify-pin --auth-id 02
Please enter PIN [Digital Signature PIN]: (署名用の長いパスフレーズ)


$ myna pin status
券面事項PIN(A): のこり10回
券面事項PIN(B): のこり10回
入力補助PIN:    のこり 3回
入力補助PIN(A): のこり10回
入力補助PIN(B): のこり10回
JPKI認証用PIN:  のこり 3回
JPKI署名用PIN:  のこり 5

すばらしい!ありがたやAB Circle!
これで種々のファイルにサインをすることに踏み出せる!

(6)-c.トラブル

実はこんな事があった。

Laptop PCでは一発で動作。問題なし。
PCでは、pkcs15-toolは動く。しかしmynaが

$ myna pin status
Error: scard: Sharing violation.

原因がわからない。しかもタチが悪い事に、たま〜に動く。
USBハブをかましたら動いたと思ったら、次の日には動かない。
ハードが古いし、あれかなぁと漠然と考えていた。

ある日ふと

[PC 背面USB]<----USB延長ケーブル----><----[カードリーダー]

が気になって、PCマザーボードのUSBの口に製品を挿すと、

[PC 背面USB]<----[カードリーダー]

問題なくmynaが動作。

こういう事ってあるのね。
ケーブル不良なのか?しかしpkcs15-toolは動くし、他のハード(USBカメラ)も動くし。専門家でないため不明。
ハードを雑に(粗末に)考えてはいけないと知った出来事。


(7).その他

  • エレコム
    エレコム MR-ICA001BK のマニュアルに

ダウンロードした「ELECOM MR-ICA001 CIR315 xxxx Installer.zip」(ドライバーのバージョンによりファイル名称が異なる場合があります)をデスクトップなどに解凍します。

とある。実機がないため不明だが、これもOEMの可能性。
なお、個人の感想につき、保証はできない。

  • nfcpy
    試していない。何のためのものかもわかっていない。
    openscで動いたからいいや!でトライせず。

  • その他ソフトの使用は別の機会に記述するかもしれない


(8).追記20240907、Ubuntu 24.04.1 の場合

Ubuntu 24.04 では、pcscd が polkit を利用する。よって、polkit まわりの設定が必要。

(a). まず polkit を使わないようにして動作させる

/etc/default/pcscd
PCSCD_ARGS="--disable-polkit"
# PCSCD_ARGS="--disable-polkit --debug"

デフォルトでファイルが作成されていない事に注意。
署名の動作確認するまで polkit を停止しておく。動いたら、polkit ルールを自分に合わせて書く。
--debugオプションでログを吐く。これで動作確認。

(b). 動作確認後、polkit を記述
pcscdグループに屬していれば、PC/SCアクセス可能にする。

/etc/polkit-1/rules.d/90-org.debian.pcsc-lite.rules
polkit.addRule(function(action, subject) {
  if (    action.id == "org.debian.pcsc-lite.access_pcsc"
       || action.id == "org.debian.pcsc-lite.access_card" ) {
     if ( subject.isInGroup("pcscd") ) {
        return polkit.Result.YES;
     }
  }
});

グループ作成、使用者を追加。

$ addgroup --system pcscd
$ usermod -aG pcscd ubuntu

/etc/default/pcscdファイルを編集。--disable-polkitを消す。

$ systemctl restart pcscd.service pcscd.socket polkit.service

動作確認する。


以上。

Discussion