【マイナンバーのチェックデジット】ゆる理系女子にオススメの知識

マイナンバー届きましたか?1人に1つの大事な12桁の数字です。実は「チェックデジット」で守られているのを知っていますか?「チェックデジット」って何?という方にも今すぐ使えるアツアツのマイナンバー雑学を交えてご紹介します。



マイナンバーの基礎知識

マイナンバーとはどんな数字なの?

平成27年10月から「マイナンバー」の通知が始まりました。マイナンバーは国民がひとりにひとつ持ち生涯使うことになる12桁の番号です。封書を手にして初めて実感した新しいこの制度、知らないこともまだまだたくさんありますね。

マイナンバーとは | 特集-マイナンバー:政府広報オンライン
参照元:政治広報オンライン(2016年1月、著者調べ) 宣伝を担うキャラクターは「マイナちゃん」です。メインのナビゲーター役は女優の上戸彩さんとタレントの宮川大輔さんを起用して幅広い層をターゲットにしています。 マイナンバーは0歳の赤ちゃんにも住民票ができた時点で通知され、ずっと変わらずその番号を使うことになります。法律で定めることができる社会保障制度や税関係の処理に使われます。

事務手続きの簡素化、所得の過少申告・扶養控除・生活保護の適正化などが導入のメリットとして挙げられています。市役所など公的機関での書類手続きが簡単になったり、自分のマイナンバーポータルから自分に関係ある情報を受け取れたりなど利便性がアップすることが期待されています。

Yahoo! JAPAN 特別企画 – マイナンバーが始まります。
参照元:内閣府(2016年1月、著者調べ)



チェックデジットについて知ろう

マイナンバーのチェックデジットとは?

マイナンバーには個人用の番号の他に法人用の番号があります。個人番号は12桁ですが、法人用の番号は1つ多い13桁です。ニュースなどでよく耳にする単に「マイナンバー」と呼ばれるものは個人用の番号を指していることが多く、会社ごとの番号は「法人番号」と呼ばれることが多いです。

個人番号にも法人番号にも、マイナンバーには入力ミスを防ぐために「チェックデジット」というものが1桁含まれています。個人用は末尾の1桁が、法人用は最初の1桁がチェックデジットです。

氏名などの文字は人が見て間違いを見つけやすいですが、数字はテンキーの押し間違いや見間違いで簡単に入力ミスが起きてしまい気づきにくいです。先に述べたように税や社会保障などの重要な情報を登録・参照するのにその大事なキーとなる数字を間違えてしまっては元も子もありません。マイナンバーはチェックデジットを1桁設けることで、人為的なミスをある程度防いでくれているのです。

法人番号公表サイト―国税庁
参照元:国税庁(2016年1月、著者調べ)

どんなところにチェックデジットは使われている?

チェックデジットは検査数字(C/D)とも呼ばれますが、私たちの身近なところにもたくさん使われています。例えば日本で一般的に使われているバーコードのJANコードや運転免許番号にもチェックデジットが含まれています。この二つの番号の意味をここでちょっと解読してみましょう。 ・JANバーコード:13桁(12桁+C/D)です。モジュラス10で計算しています。

例)4901777018686
日本(49)のサントリーの(01777)南アルプスの天然水(01868)です。
12桁を計算したチェックデジットが6(6)です。

JANコードのチェックデジット計算方式 |GS1事業者コード│一般財団法人流通システム開発センター
参照元:一般財団法人流通システム開発センター(2016年1月、著者調べ) ・運転免許番号:12桁(10桁+C/D+再発行数)です。モジュラス11で計算しています。

例)309876543210
東京(30)で1998年(98)に取得したもので、連番(765432)がふられています。
10桁を計算したチェックデジットが1(1)で、再発行数は0回(0)です。

