レッスン
理論 — チェックディジット:Luhn、バーコード、ISBNと見逃される間違い
チェックディジットとは、番号全体がある規則を満たすように追加される一桁の数字のことです。ここでは、各桁の数字に位置に応じた係数を掛けたり変換したりして足し合わせた合計が、10や11といったモジュラス(法)の倍数になるという規則です。規則から外れる間違いは検出されます。規則を満たしてしまう間違いは検出されないため、チェックディジットは番号が間違っていることを証明できても、正しいことを証明することは決してできません。
各記号の意味
dᵢ- 右からi番目の桁の数字。チェックディジットはd0
wᵢ- 位置iの重み。バーコードの場合は交互に1と3、ISBN-10の場合はi + 1
D(d)- Luhn方式の2倍操作:2d。ただし9を超える場合は9を引くため、0 2 4 6 8 1 3 5 7 9となる
S- 各桁からの寄与の合計
m- モジュラス。Luhn方式とバーコードは10、ISBN-10は11。Sがmの倍数になる場合に検証を通過する
- 前提
- 一度に起こる間違いは一つであると仮定しています。一つの番号で二つの間違いが起こると互いに相殺される可能性があり、このページの集計ではそれらを考慮していません。また、比較表ではすべての数字のペアが同じ確率で出現するものとして計算していますが、実際のタイピングはそうではありません。Luhn方式が見落とす隣り合う数字のペアは09と90だけですが、この二つがどれくらいの頻度で隣り合うかは、どのような番号を扱うかに依存します。
- 成り立たない場合
- チェックディジットはセキュリティではありません。方式を知っている人なら誰でも検証を通過する番号を作ることができます。Luhn方式を通過したカード番号は単に正しく入力された番号に過ぎないというのはこのためです。また、ISBN-13がバーコードの方式を使用しているのも、ISBN-13自体がGS1の提供する978や979というプレフィックスのもとで作られたバーコード番号だからです。
全プロセスの詳細解説
-
ISBN-10の汚れて読めない数字の復元 4 ステップ
ISBN-10が0-11-000?22-9となっており、7番目の数字が汚れて読めません。この数字を求め、答えが一つに定まる理由を説明してください。ISBN-10を押して結果を確認してください。
-
左から右へ10から1まで重みが割り当てられるため、汚れた7番目の数字の重みは4になります。それ以外の九つの数字にそれぞれの重みを掛けて足し合わせます。
-
全体の合計が11の倍数にならなければならないため、欠けている数字の4倍がその差額を埋める必要があります。
-
11は素数なので、mod 11では割り算が可能です。4 × 3 = 12は11より1大きいため、3を掛けることで4を掛けた操作を元に戻せます。
-
2を当てはめると、このページで計算される合計値は44となり、ちょうど11の4倍になります。
解答
その数字は2であり、ISBNは0-11-000222-9です。当てはまる数字がこれだけなのは、0から10までの11個の値に4を掛けると、mod 11では11個の異なる余りとなり、そのうちのちょうど一つだけが8になるからです。これは、この方式がこの位置におけるすべての数字の間違いを検出できるのと同じ性質を別の視点から見たものです。つまり、すべての単一の間違いを可視化できる重みは、汚れた一つの数字の復元も可能にするということです。同じ位置で重みが2のmod 10の方式だった場合は、候補が二つになるかゼロになり、さらに正解から5離れた間違った数字をすべて見逃してしまうことになります。
-
参考文献 (3)
- The Luhn check digit as the IMEI standard defines it, step by step, with the worked example the page's IMEI preset reproduces (26053179311383, sum 53, check digit 7): 3GPP TS 23.003, "Numbering, addressing and identification", Annex B (normative): IMEI Check Digit computation. Published as ETSI TS 123 003 V18.7.0 (2024-09).
- The ISBN-13 check digit, the 1-3 weighting that barcodes use, with the manual's own example 978-0-11-000222-4: International ISBN Agency, ISBN Users' Manual, International Edition, sixth edition. London, 2012. Appendix 1, "Check digit calculation".
- ISBN-10's mod 11, the barcode's blind pairs 05, 16, 27, 38, 49 and Luhn's 09 and 90, the frequencies of real mistakes from Verhoeff's study, Gumm's theorem that no even-modulus scheme catches every swap, and Verhoeff's dihedral scheme with its tables: J. A. Gallian, "Error detection methods." ACM Computing Surveys 28(3), 1996, pp. 504-517. DOI 10.1145/243439.243457