データを暗号化して同じパスワード/キーでログインする方法のトピックに関する以前の投稿を読みましたが、その概念、特にデータベースに安全に保存できるデータについては、まだはっきりしていません。
この素晴らしい投稿 は、次の2つの可能性を助言しました:
1:PBKDF2を使用してパスワードから暗号化キーを取得し、ログイン用のパスワードハッシュとしてキーの通常の暗号化ハッシュ(SHA-256など)を使用できます。
2:または、さらに注意が必要な場合は、PBKDF2を使用してパスワードから派生した中間キーから暗号化キーとパスワードハッシュの両方を取得します。
2番目の可能性に対する理解の図を作成しました。私が正しく受け取ったと思いますか?あなたはそれを実装するより良い方法を考えることができますか?
N.b。
[〜#〜] update [〜#〜]PyCryptodomex(Python)ライブラリがscrypt
関数を提供していることを発見しました。単一の入力キーから必要なハッシュ/キーの数を指定できます。たとえば、256ビット長の出力ハッシュが2つ必要な場合、それを指定できます。scrypt
は2 * 256bit = 512bit
キーを作成し、単純に2で除算して、256ビット長のハッシュを2つ生成します。その後、1つのハッシュをデータの暗号化に使用し、もう1つを認証に使用できるため、前の概念での第2レベルのscryt
およびSHA256
ハッシュの必要がなくなります。私は新しいコンセプトの視覚的な説明を作成しました。それについてのあなたの意見に感謝します:)
要約使用するライブラリとKDFに応じて、コンセプト1またはコンセプト2(基本的に同じですが、よりコンパクト)が機能すると思います。
「PW-Hash + Salt」とは、派生キーを意味する場合、あなたの理解は正しいです。
いくつかのバリエーションを見ました
一般的に、私は「念のためやってみよう」という論理(つまり、リスクとベネフィットを評価せずに恐怖を決断させる)は好きではありません。 Intermediate Keyの全体的な概念については懐疑的です。 YMMV。 :)