運転免許証番号の謎 – 12桁の運転免許証番号は何を意味するのでしょうか?
参照元:みんなの知識 ちょっと便利帳(2016年1月、著者調べ) このようにデータでやりとりする重要な番号には、チェックデジットが必ずといっていいほど隠れているのです。口座番号やクレジットカード番号にもありますよ。

マイナンバーのチェックデジットの計算方法

マイナンバーの個人番号は、住民票の番号を元に機械的に処理された乱数の11桁の番号に1桁の検査番号がついた12桁の数字です。個人番号のチェックデジットの計算式は以下のように法律で定められています。

第五条  令第八条の総務省令で定める算式は、次に掲げる算式とする。
算式
 11―((n=1(シグマ)11(Pn×Qn))を11で除した余り)
 ただし、(n=1(シグマ)11(Pn×Qn))を11で除した余り≦1の場合は、0とする。
算式の符号
 Pn 個人番号を構成する検査用数字以外の十一桁の番号の最下位の桁を1桁目としたときのn桁目の数字
 Qn 1≦n≦6のとき n+1 7≦n≦11のとき n―5
(市町村長への個人番号とすべき番号の通知の方法)

出典:

law.e-gov.go.jp
一方マイナンバーの法人番号は、もともとある12桁の基礎番号の前に1桁の検査用数字をつけた13桁の数字です。番号の最初の数字がチェックデジットになるケースは珍しいです。計算式は以下のように定められています。

第二条  令第三十五条第一項に規定する財務省令で定める算式は、次に掲げる算式とする。
算式
9―((n=1(シグマ)12(Pn×Qn))を9で除した余り)
算式の符号
Pn 令第三十五条第一項に規定する基礎番号の最下位の桁を1桁目としたときのn桁目の数字
Qn nが奇数のとき 1、nが偶数のとき 2

出典:

www.nta.go.jp

よくある質問

チェックデジットでどのくらい間違いが防げる?

チェックデジットで何%の確率で誤りを発見できるかというと、マイナンバーのチェックデジットは1桁しかないので、あてずっぽうに最後の1桁を入力するとして90%の確率です。10%も間違ってしまうなら必要ないんじゃないと思うかもしれませんがそうでもありません。

数字の入力間違いというのはあくまでもヒューマンエラーなので、でたらめな数字を入力した場合のミスを見つけるというよりも、ささいなミスの検出を主な目的にしています。

数字の羅列を扱う場合、この「発生しやすいエラー」として挙げられるのが、以下のようなものです。

(1) トランスクリプションエラー

  数字の書き間違い。12345 → 12845 など。

(2) トランスポジションエラー

  2つの数字の入れ違い。12345 → 13245 など。

(3) ダブルトランスポジションエラー

  間に1桁おいた2つの数字の入れ違い。12345 → 14325 など。

出典:

blog.goo.ne.jp
マイナンバーのチェックデジットは「モジュラス11ウェイト2-7」という方法に分類されています。

この方法の場合、上にあげたよくある3つの間違いを検出する確率をみてみましょう。
 
(1) トランスクリプションエラー(1文字間違い):100%
(2) トランスポジションエラー(左右逆):100%
(3) ダブルトランスポジションエラー(1桁とばして左右逆):100%

チェックデジットとチェックデジット計算機「バーコードについて」のまめ知識:バーコードシールは、バーコード屋さん
参照元:バーコード屋さん(2016年1月、著者調べ) ランダムエラーだと90%の確率でしか間違いを発見できないのは事実ですが、エラーごとの発生確率を掛け合わせて考えると、なかなか精度のよいチェック方式だと思います。

マイナンバーが素数になる確率は?

マイナンバーが素数になる確率は約3.4%です。

12桁までの素数の数が346,065,536,839なので単純に計算すると以下のようになります。

346,065,536,839/1,000,000,000,000 =3.46%

しかしチェックデジットがあるため実際の素数の数はもう少し減ります。

