web-dev-qa-db-ja.com

GDPRに準拠するためのメールアドレスのハッシュ

[〜#〜]更新[〜#〜]

非常にユニークなシナリオがあります。ユーザーアカウントの古いデータベースがいくつかあります。ユーザーの希望に応じて、新しいシステムでこれらの古いアカウントを新しいシステムの新しいアカウントに接続できるようにしたいと考えています。

したがって、たとえば、システムXでは、古い(としましょう)RPGキャラクターを持つ古いアカウントがあります。システムYには、別の古いアカウントがあり、その上に別のRPGキャラクターがいます。

私たちの新しいシステムでは、新しいアカウントを使用して、ユーザーがこれらの古いデータベースを検索して、古いRPGキャラクターを要求できるようにしたいと考えています。 (私たちのユーザーもこの機能を望んでいます。)

新しいアカウントの古いアカウントに再接続できるようにすることのみを目的として、ユーザーの古いアカウントのPIIをデータベースに保持したいと考えています。これは彼らに利益をもたらす素晴らしい機能ですが、GDPRおよびプライバシーポリシーの下で、最終的にはこの古いPIIをデータベースから削除する必要があります。

しかし、もし私たちがこの古いPIIを元に戻せないような方法で保存したとしたらどうでしょう。つまり情報を持っている人だけが肯定的な一致を得るでしょう。

私はセキュリティの専門家ではありませんが、単純なハッシュ(例:MD5)はハッキングが簡単すぎ(穏やかに言えば)、(技術的に)「追加情報」(つまりキー)を必要としないことを理解しています。

MD5の良いところは、高速であるということです(決定性があるという意味で)。つまり、100,000行のデータベースを非常にすばやくスキャンして一致を探すことができます。

MD5(およびSHA)が無意味になるほど安全でないと考えられる場合、一致を探すためにデータベースをスキャンするために他に何ができますか?私は、bcryptのような現代のハッシュは、まさにこの理由で遅くなるように設計されていると思います。

PIIのいくつかの側面をフィールド(たとえば、FirstnameLastnameEmailDOB)にマージしてからハッシュした場合、本質的にソルトが大きくなります。これはばかげた解決策ですか?

22

MD5またはSHAは関係ありません。ハッシュは仮名化に使用できます。問題は、他のソースからのデータを使用できないように、ハッシュをソルト(またはペッパー)する必要があることです。人を特定します。

私のメールはどこでも同じです。それのハッシュも同じです。つまり、この場合、ハッシュと私の電子メールは同義になります。ユーザー名とペアになっている人の正式な名前のように。この場合にハッシュを使用すると、GDPRに関して実際には何も得られません。

塩(またはコショウ)でハッシュすると、付加価値を知らずに匿名化をほぼ不可能にすることができます。この場合、塩(またはコショウ)がほぼトークンになります。

いつものように、DPOに確認してください。

36
schroeder

現実的には、仮名化は誰かのPII/NPIを難読化して、特定の個人にまでさかのぼって追跡できないようにする方法です。 GDPRは、標準に準拠するため、および正直に言うために使用する必要があるハッシュアルゴリズムを必ずしも指示するわけではありません。everyone =難読化のまったく同じ方法を使用していたため、大規模な単一障害点が発生しています。 (上記のように)最善の策は、ソルトで何らかのトークン化を使用して、アルゴリズムに余分なランダム性を追加して、簡単にブルートフォースできないようにすることです。

3
GhostInTheShell