顧客データにはMD5・SHA-1・SHA-256のどれを使うべきか

8appsチーム·

ツールは5つのアルゴリズムを提供しますが、アップロードに必要なのは1つだけ。Google・Meta・TikTokが実際に受け入れる形式と、一行で言えるルール。

一行で言えるルール

送信先のドキュメントに明文で別の指定がない限り、SHA-256、16進数、小文字を使ってください。以下はその理由と例外です。

各プラットフォームのドキュメント

  • Google Ads: "Use hex SHA256" ――顧客データの形式に関するページがSHA-256と16進エンコードを名指ししています。
  • Meta: SHA-256のダイジェスト、16進数で小文字――ドキュメントは "HEX representations… using lowercase for A through F" と指定しており、公開されているテストベクターもSHA-256のダイジェストです。
  • TikTok: 選択肢を明記している例外です――"MD5 and SHA256 encryption is supported" とあり、暗号化前のファイル内容は "in all uppercase or lowercase" とされています。ハッシュ化されていない値も受け付け、TikTok側でハッシュ化します。

顧客リストのアップロードにSHA-1を指定しているところはなく、SHA-256より強力なものを要求しているところもありません。

SHA-256が選ばれた理由

MD5(1992年)とSHA-1(1995年)は衝突耐性の点で暗号学的に破られており、いずれも業界全体でとうにセキュリティ用途から退いています。もっともアップロードのマッチングにおいては、各プラットフォームの選好が結論を決めます。ドキュメントが名指ししているのはSHA-256であり、したがって一致するのもSHA-256です。TikTokのMD5対応は、レガシーへの配慮と読むのが妥当です。対応していることは推奨されていることではありませんし、SHA-256の列ならTikTokにも使え、他の2社にも再利用できるロジックとして残ります。

ダイジェストを一目で見分ける

16進ダイジェストの長さはアルゴリズムごとに固定されているため、スプレッドシートの列は自ら正体を明かします。

アルゴリズム16進の長さ見た目
MD532文字9e107d9d372bb682…
SHA-140文字2fd4e1c67a2d28fc…
SHA-25664文字62a14e44f765419d…

=LEN(B2) を列に沿って引き下げれば、正体不明のファイルの中身がわかります。32ならMD5、64ならSHA-256、128ならダイジェストがさらにハッシュ化されたということです。引き継いだ「ハッシュ化済み」リストを調べる方法として、これ以上速いものはありません。

アルゴリズムでは直せない部分

正規化が不十分な入力に対する完璧なSHA-256は、何とも一致しません。大文字小文字、空白、プラットフォームごとに異なる電話番号形式――マッチ率を決めるのは正規化であり、アルゴリズムは送信先が期待するものでありさえすればよいのです。正規化のルールはメールアドレスと電話番号のハッシュ化ガイドにあります。アルゴリズムはここで選び、本当の作業はそちらで行ってください。

Hash Dataの位置づけ

Hash Dataは複数のハッシュアルゴリズムをGoogle スプレッドシートの数式として提供します。ある送信先がSHA-256を求め、旧システムがまだMD5を求めているとき、どちらも同じシート内で――実際にマッチの成否を決める正規化の数式のすぐ隣で――引き下げるだけで済みます。

出典