プライマリアカウント番号(PAN)など、保存した情報を判読不能にするための一般的な方法は以下のとおりです。
マスキングは、データをユーザーに提示する際にデータの機密性を維持することを目的としています。レストランや店舗でクレジットカードを使用したときに印刷された領収書を見ると、このプロセスのことがわかります。PANの特定の桁が実際の桁ではなく「X」として表示されます(下記の図を参照)。PCI DSS要件3.3では、PANの表示は、職務を遂行するのに必要最小限の桁数に制限する必要があり、先頭6桁および末尾4桁以外を表示することは認められていません。
表示用にPANをマスキングする
出典:タレス
トランケーションは、PANのサブセットだけを保存することで、保存データを判読不能にします。マスキングと同様、先頭6桁および末尾4桁以外を保存することはできません。
PANをトランケーションする
出典:タレス
ハッシュ関数は、明確に定義され、安全性が実証された暗号化プロセスです。任意のデータブロック(この場合はPAN)を別の一意のデータ文字列に変換します。つまり、PANごとに結果が異なります。一方向ハッシュプロセスは元に戻せません(そのため「一方向」と呼ばれます)。元のデータブロックに変更を加えると異なるハッシュ値が生成されるため、データが変更されていないことを実証するために広く利用されています。
PCI DSSに準拠するためにハッシュ関数を利用する方法を下記の図に示します。この手法では機密性が確保されます(ハッシュ化されたPANから元のPANを再作成することは不可能です)。ただし、トランケーションと同様、保存したデータを後続のトランザクションに使用することはできません。
PANの一方向ハッシュ化
出典:タレス
カード会員データ環境内で1つのクレジットカードのトランケーションバージョンとハッシュ化バージョンを同時に保持することはできません。同時に保持するには、2つのバージョンを関連付けてPANを再構築できないように、追加の制御機能を実装する必要があります。
トークン化とは、元のPANを代用データ(トークン)で置き換えるプロセスです。トークンは、正規のPANのように見えても攻撃者にとっては価値のないものです。ほとんどの実装において、プロセスは可逆的で、トークンは必要に応じて元のPANに戻すことができます。トークン化は、保存したPANに後続のトランザクションからアクセスする必要がある場合に使用されます。
トークンはさまざまな方法で作成できます。一般的な方法としては、次の2つがあります。
トークン化プロセスの確定度は、特定の状況では重要になる可能性があります。すべては、トークンをどのように使用するかによって決まります。場合によっては、トークン化プロセス中にPANのフォーマットを保持するだけでなく、PANの特定の桁を保持することも必要とされます(下記の図を参照)。
PANのトークン化(末尾の4桁を保持)
出典:タレス
ある意味で、暗号化の目的は、トークン化の目的と似ており、PANデータが攻撃者にとって本質的に価値のないデータに置き換えられるという点が共通しています。暗号化は、標準化された暗号化アルゴリズムと鍵を使用して、元のデータから暗号化したPANを導出します。暗号化のアルゴリズムは広く知られているため、このプロセスのセキュリティは、暗号化鍵の強度と処理に依存します。そのため、ハードウェアセキュリティモジュールが広く利用されています。
通常、暗号化プロセスでは、データのフォーマットが変更されます。一般的には、データを暗号化すると、データサイズが大きくなります。トークン化が元のPANデータのフォーマットを保持するのと同じ理由で(データを処理する既存のシステムに対する変更を最小限に抑えるため)、多くの場合、フォーマット保持暗号化(FPE)が使用されます(下記の図を参照)。
PANの暗号化(FPEを使用、末尾の4桁を保持)
出典:タレス