- Published on
クレジットカード番号の検証
- Authors
- Name
- 丸山 竜輝
はじめに
普段目にしているクレジットカードの番号ですがこれにも様々なルールやセキュリティ対策がなされています。今回はそれについて説明していきます。
番号の概要
まずクレジットカード番号がどのように構成されているかですがクレジットカード番号はISO/IEC 7812にて策定されており、6桁のBIN(Bank Identification Number, 銀行識別番号)もしくはIIN(Issuer Identification Number, 発行者識別番号)+残りの番号はイシュアによって決定されます。
BIN、IINについて
BIN、IINもまた複数要素で構成されており最初の1桁はMII(Major industry identifier, 主要産業識別子)と呼ばれており、カードを使用する業界を示し対応表を下記のとおりです。
MII値 | 産業 |
---|---|
0 | ISO予約値 |
1 | 航空 |
2 | 航空 / その他将来発生する産業 |
3 | 旅行・娯楽/銀行・金融 |
4 | 銀行・金融 |
5 | 銀行・金融 |
6 | 運送 / 銀行・金融 |
7 | 石油 / その他将来発生する産業 |
8 | ヘルスケア / 医療 / 通信 / その他将来発生する産業 |
9 | 国毎に割り当て可能 |
また以下は主な過去に存在していた若しくは現在存在するBINのリストです。
カードの種別 | プレフィックス | 番号長 | 検証 |
---|---|---|---|
American Express | 34, 37 | 15 | Luhnアルゴリズム |
中国銀聯 (China UnionPay) | 622126-622925, 624-626, 6282-6288 | 16 | なし |
Diners Club International | 300-303574, 3095, 36, 38-39 | 14 | Luhnアルゴリズム |
Discover Card | 60110, 60112-60114, 601174-601179, 601186-601199, 644-649, 65 | 16 | Luhnアルゴリズム |
JCB | 3528-3589 | 16 | Luhnアルゴリズム |
MasterCard | 510000 - 559999, 222100 - 272099 | 16 | Luhnアルゴリズム |
UATP | 1 | 15 | 不明 |
Visa | 4 | 13, 16 | Luhnアルゴリズム |
チェックディジットに関して
クレジットカード番号にはLuhnアルゴリズムが使用されており、主な目的として連番での発行をさせず、入力ミス等で他人のカードが決済されるのを防ぐためだと推測される。但しこれは計算可能な為悪意のある決済を防ぐ為のものではない。
セキュリティ面での検証
以上のルールを踏まえ当方が検証した内容を記述する。
検証概要
近年ではApple Pay等でクレジットカード番号の下4桁が管理用に表示され尚且つApple Payの場合クレジットカードデザインからある程度イシュアが特定可能な為そこからクレジットカード番号が推測できないか検証してみた。
BIN,IINの特定
まずカードデザインよりBINを特定してみる、BIN等は公にはされていないが以下サイト等で調べることができるがカード会社によっては途方もないBINの登録がありこの時点でカード番号を特定できるイシュアーが限られてくるが続きはBINが特定されたものとして進めていくBIN search
カード番号の特定
BINが特定されたものとして話を進めていきます。この時点で6桁のBIN+下4桁が判明していることになります。ここで全てのLuhnアルゴリズムに当てはまる数字を算出してみました(今回は16桁で)下記サイトでチェックしましたがゆうに100件を超えており特定が不可能でした。credit card number generator
まとめ
以上の通りスクリーンショットやレシート画像等から番号特定は現実的にはほぼ不可能という結果になりましたまた近年ではセキュリティコードの必須化や3D secure導入等が進んでおり仮に割れたところで現実的には決済できる加盟店は存在しないでしょう。