私はおそらく必要以上に多くのことをしている奇妙な暗号の問題に遭遇しました。私は現在の低熱を非難します. 少なくともいくつかのレビューなしに、暗号関連のものに独自のソリューションを展開するのは本当に嫌いです.
私は、サード パーティ サービスを統合するための SSO ソリューションを実装している最中です。このソリューションでは、独自の認証プラットフォームに対してユーザーを認証します。ユーザーが適切に認証されると、限られた数の一貫して利用可能な変数が返されます。
特定のユーザーを常に表すことが保証されているこれらの 1 つはlogin ID
、ネットワーク上のユーザーです。このコンテキストで許可される他のものは、特定のユーザーに対して同じままであることが保証されていません。
login ID
サードパーティのサービスに共有トークンとしてプレーンテキストで保存できません。(理由を質問する前に、非常に単純な理由があります: 法務上好ましくない... この ID は FERPA に敏感にならないように特別に作成されましたが、本質的に一度だけ削除されます)
私はそれをハッシュすることができます。おそらく他の場所に平文で保存しないのには十分な理由があるので、少なくとも合理的にハッシュしたいと思います。通常、特定のユーザーに機密性の低い識別子が他にある場合は、機密情報 (パスワードの場合など) を暗号化し、そのソルト + ハッシュと機密性の低い PK 識別子をテーブルに格納してから、比較を行うときに、機密性の低い識別子に基づいてバックアップします。
検索を実行するための機密性の低い識別子がなければ、一意のソルトなしで基本的なハッシュ操作を行うだけで行き詰まるように思われます (まだそれらをペッパーすることができます)。自分の DB に保存するものはすべて、トークンとして渡されるものと同じくらい脆弱になるため、生login ID
の s からソルト化およびハッシュ化された s へのマップ テーブルを作成しても意味がありませんlogin ID
。私が保存したすべてのソルト+ハッシュに対して特定のハッシュを盲目的にテストするのはばかげています。
先に進んで SHA2 をペッパー ザlogin ID
s で使用して、1 日で終了することもできます (これらは結局のところ、パスワードではなく「単なる」ログイン ID であり、その解決策は少なくとも適切であると見なされています)。この場合のより良い解決策がない場合は?