item: マイナンバーカード

超クッソ忙しいのに会社サボって受け取りにいった。。発行の申し込み自体は去年やってたんだけど、平日に役所に行くというのがかなりハードル高く。。
去年の12月21日にリクエストして、今年の5月1日が受け取り期限だった。

"マイナンバーカード 本人確認 保険証しかない"
自分のところでは、ワクチンの接種済証は本人確認書類として受理されなかった。自治体の長が判断するものなので地域差はしょうがないと思うけど、接種済証にも氏名・住所・生年月日は載ってるわけだし、それらを示す能力が無かったら接種済証として機能しなくない。。?
マイナンバーカードは自治体の住民なら 誰でも 取得できるのがポイントだと思うけど、実は結構ハードルが高いんではないかと思った。結局、保険証とデビットカードの2点で受けとった。
番号通知カードは忘れてたので紛失届を書くことになった。
受け取りに掛かる時間は30分程度を予告されていたので、ねっとりカードについて説明されるのかと身構えていたら特にそんなことはなかった。

マイナポータル
マイナポータルには、携帯電話をカードリーダーとして使ってPCサイトにログインさせる機能がある。このQRコードは通常のhttpsリンクになっていて、通常のQRコード読み取りアプリだとそのシステムでのアプリストアに飛ばされるようになっている。
ちょっと謎なのは、QRコードを読み取るアプリ側に、本物かどうか確認させるような注意喚起が入っている点。
QRコードにセッションキーが入ってるんだから本物かどうかはアプリ側で検証できるわけで、これは多分偽サイトに本物のQRコードを表示させるような攻撃を想定したものだと思うけど、もうちょっと何とかならないもんだろうか。。そもそも、この方式のログインは原理的に安全に実装できない -- 中間者攻撃に常に脆弱である -- ので(個人的には良い機能だと思うけど)、passkeyのようなデバイスキーと組み合わせて実現するべきだろう。
(攻撃者は本物のPC版マイナポータルを中継して偽マイナポータルを作り、そこにユーザを正しくログインさせることができてしまう。)
マイナポータルを構成するスクリプトの多くはminifyされていない。
現代的に、この規模のサイトをpackagerなしで作成するのは無謀で危険だと思う。
フォントはGoogle Font経由でNoto Sansを使用している。気持ちはわからなくもないがフォントくらいは自前でホストするべきではないだろうか。。
アクセス解析としてはユーザーローカル(nakanohito.jp)のWebビーコンが入っている。

JPKIアプリのPC接続は Bluetooth + RFCOMM っぽい
いわゆる従来の住民基本台帳カードでできていた公的個人認証(JPKI)はマイナンバーカードでもサポートされる。クライアントアプリはAndroidのNFCをWindowsから使うという謎機能が追加されている。
これFAQだと
Q:
Bluetoothのバージョンは制約がありますか?A:Bluetoothバージョンは、4.0以上を使うようにしてください。
とあって、Bluetooth LEで実現されているように見えるが、実体はRFCOMMのようだ。なのでClassic Bluetoothにさえ対応していれば十分と考えられる。
AndroidもWindows(Winsock2)も標準でRFCOMMをサポートしており、
Bluetooth API を使用して、Android アプリは次の操作を実行できます。
...
- RFCOMM チャンネルを確立する
確かにlogcatを接続した状態でJPKIアプリを使うと、
I/bluetooth: packages/modules/Bluetooth/system/stack/rfcomm/rfc_mx_fsm.cc:80 rfc_mx_sm_execute: RFCOMM peer:xx:xx:xx:xx:d4:bf event:3 state:RFC_MX_STATE_CONNECTED
のようなログが表われる。
iPhone端末をカードリーダーとしてパソコンに接続する機能(PC接続機能)については、iOSの仕様上、Bluetooth経由で実装することが困難であり、追加時期は未定です。
まぁiOSでRFCOMMがサポートされるのは望み薄だから、素直にWindowsクライアントでUWPのAPIを使って、BLE経由での実現を用意するしかないだろうねぇ。。
