第33回 クレジットカード番号の不思議、マイナンバーも?

現在でも個人情報の漏えいは様々なサイバー犯罪だけでなく、振り込め詐欺を含む様々な詐欺の温床、そして犯罪に巻き込まれなくとも、必要のないメールやSNSでの勧誘、それに身に覚えのない誹謗中傷と言った迷惑行為の原因となっています。個人情報とは、文字どおり氏名、住所、電話番号、メールアドレス、それにSNS(ソーシャルネットワークサービス)のアカウント等です。さらに最も重要な個人情報はパスワードです。以前からパスワードが洩れる可能性がどのような細心の注意を払ったとしても漏れることがあり得ることから、銀行やモール等、資産やその利用に関するサイトでは、2要素認証やワンタイムパスワードの利用が進められています。もう一つ重要な個人情報はクレジットカードの番号です。メールアドレスやパスワードの漏えい以上にクレジットカード番号の漏えいが問題視される理由は、その利用が直接的に商品の購入や決済に結びつくからです。ネット決済では多くがカード番号と有効期限、それに3桁の数字(セキュリティコード)を入力するだけで成立します。カード番号の漏えいは不正利用に結びつき、損失を被る可能性があるのです。それほど秘匿性のクレジットカード番号ですが、どのような仕組みで作られているのでしょうか。ある人は、「銀行の暗証番号が4ケタに対して、クレジットカード番号は14ケタから16ケタもあるので安全だ!」と言います。これは大きな間違いです。まだ暗証番号は自由に、すなわちランダムに付けることが可能です。対してクレジットカード番号はある規則に基づいて作られているのです。今回はこの規則について説明します。

原則として、14ケタから16ケタで構成されるクレジットカード番号は国際的な取り決めがあります。番号はかならず3つの部分に分けられます。最初の6ケタはBINと呼ばれる発行元の識別番号です。最後の1ケタはチェックデジットと呼ばれるものです。残りのケタが利用者個人を識別する番号です。最初が4で始まれば、必ずVISAカードです。最初が34、あるいは37で始まれば必ずアメリカンエクスプレスカードです。JCBは35から始まっていますが、35から始まればかならずJCBとは保証されていません。プレフィックスと呼ばれる接頭符号が用いられており、最初のケタが4であれば、VISAが残りの5ケタを自由に使えることができるのです。JCBの場合、最初の4ケタが3528から3589までの連番については残りの2ケタを自由に使えます。つまりJCBのカードが発行できる銀行や組織は最大6200となるわけです。VISAであれば10万となります。それぞれの発行元がほぼ10億以上の会員を有することが可能です。この方法はIPアドレスの割り当て方法と同等です。IPv4のIPアドレスでは、利用するネットワーク大きさに基づいて、クラスA、クラスB,クラスCという割り当て方法が取られていました。アドレス枯渇が叫ばれてからは、有名無実ですが、インターネットの教科書では必ず説明されています。32ビットのIPアドレスで最初のビットが0であれば、クラスAであり、VISAのカードと同様、多くのホスト(発行元)を識別できます。つまり発行元や会員を有することが出来るのです。

カード番号の最後のケタはどのようにして決まるのでしょうか。これはチェックデジットと言って、カード番号の記入間違い等を発見するために用います。この1ケタは以下の規則を満足するように与えられています。

最後のチェックデジットから数えて偶数番目のケタを2倍します。そしてすべてのケタの数を足し合わせます。2倍した偶数番目のケタが10を超え、2ケタになっている場合はそれぞれのケタを足し合わせます。その合計が10で割り切れるようにチェックデジットを与えます。

チェックデジットはその名の通り、番号の間違いを検出(チェック)するものです。どのケタでの数字の間違いを検出することができます。先ほどの規則通り、10で割って余りが0にならなければどこかのケタが間違っていることになります。また、09あるいは90以外のケタの順序間違い(入れ換わり)も検出できます。このようなチェックデジットはクレジットカード番号だけでなく、いたる所で使われています。バーコードにも使われ ていて、バーコードの読み取り間違いを防いでいます。コンピューターメモリにも使われていて、メモリアクセスでの間違いを防いでいます。限界まで高速に動作するメモリでは読み取り間違いが起こりえるのです。現在では間違いを検知するだけでなく、チェックデジットの機能を進化させて、間違いを自動的に訂正するまでになっています。これを誤り訂正符号と呼び、数学での数論や代数曲線を利用した高度な符号が設計され、利用に具されています。

BINとチェックデジット以外が個人の利用者を識別する番号になります。VISAやJCBのように16ケタである場合、9ケタがそれに当たります。9ケタすべてを使えば10億人を識別できますが、9ケタすべてを使っているわけではありません。すべてを使うと利用可能なカード番号が容易に作れてしまうからです。一つのBINに対して6ケタ程度しか利用していないと考えられます。それでもランダムに千通りの番号を作れば正しいカード番号にたどり着く可能性があります。実際には9ケタをランダムに選んでいるわけではなく、組織的に作っています。この方法は公表されていませんが、「クレジットマスター」とか「カードジェネレーター」と呼ばれる方法や装置が出回っていると言われています。

少なくとも有効なカード番号を推定することは、暗証番号を推定するよりも簡単なのです。カード番号をいくら秘匿していたとしても、そカード番号が不正に利用される可能性があるのです。クレジットカードに対する最大の防御法は毎月の明細を確認することです。クレジットカード会社では最初から不正に利用される可能性を考慮しています。そのためにクレジットカードには必ず保険が掛けられているのです。早期に不正な利用が確認されれば保険によって保証されるのです。