前回、第404号コラムでマイナンバーの個人番号のチェックデジットについて取り上げました。一つのマイナンバー、法人番号について、前回は書く余裕がなかったので今回追記しておきます。法人登記があっても法人税の納税義務が発生しないためか、法人番号は与えられません)。この法人番号の付番は国税庁が行います。付与されているので、これに検査用数字を加えた13桁が法人番号として使われています。登記を要さない法人などは、会社法人等番号で使われない領域を使って付番されています。その総数は2016年6月末現在で440万件足らずです。1億以上の付番が必要な個人番号が12桁なのに、いくら法人の寿命が人より短いとは言え、500万もない法人に対して13桁も費やすのはなかなか贅沢ですが、登記簿と直接結びついた会社法人等番号が法人番号に内包されているのは、何かと便利なのかも知れません。いずれにせよ、個人番号と違って法人番号はその使用に制限がない上、国税庁がWeb経由で法人番号と法人名、登記上の住所という3情報を広く公開しているため、民間活用すれば非常に有用なものであると言えるでしょう。各企業は取引先に債主コードなどのIDを割り当てて管理していると思いますが、法人番号を活用すれば、部門間の連携不備によって同一法人に複数のIDを割り当ててしまうような手違いを防ぐことが出来ます。その法人番号の検査用数字が今回の話題です。個人番号の検査用数字は、本来11通りあるところを無理矢理10通りに丸めたため、検査用数字が0になった場合にはチェックデジットとしての役割が果たしきれなくなる話は前回指摘しました。法人番号の検査用数字の場合は、個人番号とは全く別の計算式が使われていますが、こちらはどうでしょうか。法人番号の検査用数字は財務省令第七十号で定められています。個人番号は最下位についていたのに対し、法人番号では最上位、つまり最も左側の桁についています。その計算式ですが、「最下位桁を1としたときに、偶数桁の数字の総和を2倍したものと、奇数桁の数字の総和を足して、それを9で割った余りを、9から引いたもの」になります。9は9で割った余りを表します。するとxはかならず1から9の値になりますから、先頭桁が0にならずに済む、という利点があります。個人番号の場合と違って11通りのものを10通りに押し込めたりしていないので、数学的にも歪みはないはずです。...ですが、チェックデジットとしては大きな問題があります。法人番号の検査用数字は9通りしかありません。除いた全ての数字は各桁10通りの数字が入るわけですから、誤りは各桁9通りあります。よって、このうちの1桁だけに注目した場合、9通りの誤りのうち1つは見逃してしまうことになります。1桁だけの入力誤りは最も頻発する誤りですが、これが検出できない場合がありそうです。具体的に調べてみましょう。一般に剰余算と加算は順序を入れ替えても結果が変わりません。9)と同じです(後者は9以上になればもう一度9で割る必要がありますが)。9を計算してから総和を取っても構いません。9も、X=0とX=9の両方で答えは0になります。各桁の0と9は、検査用数字を求める際の加算結果に全く影響しません。言い換えると「法人番号は0と9を同等に扱う」ということになります。この結果、法人番号においては0と9を取り間違えても検査用数字では誤りを見つけられません。私が所属する学校法人立命館の場合、法人番号は9130005004289です。検査用数字は9ですが、これを検算してみましょう。9ということで、確かに検査用数字は9です。ところで、この法人番号には最上位の検査用数字以外に0が5つ、9が1つありますが、これらを全部0を9に、9を0に入れ替えてみましょう。9ということで、確かに検査用数字は9のままです。このように、法人番号では0と9は検査用数字の算出の上では同等に扱われてしまっています。そのため、各法人番号のうち0と9を打ち間違えてしまい、かつその打ち間違えた法人番号に該当する法人があると面倒なことになります。学校法人立命館の法人番号の最下位桁の9を0と入れ替えると9130005004280になりますが、これは学校法人明徳学園の法人番号です。この打ち間違いは検査用数字では発見できませんので、法人番号を積極的に活用している組織で事務手続き上この打ち間違いをされると、かなり厄介なトラブルを招きそうです。いえ13桁、検査用数字を考慮しても1兆通りもある法人番号は、そのうち440万ほどしか使われていないので、このような不幸な例はそれほど多くないようにも思えます。ところが実際に全法人番号を調べるとかなり不幸な例が見つかります。いうのは、法人番号の基となった会社法人等番号は上位桁が登記所や法人種別を表している関係で、番号の分布に大きな偏りがあるからです。端的な例を1つご紹介すると、以下の28法人は法人番号が「0と9だらけ」であって、これらの打ち間違えによって高い確率で他の法人と取り違えられてしまいます。4120001000090412000100009941200010009094120001000990412000100900041200010090094120001009090412000100909941200010099094120001009990412000100999941200010900004120001090090412000109009941200010909004120001090990412000109099941200010990094120001099990412000109999941209010000904120901000990412090100900041209010090094120901009090412090100990041209010099094120901009990これらはすべて、大阪府内に実在する法人の法人番号です(よければ調べてみて下さい)。このような法人番号が当たってしまった法人はお気の毒としか言いようがありません。ここまで極端でなくても、法人番号は0を多く含む傾向に偏っているので、割と高い確率で他の法人が該当してしまいます。してこんなことが起きたのでしょうか。個人番号の検査用数字でも感じたことですが、この検査用数字を決定する際に、事務上の打ち間違いを防ぐ「チェックデジット」としての性質を満たすことを慎重に検討するプロセスが全く欠けていたのではないかと思います。この検査用数字を決定する前にはパブリックコメントが行われたはずなのですが、それを見落としてしまったのは個人的には痛恨でした。気が付いていれば、頭の0を避けるべきではない、どうしても頭の0を避けるなら会社法人等コード(の先頭4桁の登記所コード)の再付番で対応するべきで、あくまでもチェックデジットは最下位にするべき、そしてそのアルゴリズムは、バーコード処理などを考えて(商品などに用いられている)JANコードと同じチェックデジットにするか、前回コラムでご紹介したDammアルゴリズムを使用するべき、と提言できたかもしれないのですが、付番が終わってしまった今となっては後の祭りです。ところで、公共分野には他にも数字がいろいろ用いられていますが、これらにはチェックデジットは使われているでしょうか。個人番号に使われている「11で割って10通りに丸める」チェックデジットは、住民票コードにもほぼ同じ式が使われているようですし、さらに遡ると運転免許証の番号に使われているようです(運転免許証では最下位の番号は再発行回数で、下から2桁目がチェックデジットです)。3に定義されています)。3-1」が使われています。大学入試センター試験の受験番号や試験場コードでは、「11で割った」結果を11種のアルファベットで表す、その能力を十分に生かしたチェックデジットが使われています。されることが前提になっておらず、人による手入力が前提になっている運転免許証などのコードにはチェックデジットが導入されないか、導入されるとしても深く考えられていないものが用いられている傾向が感じられます。何より、事務ミスが問題になって、それを減らすために導入されたはずの基礎年金番号には、チェックデジットが用いられていないようです。これは、結局また別種の事務ミスを誘発しかねず、せっかくの事務効率化のチャンスを無駄にしたように思います。要するに、人手での番号等の入力ミスに対する事務負荷に対する配慮が足りないまま仕様が決定され、展開されてきたのではないでしょうか。このような状況は、かつて政府内の情報システムにおいて暗号技術が適切に使われていなかった時代があり、標準的な判断基準が求められた結果としてCRYPTRECが生まれたという経緯を想起させられます。事務処理で用いられるコードに対してどのようなチェックデジットを与えるのが適切かという判断基準がなく、それが(人手の作業も含む)事務処理上の効率化において鍵になるという発想が共有されていないのが問題だろうと思うのです。現在は暗号に対してはCRYPTREC暗号リストという基準ができ、さらに情報システムの調達に関してNISCが中心となったセキュリティ対策基準があり、情報システムの政府調達にあたってはこれらが参照されるようになっています。それと同様に、チェックデジットに限らずICT機器と人が連携して事務処理を行う際に、技術的な勘所に対して何らかの基準を満たすことを促すような仕組みが、国の機関のどこかに必要な気がするのです。マイナンバーのように公共機関内に閉じず国民全体に影響がある制度を設計する際には、そういう視点でのチェックがどこかで入ってほしかったなと、いまさらながら残念に感じています。P.S.法人番号の件についてはもう少しわかりやすく書いた資料がこちらにありますのでよろしければご覧ください。http://www.slideshare.net/tetsutalow/ss-61937495また、ある法人番号を入力する際にどこか1か所0と9を取り違えたらどのようになるか、というのを確かめられるようなWebサイトを作ってあります。ご自由にお試しください。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。%d人のブロガーが「いいね」をつけました。