/note/tech

政府向けシステムの話をするときの前提知識

政府向けシステムに関わったことがある身からすると、政府向けシステムの話をするときに前提として知っておいてほしいことは、住基ネット最高裁判決に「現行法上,本人確認情報の提供が認められている行政事務において取り扱われる個人情報を一元的に管理することができる機関又は主体は存在しない」という骨子があること。これによって政府向けシステムは個人情報を一元的に管理できず、個人情報は各自治体で分散管理しかできない。この文面でググれば政府がどれだけこの骨子を気にしているかは分かると思う。

今回の話は「国民マスターテーブルを持たずに認証するにはどうすべきか」という政府向けシステムで常に挙がる課題で、良いアイデアがある人は政府に提案しにいってほしい。個人情報保護法の目的外利用に違反しない上で。

■■はがき送りつけ

これをできるのは自治体のみで防衛省はできない。防衛省は国民の住所氏名を知らないのではがきを送れない。防衛省に限らず、どの省庁も国民の住所氏名を一元的には知らないので、政府はできない。

■■自治体から発行済接種番号と生年月日のペアのデータ提供を受けて、接種番号をIDとし、生年月日を仮パスワードとして登録し、認証システムとする。

かなり難しい。上の骨子により防衛省が個人情報を一元的に管理することができないので、最高裁判決とは条件が異なることを主張しないといけない。たとえば「都市圏だけなので一元ではない」とか。それに国民や野党が納得するかどうか。これがひろみちゅの言う「政治的にそう言えないというのはあり得るが、乗り越えなければならない」課題。

■■来る者拒まずベストエフォート方式にする

これで良いなら予約システムなんていらないけど、密を作って高齢者に何日も前から徹夜で並ばせるのが今のシステムより良いと思う?

■どうすればよかったのか?

政府が使える一元的な情報はマイナンバーしかない。マイナンバーカードを読み取れる人だけが利用できる予約システムなら認証できるけど、自治体のネット予約さえ高齢者には使えないと叩かれているのに「マイナンバーカードとリーダーが必要です」なんて要件で作れるわけがない。そもそも「短期間に多くの人に接種させる」という目的にもそぐわない。

各自治体の予約システムがAPIを持って防衛省が接種券番号の有効性をAPIで確認できれば認証できるけど、首都圏だけで200以上ある自治体がばらばらに調達しているすべての予約システムに高負荷でも落ちないAPIを共通仕様で緊急で作らせれる必要がある。けど、そんな体力があるならば自治体の予約システム自体が落ちないようにすれば良いわけで、大規模接種自体が不要かもしれない。

個人情報を一元的に管理することができる機関を立法すればできる。けど、そんなものは「たった1年」じゃ作れない。マイナンバーと住基ネットに何年掛かったと思っている?「パンデミックという緊急事態なので防衛省が高齢者の個人情報を一元的に管理することができる」世界は「戦争という緊急事態なので防衛省が20代30代男性の個人情報を一元的に管理することができる」世界につながっていることを理解した上で、国民はこの法案に賛成できるのか? できるなら、良くも悪くも政府向けシステムの将来は大きく変わる。

結局、「国民に行政サービスを直接提供するのは自治体で、そのための個人情報を持っているのも自治体。政府は自治体を支援する」というデザインですべてが作られている日本において、菅の「政府主導でのワクチン接種」というアイデアの実現がそもそも無理ゲー。出生届や転入届を出すのは各自治体、運転免許の番号を発行しているのは各都道府県公安委員会。政府は国民の個人情報が一元的に入った共通データベースをどこにも持っていないから管理できない。従来通り、政府は自治体の支援に特化するべきだった。

中国みたいな管理国家に日本はならないという選択を国民がした時点で、この予約システムでの認証の実装の難易度は相当高い。ウイルスとの戦いに強い国は戦争にも強い国で、「人間にせよウイルスにせよ、敵との戦いに勝つために国民は政府にどれだけ一元管理されてもよいか」の総意を国民が取らないといけないので、マイナンバーや住基ネットの実績を考えると1年くらいの準備期間じゃ、みんなが期待している認証をこのシステムでは実現できない。

■■認証は無理としてチェックデジットくらいは入れられたのでは?