マイナンバーの話題 – 電子の湖
参照元:リップル著「電子の湖」(2016年1月、著者調べ) しかし、文系女子かつ元SEの筆者からすると、「番号」であるものを「数字」とみなして素数かどうかで感動するのもちょっと変かもと思ってしまいます。ぞろ目の確率も出しておきましょう。

マイナンバー12桁がぞろ目の確率は0%です。チェックデジットが最後に入っているので「000000000000」以外のぞろ目は存在しません。他の数字はというと以下のような11桁のぞろ目しかありえません。

111111111118
222222222225
333333333332
444444444440
555555555557
666666666664
777777777771
888888888889
999999999996

たった一つの番号がでる確率ですから0%といっていいでしょう。

プログラミング言語でチェックデジットをチェックしてるサンプル?

マイナンバーのチェックデジットを計算する方法はさまざまな言語で紹介されています。個人番号の計算をプログラミング言語で書いたものをいくつか紹介しておきます。社内システムで使いそうなJavaとVBAのものです。

マイナンバーのチェックデジットを計算する(Java編) – Qiita
参照元:「Qiita」deaf_tadashi著(2016年1月、著者調べ)

マイナンバーのチェックデジットをVBAで算出 | HARD DAY'S NIGHT ブログ
参照元:「Northwind.mydns.jp」(2016年1月、著者調べ) チェック用の関数をコーディングする際に注意しなければいけないのが、引数を文字数にするということです。文字列の桁が合っているかチェックしてから、数値に変換して計算しないと、0始まりのマイナンバーがすべてエラーになってしまいます。

チェックデジット計算をデータベース側のSQLで行うサンプルも散見しましたが、そもそもマイナンバーを暗号化せずDBに保存しても問題ないかが気になりました。利用ユーザー単位でテーブル権限を変更できない仕組みの場合は、暗号化して保存し、データを処理するシステム側で複合化して利用するのが望ましいように感じます。

チェックデジット確認用の番号をおしえて?

エクセルなどでマイナンバーをチェックする関数を作ったけれど、自分のマイナンバーでしか確認できないのでは意味がないですよね。確認用の番号を用意してしっかりテストすることが大事です。

テストの考え方で重要なのが以下の2つをクリアしていることです。

1.ホワイトボックステスト:意図した計算になるように動いていること
2.ブラックボックステスト:やりたいことがきちんと実現できていること

チェックデジットのテストの場合、前述した3つのよくあるエラー「1文字の入力間違い・左右の数字の逆転・1桁置いた左右の逆転」がきちんと検出できるかも重要です。また、ちょっとマイナンバーで気になる点なのですが個人番号に関しては「0から始まる12桁の番号」になることもあるかもしれないので、その場合もテストケースに入れた方がいいでしょう。法人番号については最初の1桁がチェックデジットで、9から9で割った余りを引いているので必ず1~9の数字になります。
以下は正解するマイナンバー(個人番号)の例です。

123456789018
987654321093
123451234506
564782138953
854012300637

出典:

detail.chiebukuro.yahoo.co.jp
0から始まる正解のマイナンバーには以下のようなものがあります。

012345678903
000000000019

あと最小値と最大値で正解するかチェックで以下も必要でしょう。

000000000000
999999999996

マイナンバーのチェックディジット計算
参照元:三重大学教育学部教授・奥村 晴彦著のスクリプト(2016年1月、著者調べ) ※こちらのJavaScritptで試算しました。 エラーケースとしては、桁が少ない・多いケースにキーの入力ミスや見間違いのケースがあれば基本的なものは問題ないかと思います。また一覧に複数の番号を一度に入力する場合は、見間違えて同じ番号を二度入力していないか前行と同じでないかのチェックできるようにしておくと便利かと思います。

大変ですが、間違えると大変なのでしっかりとたくさんのテストを実施しておきたいですね。



もっと知りたいマイナンバー

マイナンバーと税金のこと

