1

次のような問題があります。

「A社」のコンサルタントとして働き始める。彼らの人事担当者は彼らのアカウントを設定します。「person」テーブルと「person-company」テーブルの人のレコードが作成されます。

その人は「B社」(A社が知っているかもしれないし知らないかもしれない)で働いています。会社Bが情報を入力するとき、「person」にレコードを作成するのではなく、「person-company」にレコードを作成する必要があります。

その人は州のトレーニングを行う必要があるため、トレーニングを行うときにいずれかの会社のサイトにログインしている場合は、合計時間をその人と一緒に残しておく必要があります。

個人テーブルのPKを設定して、各企業に結合することはできますが、ルックアップを実行できるように、追加の「xyz」を追加した個人のSSNのハッシュのようなものが必要だと思います。B社はその人のSSNを持っているはずであり、これは普遍的である必要があります。

質問:

1)他に参加する方法はありますか?

2)ハッシュ化されたSSNアプローチを使用する場合、一方向の暗号化にMySQL / PHPに使用するのに最適な暗号化は何ですか?

私は他の場所で公開鍵/秘密鍵の解決策が最善かもしれないと読みましたが、その人は最初は自分のアカウントを設定していないので、これがどのように機能するかわかりません。

ありがとう

4

3 に答える 3

2

PKIはユースケースにとって非常に複雑であり、システムのセキュリティホールの数を増やす可能性があります。ハッシュ化されたSSNを使用すると、迅速でかなり移植性が高くなります。SHA-2をお勧めします。実際、連邦情報処理標準の一部として推奨されています。

于 2012-05-07T17:17:22.273 に答える
2

ハッシュを安全にするには、レインボー攻撃を防ぐためにランダムなソルトが本当に必要です。ただし、ランダムソルトを使用すると、ルックアップ値として使用できなくなります。

ハッシュをその人の名前でソルトすることは、何もないよりはましであり、それでもルックアップを実行することができます。

PKIアルゴリズムは一般に、同じキー長を使用する優れた対称アルゴリズムよりも弱いため、可逆暗号化アルゴリズムの使用を検討している場合は、PKIを使用したくないでしょう。

ランダムにソルトされた一方向ハッシュアルゴリズムが理想的であり、SHA1以上でも問題ありませんが、PBKDF2の方が優れています。

SHA2はMySQL5.5以降でサポートされており、SHA1とSHA2の両方が16進エンコードされたハッシュ値を返すため、インデックス付きの固定長CHAR列に格納できます。

于 2012-05-07T18:58:31.810 に答える
2

この記事はあなたがしていることに非常に関連しているかもしれないと思います。確かに、セキュリティ上の理由と法的責任のためにSSNを「匿名化」したい場合は、単にそれらをハッシュするだけでは不十分です。

それらをハッシュするだけで完全に決定論的なプロセスになるため、個々のSSNを効果的に「マスク」するには、プロセスをランダム化する必要があります。それ以外の場合は、SSNのすべての可能な組み合わせをブルートフォースするだけで(ハッシュ関数をブルートフォースしようとするよりもはるかに少ない作業で済みます)、一致する値を探すことができます。

これが成り立つ理由を理解するために、SSNが0と1の2つの値を取ることができるという最も単純な例を取り上げます。ハッシュ関数の品質と強度に関係なく、最終的には2つの可能な結果しかなく、簡単に確認できます。これはどれです。

これは、パスワードなどの前処理を最初に実行せずに直接ハッシュするべきではない理由の古いゲームです。基になるデータには十分なエントロピーが含まれていないため、事前に計算されたテーブルでのルックアップのターゲットになりやすいでしょう。

SSNがプライベートで機密になるとすぐに(すべての国にあるわけではないので、コメントで私の愚かな質問を許してください:)、パスワードの保存にも使用されるのと同じベストプラクティスが特定のケースにも適用できるはずです。 bcrypt、scrypt、PBKDF2(Marcus Adamsによってすでに推奨されている)などの初期エントロピーの欠如を補う適応ハッシュアルゴリズム。

于 2012-05-08T20:38:20.043 に答える