2017-01-17 5 views
0

システムの連絡先の重複を減らす方法を見つけようとしています。名前、電子メールアドレス、自宅の住所、電話番号は変更される可能性があるため、100%固有の識別子ではありません。機密情報の暗号化ハッシュをどの程度安全に保管していますか?

ただし、生年月日とSSNは変更されません。私は連絡先を一意に識別し、重複をマージするための暗号化ハッシュとしてdate_of_birth-ssnの組み合わせを格納することを考えています。

私が理解していることは、数学的には「不可能」であるため、この方法ではssnを保存するのは安全です。

私は最も安全な方法は何も保存しないことを知っています。しかし、人を一意に識別するために私が他の情報を使用できるかどうかはわかりません。

ssnのような機密情報を利用しないユーザーを一意に識別する優れたソリューションがありますか?

答えて

2

これは確かにではなく、が安全です。

一般に、ハッシュを逆転することはできません。私がランダムなデータの大きな塊を持っていて、あなたにハッシュを与えるならば、ブロブを取り戻すことはできません。それはあなたが提案しているものではありません。

年齢は365日で、100歳未満の人は誰でも、約36500のDoBがあります(100人を超える人もいますが、あなたの連絡先はありません - DoBの実際の数はおそらく約20,000です)。 SSNは9桁であるため、実際には1,000,000,000の可能な値しかありません(実際ははるかに少ない)。

合計で、20,000,000,000,000の可能な組み合わせがあると言われています。多くのように聞こえる?そうではありません。私が使用しているこのラップトップは、1コアあたり1秒あたり1,100万を超えるハッシュを処理できます。可能なすべての組み合わせを1,707,026秒または19日でテストできます。 4歳のラップトップコア1台で。数千ドル(特別なハードウェアなし)のコストを要する20コアの強力なサーバーは、このテーブルを数時間で準備することができます。そして、私はハッシュ関数ではなく、あなたが見るかもしれない出力のサブセットを逆にすることができます。

+0

興味深いことにSSNには、可能性を減らすパターンがあります。最初の3桁は問題の地域を示していますが、私のSSSはグループに属しています:「発行されていない」ので、私は存在しないと思います。 – zaph

+0

@synp、詳細な応答に感謝します。私はそれが良い解決策ではないとあなたの評価に同意し、私はそれを使用すべきではありません。私は実際のアルゴリズムのためにBCryptを使用しています。暗号化する前に値に塩を追加すると、少し助けても「宇宙の時代がかかります」というような安全性が損なわれるかもしれません。情報を保存するのではなく、最初の/最後の名前とDoBのチェックが残っていると思います。名前が変わったときに一意の例外を処理するだけです。 –

関連する問題