マイナンバーカードを保険証としても使えるシステム(以下、「マイナンバーカード保険証」など)が すご過ぎて※げんなりした。僕の常識が ことごとく覆された。一体、どういう お利口さんが考えたのだろうか。江戸時代でも もっとマトモなものが出来そうだが・・・
※「ヤバイ」のように逆の意味
背景
マイナンバーカード保険証のサービスが開始され、紙だと数円高くなるようなので使ってみたのだが、2回(別の医院)使って どちらも顔認証に失敗した。1回目はカードのカバー(透明なやつ)を外さないと認証できず、もう1回はどうしてもできず、紙の保険証を使わされた。
どちらも、カードリーダーには「カードの置き方が悪い」のように出た。
疑念
それで、以下のような疑問が生まれた。
- なぜカードが読めない??
- 非接触カードなんだから、普通に置けば読めるはず。
- なぜカードのカバーを外して挿れる?? (そんなの知らなかった)
- 上と同様に、カバーなんて関係なく読めるはず。
- なぜ、挿れる(正確には穴に置く)向き(方向、裏表)がある?? (馬鹿じゃね?)
- これも上と同様。
想像
少し調べたら、カードリーダーは なぜかカードを光学的に読んでいるようだ。というのは、メーカーのページには、失敗した時に光源の明るさを調整するなどと書いてあったからだ。
は? 何を読んでいるんだろうか?
全く理解不能だけど考えてみたら、カードのチップに記録されたマイナンバーなどの情報は、暗証番号を入れなければ読めないはずなで、チップに顔写真が記録されているにしても、(ただリーダーに挿れただけでは)同様に読めないだろうから、カードに印刷された顔写真で認証しているのではないかと想像した。
でも、少し考えてみると、写真などの、カードに印刷されている情報は保護なしで読めてもいい気がする。まあ、保護したほうが良いのは確かだが。実際、運転免許証にも暗証番号がある(何が読めるかは忘れた)。
推測 (実際には正しくなかった)
カードリーダーは、カード表面に印刷された顔写真と顔を比較して認証してマイナンバーを読み出す。
根拠
- 認証装置にはカードを読むためのカメラが付いている。
- カードはケースを外して、顔のある面を上にして入れることになっている。
- 実際、外さないと読めなかった。
- 外しても読めなかったのは、外からの光の影響?
- 装置のFAQより (→ 参照)
どうしてこんな下らないことをしているか考えたら、保険証は当初は想定していなかった使い方(ユースケース)なのに、無理して実現したからだろうかと思った。
調査と結果
上の どうにも信じられない推測を確かめるために更に調査したら、大分分かって脱力した・・・
一番スパっと来た情報(カードリーダーの仕組みが分かりやすい)は、厚労省の資料「顔認証付きカードリーダーの概要」(c. 2020)だ。その2ページ目の「マイナンバーカード券面スキャン機能」に、以下のようにある。
マイナンバーカード内の顔写真データを取得するため、マイナンバーカードの券面情報を読み取る。
<仕様例> 顔写真データを取得するために必要な券面情報(生年月日、有効期限の西暦、セキュリティコード)のスキャンの認識率99%以上
つまり、以下の処理だろうか。
- カードの表面の生年月日などをカメラで読んで文字認識し、
- それを元にカードかサーバから本人の顔画像を取得する。※
- その画像とカメラで撮影した顔を比較して認証する。
※ここは想像で、生年月日, 有効期限, セキュリティコードから簡易なアクセスキーを生成して、カードかサーバから顔の画像を取得しているのではないか。サーバだと時間が掛かりそうなので、カードだろうか?
高度な画像認識技術を使ってカード表面の文字を読む!!!
えぇ・・・ 普通にカード(チップ)から読めよ。こんなのアナログそのもので、お前らの好きなデジタルじゃない!
海外の人が知ったら絶句するだろうな。台湾の有名な人に作り直して欲しい。
カードに印刷された顔写真と比べて認証するよりはマシかも知れないが※、五十歩百歩だ。* 昔、「まだやってんの?」と常に偉そうな友人に馬鹿にされた、紙の本の「自炊」レベルだ。@
※実際、大企業様による そういう石器時代的なシステムがあった。すごいね、こんなのを使う気になる人は。
*個人的には、印刷された顔写真と比較するほうが まだ使えそうな気がする。というのは、写真には冗長性があるためだ。写真の一部が汚れたり欠けても まず使えるが、文字だと1文字欠けたら分からないじゃないか? 推測したら「他人の―」問題になっちゃいそうだ。
@だけど、自炊は他に手段がないから やっているので仕方ないが、これは最初の設計が悪くて、マトモな やり方ができないから無理くりやっている点で、かなりレベルが低い。
いろいろ突っ込みどころはあるが、少し経験のある人なら分かるが、文字認識なんてカタログどおり100%は成功しないので、こんな やり方では失敗が多発することは やる前から分かるから、進んで こんな作りにする人は居ない。
はずだったが、国の上のほうには居たようだ。
更に、そもそも、使うところは医療機関だから、簡単に確実に迅速に使えることが必須で、こんなシステムは机上の空論でしかない。素人でも考えないレベルだ。今後使う人が増えたら、問題が どんどん出て来るはずだ。
実際、上の仕様例に"99%"と誇らしく書いてあるのが笑える。99%じゃ全然足りない。素人なので分からないが、少なくとも99.99%くらいは要るのではないか? それでも、1億回だと1万回は失敗する。(なお、99%だと100万回)
更に、特定の条件のカードが常に失敗するとすれば(下を参照)、99%では約100万人が使えないことになる。
調べると、少し古い(2022/12まで)ながらも実際の利用数・率があり、約100万件(登録数の1.3%程度)とのことだ。すると、認識率が99%であれば失敗するのは約1万件となる。実際の失敗(苦情)の数は分からないが、問題になりつつあることを見ると、数千件 はあるのではないか。
まだ利用率が少ないから 持っているものの、10%とか20%とかになった場合はどうなることやら・・・
考察・意見
そういうことなら、2回目に僕が失敗した理由も分かる。おそらく、リーダー周囲の光(外からの光が入っていた※)の影響か、カード自体の印刷の劣化(かすれなど)ではないか。
※次回、もしやる気が出たら、なるべく身体(顔)をリーダーに近づけて、外光の影響を減らしてみたい。が暗証番号でいい。やる気なんて出る訳ない!
常識的に考えれば、ICカード(非接触対応)の表面は人が見るだけなので、多少傷付いたり汚れても問題ないはずだ。実際、最初は「大切に保管しろ」とは言われていたものの、表面を傷付けるなということは言われておらず、今は「(いろいろなところで使えるのだから、どんどん)持参しろ」とすら言っているのに、表面を光学的に読むのは余りにもおかしい。
カードを見ると印刷は弱い感じで、強く擦ったら消えそうな感じだ。僕の場合、電子証明書の期限の更新で書き換えられた(消しゴムなどで擦って消した?)ために、生年月日辺りに かすれや歪みが出ていそうだし、住所変更もしたので 下の方に手書きの文字が書いてあるのも、文字認識の妨げに なりそうな気がする。
ひどいのは、こういうシビアなことが全く知らされておらず、単に「カードに記録された顔画像で認証する」(→ 例※)と言われていることだ。
※この記事にしたって随分大雑把だ。技術サイトの癖に、(上にも書いたように、)その顔画像をどうやってカードから取り出すのか考えていない。単に言われたことを書いてるだけ?
僕が知る限り、上述の仕組みや そこから起こる問題は世間では知られて居ない。: 例えば、カードの表面を傷つけたり、ペンなどで書いたり色を塗ったりした人、シール類を貼った人は確実にアウトになりそうだ。あと、差し込み式リーダーで繰り返し使った人や、非接触でもスマフォの背面に何度も接触させるうちに表面の劣化がひどくなって、駄目になるのではないか。
もしかして、問題が炎上してから、大臣辺りが「表面保護のためにもカバーを用意した。(だから、丁寧に扱わなかった国民が悪い)」とか言い出すだろうか?: 当たったらおもしろいけど、ものすごくムカつく。
しかも、更に怖いのは、顔認証でも連続10回失敗するとカードが無効になるらしいことだ。メーカーのFAQには以下のようにある。
※なお外部認証に連続10回失敗したエラーが出ると顔認証がロックされます。
「ロックされる」のがカードなのかリーダーなのか分からないが、いずれにしても怖い・ひどいことは確かで、そもそも顔認証ができにくいなら、暗証番号のほうが便利・安全そうだ。
「だったら意味なくね?」である。
嘆き
という訳で、日本は今までの想像以上に馬鹿になったものだと、暗澹たる思いが増した。そして、近頃言われているカードの「改良」は、盛大にお金を使って ものすごいものが出て来る気がしてならない。
「馬鹿は頑張らなくいいから、そこらで寝てていいよ」って言いたい。
PS. まあ、現場の人は素人でないので「無理だ」と言ったはずだ。が、何も分かってないノータリン偉い連中が、「それは通らない。(僕が困るから)何とかしろ」とか言ったから仕方なく何とかしたんだろうが、全く詰まらない無駄なことだ。技術と金と開発者のメンタルの浪費だ。
まあ、そういう開発者も砂糖水を売り続けるみたいなもので、同罪だ。遊びじゃないので、それらしいものを作ればいいってものではない!
PS2. それでは、どうすれば良かったか(、あるいは全く無理だったのか)考えると、
顔画像の認証用の情報(特徴のようなもの? あるいは画像そのもの)は、カードからパスワードなしで読める。
であれば良かったのではないか。が、最初にそんな考え(ユースケースの想定、設計)がなかったので無理なのか。
だったら、(本文に書いたように)カード表面の顔写真でのアナログ認証が良かったと思う。
でも、そもそも、カードリーダーは「顔で認証できた」という情報をカードに与えて情報を取得するはずなので(カードに顔画像データでの認証機能があるとは思えない)、認証しなくても中身が読めるようにできる気がする。だから、
- 認証なしで(認証が通ったとして)カード内の顔画像を取る。
- 顔と比較して認証する。
- 認証できたら、カードから本来必要な情報を取得する。
でいいのではないか?
きっと、頭の悪い硬い連中が「駄目だ」とか言って却下されたのだろう。
PS3. もっと怖いことは、僕が書いたのは単にカードで顔認証するだけの話で、それ以外に、ニュースになっているように、いろいろな問題が山ほどあることだ。顔認証と同様に、「そもそも無理だけど、それらしくでっち上げて しばらく(異動になるまで?)動けば良い」スタンスでやっている気がしてならない。
書いたあとで分かったこと
(7/1 10:24) 上を公開後に更に調べて分かったことを書く。もし本文と異なる内容があっても、本文を変更・修正しない(初出の本文を保存するため)。
- カード内の顔画像へのアクセス: 「券面AP」というもので取得する。: 暗証番号(4桁)でなく、「照合番号B」というもの(14桁: 生年月日: 6, 有効期限: 4, セキュリティコード: 4)で取得可能。 (→ 参照)
- 照合番号Bを得るために、カードをカメラで読んで文字認識しているのだろう。
- 顔認証できたあと、医療情報(サーバ?)へのアクセスをどうしているかは不明だが、顔認証(券面AP+「券面事項入力補助AP」)と暗証番号(券面事項入力補助AP)のどちらでも取得できる、住所, 氏名, 生年月日, 性別(「4情報」と呼ばれている)と その電子署名データをキーにしているのではないか(下の「券面AP以外のアクセスについて」を参照)。
- 4情報では他人との重複が避けられないが、電子署名データも合わせることで防いでいるのだろうか(ハッシュのような感じ?)。
- カードを入手すれば医療情報にアクセスするキーを得られてしまうが、実際にアクセスするにはサーバに接続しなければならないから、医療機関がハッキングされなければ大丈夫だろう・・・
- 券面AP以外のアクセスについて
- 「JPKI-AP」, 「住基AP」: 暗証番号(4桁または6-16桁)が必要
- 券面事項入力補助AP: 種類によって暗証番号(4桁), 「照合番号A」(マイナンバー), 照合番号Bが必要
- 照合番号Bでアクセスできるのは、4情報と その電子署名データ
- また、暗証番号(4桁)では、マイナンバー, 4情報と その電子署名データ(マイナンバーを含む署名かは不明)
- カード表面の文字の印刷: レーザーで刻印してあるとのことで、通常の使用で消滅することはなさそうだ。 (→ 参照)
- ただ、色が抜けて見えなくなる可能性はありそうだし、あのフォントは細くて文字認識に向いていないように思う。
- (参考) カードとの通信: APDUコマンドというもので行うとのこと。 (→ 参照)
書かなくてもいいことだが、資料を見て、随分複雑な仕組みだと思った。セキュリティの仕組みは複雑なのは仕方ないが、独特な用語やAPなるものが4種類もあることが拍車を掛けている。後者は本当に必要なのだろうか?
あと、「カードの空き領域を活用」とあるが、具体的に空き領域が どのくらいあるか明記されていないので、いざ使おうとしたら足りなくて駄目になる可能性があり、その場合どうするのか疑問だ(セキュリティでどうしても必要だから入れる訳で、基本的に入れない選択肢はない)。使って欲しいと言う割には見通しが甘い感じがする。
(7/1 13:28 「書いたあとで分かったこと」はPSのあとに書いたためPSと整合せず混乱するため、最後に移動した。内容は何も変えていない。)