2016年(記事執筆時)の段階ではまず勤め先にマイナンバーを提出し、労働収入が一元管理されることになります。マイナンバーの導入をにらんでか、すでに普通徴収は原則許可せず特別徴収のみを受け付ける市町村が増えています。

筆者もここ5年くらいは普通徴収で払っていますが、市から会社のほうにわざわざ「特別徴収で払わないと違法です」と通知が来てびっくりしました。アルバイトやパートで副業をしている場合、今後税務署にはマイナンバーで両方の情報が紐づいて把握されてしまうので、申告しないなどの悪いことはできないですね。住民税が特別徴収しかだめであればそもそも抜け道が少ないかもしれませんが、ますます厳しくなる感じです。

いずれ銀行預金とマイナンバーがつながってくると、労働収入ではない投資などによる収入と金融資産についても個人情報が一元管理される可能性があります。把握が簡単になったことで、現在一律になっている投資への課税が累進課税に変わってくるかもしれません。

マイナンバーは国民の税金を管理し、税収をコントロールするための数字でもあるのです。

マイナンバーと会社とあなたのこと

マイナンバーに関する一番身近な出来事は、源泉徴収票や社会保険の手続きの際の会社への個人番号の提出だと思います。2016年1月からの起用は延期されましたが、2017年1月には実際の業務が始まることになるのではと思います。会社でもマイナンバーに関する規約の策定や書類修正などが必要となり、企業向けセミナーなどもさかんに行われています。

以下のように「特定個人情報の適正な取扱いに関するガイドライン」にも書いてありますが、企業は法律に定められた範囲でのみマイナンバーを取り扱うことができるようになっています。

要点
○ 個人番号を利用できる事務については、番号法によって限定的に定め
られており、事業者が個人番号を利用するのは、主として、源泉徴収票
及び社会保障の手続書類に従業員等の個人番号を記載して行政機関等及
び健康保険組合等に提出する場合である。

○ また、例外的な利用について、番号法は個人情報保護法に比べ、より
限定的に定めている。事業者の場合、利用目的を超えて個人番号を利用
することができるのは、①激甚災害が発生したとき等に金融機関が金銭
の支払をするために個人番号を利用する場合及び②人の生命、身体又は
財産の保護のために個人番号を利用する必要がある場合である。

出典:

www.ppc.go.jp
マイナンバーは「取得・利用・保管・廃棄」に関して厳しい決まりがあり、罰則も存在します。会社にマイナンバーを提出しても、規定で定めた業務以外で使用することは出来ません。パスワードでの保護を行ったり、利用できる人を制限したりして厳重に管理されることになります。

個人情報保護に関してのとりくみは、Pマークをとっているような比較的規模の大きい企業のみコストをかけて行っているイメージがありますが、マイナンバーに関してはすべての企業が行います。従業員への教育も企業の「すべきこと」としてあげられていますが、社会人としてしっかり知識を身につけておきたいですね。新しく責任者・担当者を決めることもあるでしょうから、コンプライアンスって何?とならないようにバッチリ予習して上司の目にとまりましょう。

マイナンバーと扶養のこと

マイナンバーを会社に提出するのは、従業員だけでいいかというとそういうわけではありません。扶養家族に関してもマイナンバーを会社に提出する必要があります。扶養家族のマイナンバーは従業員が代理で提出するという形をとるようです。

パートの勤務先でもマイナンバーを提出することになるので、扶養範囲以上に黙って働いていた人はそれが把握されてしまうような未来も待っているかもしれませんね。

まとめ

マイナンバーとチェックデジットについてまとめてきました。マイナンバー制度はまだまだなじみのないものですが、細かい仕組みを知ると少し身近に感じることができるのではないでしょうか。

「マイナンバーってなんですか?」と聞くようなのんびり女子ではなく、知識豊富な「ゆる理系女子」を目指していろいろアンテナを伸ばすとお仕事ももっともっと楽しくなっちゃいますよ。