昨日の記事の続きです。
まず最初に、新聞社による各番号入力についての話と、システムの脆弱性の話とは、関連性はあるものの基本的には「別の話」です。
なので、ここではシステムの脆弱性についてのみ書いています。
さて、この件について岸防衛相ご自身が次のようにツイートされています。
本センターの予約システムで、不正な手段による虚偽予約を完全に防止する為には、全市長区町村が管理する接種券番号を含む個人情報を予め防衛省が把握し、予約番号と照合する必要があり、実施まで短期間等の観点から困難かつ、全国民の個人情報を防衛省が把握する事は適切でないと判断いたしました。
— 岸信夫 (@KishiNobuo) 2021年5月17日
政府関係者や各マスコミ報道も、
この「不正な手段による虚偽予約」を軸に語られていますが、
当件の問題点はそこだけではありません。
一般的に、入力データに対するチェックを行う第一の目的は、
「不正な手段による虚偽の入力を防止するため」ではありません。
常識的に、そこまで利用者を頭から疑うことは少ないでしょう。
第一の目的は「意図しない誤入力の防止」。
つまり入力ミスの防止です。
実際に、東京大規模接種センターの予約ページを見てみましょう。
こちらのページからリンクしています。
これがリンク先のページにある、問題の入力欄です。
まず最初に驚いたのは、市区町村コードの欄に書いてある「下記総務省HPよりご確認下さい。市区町村コードの確認はこちら」の「こちら」をクリックしましたら、総務省のページではなくPDFデータのダウンロードになったことです。
そのPDFデータの一部がこちら。
全部で36ページ。全国市区町村のコード一覧表です。
愛知県名古屋市は、、、、あー「231002」ですね。
不思議なのは、これを参照するのは
接種券に番号記載がない場合
となってることです(当然ですわな)。
で、
接種券はこういうものです。
「接種券は住民登録されている自治体から郵送にて届きます。」とあります。
つまり
この接種券に市区町村コードが書かれていない場合があるということです。
何で?
それってどんな発行システムなの?
市区町村コードなしで、バーコードとか発行出来るの?
ていうか各自治体の接種券システムって、自治体毎に仕様バラバラなの?
既にこの段階で、破綻の兆しが見え見えです。
はい、入力欄に戻ります。
入力するのは、
1.市区町村コード(接種券に記載されている)
2.接種券番号(接種券に記載されている)
3.生年月日
の3つ。
1と2の入力で、接種券との紐付けを。
これに3を「当日受付にて本人確認書類にて確認」することで、接種券と本人を紐付けしているということでしょう。
接種券番号は自治体毎に一意となっているので、接種券との紐付けはOK。
そして現地での本人確認書類による生年月日確認も、まぁOKというところでしょう。
1の市区町村コード6桁については、先のPDFデータの内容さえあれば
-桁数が合っているか
-存在するコードか
-アルファベットや全角文字等の誤入力がないか
等により、
「存在する正しいコードが適切に入力されているかどうか」
のチェックは可能です。
2の接種券番号も10桁の番号なわけですから、
-桁数が合っているか
-発番に用いる番号範囲に適合しているか
-アルファベットや全角文字等の誤入力がないか
等により、
「それが接種券番号として適切に入力されているか」
のチェックは可能です。
ただ、これだけでは
「そのデータの接種券が本当に存在するものかどうか」
はチェック出来ません。
※1と2の組み合わせが「真」であるかどうかを確かめるには、
自治体が発行した発券データとの突合が必要になるため
出来ませんが、接種当日は接種券の持参が前提条件になっているわけですから
「とりあえず」のレベルでOKだと思われます。
今回のケースでは、この2つの入力に関して「あり得ない値」での入力が可能だったことが問題になっていて、それに対して岸防衛相はツイートで、
不正な手段による虚偽予約を完全に防止する為には、全市長区町村が管理する接種券番号を含む個人情報を予め防衛省が把握し、予約番号と照合する必要があり、
と書かれています。
まず第一に
「完全に防止するため」
と自らハードルを究極まで上げておられますが、問題はハードルどころかシステムが穴だらけなことで、上に書いたような極々簡単なチェックを入れるだけでも基本的な誤入力の防止は可能なわけです。
また生年月日についても、「当日受付にて本人確認書類にて確認」という運用になっているわけですから、このシステムで「全市長区町村が管理する接種券番号を含む個人情報」なんて必要ないんですよね。
逆に
「不正な手段による虚偽予約を完全に防止する為」
ということをマジで考えるならば、単なる個人情報との結びつけだけではダメで、予約システムへの入力時に「それが完全に間違いなく本人であること」を保障する必要があります。
当然マイナンバーとの突合程度では「完全」には全く足りず、事前に各自治体に個人の生体認証データを登録して、入力時に本人の生体情報と突合するとかちょっと非現実的な方策を取る必要が出てくると思います。
そうでもしないと「完全に防止」なんて出来ないわけで、つまり
「不正な手段による虚偽予約を完全に防止する為」
という台詞は
現時点の行政システムでは何をやっても出来ないことを前提としている
(=絶対に論破されない言い訳っぽい戯言)
ということです。
どうでしょう、今回の「誰でも何度でもOK」の話がどれだけ低レベルな話か
わかって頂けたでしょうか?
そして、こんなゴミ状態のシステムですと
例えばあなたが予約入力の際に10桁の接種券番号を打ち間違えていたら
接種の当日、会場で
「ご予約の内容と、予約券の内容が違いますね。」
という状態になり、
最悪の場合接種できなくなるという可能性が出てくるわけです。
※というか、その状況でもしも接種出来たら、それはそれで問題ですよね。
あなたは「不正な手段による虚偽予約」をしたわけではないのに、です。
抜本的な話をすると、
「全国民の個人情報を防衛省が把握する事は適切でないと判断いたしました。」
と防衛相ご自身が言われているように、
今回のシステム
何で防衛省管理で作ってんねん!
という所に行き着くわけですが、
まぁそれについては高度な政治的判断があってのことでしょう。
そもそもそんなに難しい仕組みなんて必要ないはずなんですよね。
要は
まともなSEなりPL/PMなりが携わってない
※または能力を封じられている
ってことだと思います。
「プログラミング教育」だのなんだのと
意味の取り違えを誘発するような題目を掲げたり、
行政システムのプラットフォームに
AWS(米Amazon社のクラウドサーバー)を使うとか言い出したり、
ホントにもう、
いい加減にして下さいな。