現在、当社の認証サービスを開発中です。パスワードのハッシュに使用されるソルトを、ハッシュされたパスワードと一緒に格納する必要があるという点で、どうにかして格納する方法を理解しています。つまり、すべてのアカウントについて、一意のソルトも作成されます。
AESキーとIVをどのように保存するのですか?すべてのアカウントにも固有のAESキーとIVが必要ですか?または、1つのアプリ全体のAESキーともう1つのアプリ全体のIVが必要ですか?
私はこれを読んだ post だが、それは私がそれらを保存すべき場所にのみ答える。
なぜについてほとんど説明していませんが、対称暗号化を使用していますが、暗号化と復号化が同じデバイスで行われるという条件で、暗号化操作ごとに同じキーを使用しますが、IVは異なります。
IVは秘密の値ではありませんが、CSPRNGを使用してランダムに生成する必要があります。これは非常に重要です。
解読中に簡単に取得できるように、結果の暗号文にIVを付加するのが一般的な方法です。
IVは暗号文と一緒に保存します。これは秘密ではありません。ただし、AES(またはその他のブロック暗号)にはさまざまなモードがあることに注意してください。 GCMについては this 質問および also thisを参照してください。
この背後にある主要な点は、同じキーを使用するたびにIVは一意でなければならないということです。通常はランダムである必要があります(強力なCPRNGを使用)。ただし、一部のモードはノンスを許容します。
質問に直接回答するには:はい、1つのアプリ全体のキーを使用できますが、1つのアプリ全体のIVは使用できません。
派生 ユーザーパスワードのキーを使用して、ユーザーデータの暗号化に使用することもできます。ただし、これは「パスワードを忘れた」機能を複雑にします。