#22 データセキュリティを向上させる技術〜暗号化/ハッシュ化/トークン化の違いの話〜
はじめに
書きたいことを一気に書いたらスッキリしてしまい放置気味で久しぶりの更新となりました。
データのセキュリティを向上させる技術といえば暗号化を思い浮かべる人が多いと思いますが、そのせいかシステム部門の人間でもハッシュやトークンと区別せずに何でも一括りに「暗号化」と言う人がいます。ところがこれらは全く異なるプロセスと目的を持っているため、ユーザーへこのような表現をすることは大きな誤解を招く可能性が高く私はNGだと思ってます。
カード業界においてはApple Payの登場で広く認知されることになったトークナイゼーション(トークン化)ですが、これらの決定的な違いを簡単に書いておきます。
暗号化(Encryption)
目的:データの機密性を保護するために使用される
方法:データを特定のアルゴリズムと鍵を使って変換し、第三者が理解できない形式にする
可逆性:暗号化されたデータは、適切な鍵を使用して元のデータに複合(復元)することができる
用途:データ通信の保護、ファイルの保護、データベースの保護など
例:AES、RSAなど
ハッシュ化(Hashing)
目的:データの整合性を確認するために使用される
方法:データを固定長のハッシュ値に変換する(ハッシュ関数を使用してデータを一方向に変換する)
可逆性:ハッシュ化されたデータは元のデータに戻すことができない(理論的には可能だが非常に困難)
用途:パスワードの保存、データの整合性チェック、デジタル署名など
例:SHA-256、MD5など
トークン化(Tokenization)
目的:センシティブなデータを保護するために使用される
方法:元のデータをトークンと呼ばれる一意の識別子に置き換える(トークンは元のデータと直接的な関係を持たない)
可逆性:トークン自体は元のデータを含まないため、トークン化システム(=TSP)を使用しない限り元のデータに戻すことはできない
用途:クレジットカード情報の保護、個人情報の保護など
例:PCI DSSに準拠したクレジットカード情報のトークン化など
まとめ
暗号化はデータを保護し必要に応じて元に戻すことができるもの、ハッシュ化はデータの整合性を確認することに使用され元に戻すことはできない、トークン化はセンシティブなデータを保護しトークン化システムを利用しない限り元に戻すことはできない、と覚えておけばOKです。
それぞれの技術は異なる目的と特性を持っているため適切なシナリオで使用することが重要です。
なお、カード業界においてはトークン化は上でも示したとおりカード番号のトークン化で使用されるのが主ですが、暗号化・ハッシュ化においては実際にはこの技術を組み合わせて使用されている、とイメージするのが良いかもです。