チェックデジットがないことで誰かの誤入力で自分の予約ができない確率が上がっているのは残念。ただ、発券しているのは各自治体なのでチェックデジットをつけられるのも各自治体なので、開発会社も防衛省もやれることはない。誰なら事前に自治体に統一仕様で作らせられたかというと厚労省だけど、接種券の仕様が決まったあとに大規模接種の話が出てきたので事後諸葛亮。こんなこともあろうかとチェックデジットの指摘が事前にできる勘が良い人がいたなら、たぶん落ちない予約システムの作り方の指摘も事前にできただろうから、大規模接種自体が不要だったかもしれない。 いたずら予約で枠を全部押さえられたらどうするの?

現状でもreCAPTCHAでBot対策されている。reCAPTCHAを越えて大量予約するやつは悪意があるので逮捕で良いでしょ。

■■接種券番号のバリデーションは無理として、市区町村コードのバリデーションはできたのでは?

できた。でも、接種券番号のバリデーションができない時点で大した意味はない。入力フォームの電話番号にSMS送って電話番号全体の有効性を確認することはあっても、市外局番の存在有無だけをバリデーションするなんてことしないでしょ。入力された市外局番と市外局番マスターを引きあててバリデーションをしている者だけが石を投げられる。

生年月日が65歳未満でも登録できるのはバリデーションすべきでは?

防衛省は生年月日の正しい情報を持っていないので、この数字に大した意味はない。たぶん予約キャンセル用のパスワード相当、当日の誤入力を見つけるためのヒントくらいの意味しかない。「パスワードを設定してください」でも良かったんだけど、高齢者には難易度が高いと思って生年月日にしたんだろう。秘密の質問みたいなもの。あなたの母親の旧姓が本当に正しいかどうかにシステム側は興味がないのと同じくらい、この生年月日が正しいかどうかに大規模接種予約システムは興味がない。

■■SQLインジェクションは?

いまだに具体例が出てこないので、多分ガセ

■■接種券番号だけがユニークになっている

異なる市町村番号+同じ接種券番号+異なる生年月日でログインできないことで接種券番号だけがユニークと主張しているけど、ログインできない理由はそれだけじゃない。たとえば2-123,5678がすでに登録されていることをこの人は知らない状況で、この人は1-123,1234でログインできるけど、2-123,7890はログインできない。システムとしておかしくない。

■追記(2021/05/21 2:45)

よくあるコメントに返信。

■■接種番号と生年月日は個人情報ではない

法律は素人のシステム屋なので、この指摘は正しいのかもしれない。一方で「個人情報とは個人を一意に識別できる情報のことを指すもの」というコメントもある。私には判断できないけど、仮に個人情報ではないとすると、

かなり難しい。上の骨子により防衛省が個人情報を一元的に管理することができないので、最高裁判決とは条件が異なることを主張しないといけない。たとえば「接種券番号は個人情報ではない」とか「都市圏だけなので一元ではない」とか。それに国民や野党が納得するかどうか。これがひろみちゅの言う「政治的に(『接種券番号と生年月日は個人情報ではないので一元管理します』とは)言えないというのはあり得るが、乗り越えなければならない」課題。

が正しいのかもしれない。住基ネット最高裁判決によって政府向けシステムに認証機能をつけることは想像以上に難しいという趣旨は変わらないけど、悪いのは菅じゃなくて「個人情報ではない」で突っ張れなかった防衛省なのかもね。いずれにせよ「認証すらまともに作れない技術力」から「接種券番号は個人情報なのか」に議論が高まってくれれば書いた甲斐があった。

■■VRSでは一元管理できている

VRSってのは各自治体の接種会場で使われているバーコードがなくてOCRが必要なことで有名なシステム。OCRは置いておいて、VRSは一元管理していない。 https://cio.go.jp/sites/default/files/uploads/documents/vrs_overview_210506.pdf の6ページ目に書いてある。

>市区町村ごとに区切られて保存されており、個人の記録は、接種券を発行した市区町村が確認できます

国民の接種率が重要指標なんだからDBは1個にしたほうが便利なのに、「あえて」区切って保存している。また、個人の記録は各市区町村しか確認できい、つまり串刺しで全国民の個人記録を見られる人はいないと書いてある。そんなわけでVRSは「政府は一元管理していません」に気を使っていることが分かる事例。