JavaWebアプリケーションにはTomcatを使用します。WEB-INFフォルダの下にプロパティファイルがあります。
AES暗号化は、キーの生成とパスワードの暗号化に使用されます。暗号化されたパスワードはプロパティファイルに保存されます。暗号化キーはどこに保存する必要がありますか?キーと暗号化されたパスワードを同じプロパティファイルに入れるのは良い考えですか?または、キーを「webapps」ディレクトリの外部に保存する必要がありますか?
JavaWebアプリケーションにはTomcatを使用します。WEB-INFフォルダの下にプロパティファイルがあります。
AES暗号化は、キーの生成とパスワードの暗号化に使用されます。暗号化されたパスワードはプロパティファイルに保存されます。暗号化キーはどこに保存する必要がありますか?キーと暗号化されたパスワードを同じプロパティファイルに入れるのは良い考えですか?または、キーを「webapps」ディレクトリの外部に保存する必要がありますか?
Windowsでは、レジストリとDPAPIを使用できます。レジストリを使用するのは面倒ですが、絶対的なセキュリティを確保し、オペレーティングシステムを活用して貴重なデータを保存する場合は、必要な苦痛が伴います。
他のOSXでは、キーチェーンを利用できます。
Linuxでは、ファイルのパーミッションを使用してファイルを保護します。
あなたが提案していること:
キーと暗号化されたパスワードを同じプロパティファイルに入れるのは良い考えですか?
お金を金庫に保管し、その組み合わせを金庫に付箋に書いて、メモを金庫に貼り付けるようなものです。あなたがしたことは泥棒に不便をかけることだけですが、意味のあるレベルのセキュリティを追加することはできません。
プロパティファイルが暗号化キーを格納するのに十分安全である場合は、パスワードをプレーンテキストで保存できます。
JavaAPIのKeyStoreクラスを検討しましたか。これは、SunのJava暗号化アーキテクチャの一部です。
私は以下の提案があります、
キーをWARに保存しないでください。各インストールのキーを保護する責任は私たちにあります。本番環境では、キーファイルをスマートカードに保存することで実際に保護できます。
定期的に回転できるように、キーがバージョン管理されていることを確認してください。
生のキーマテリアルの代わりに、パスフレーズを保存してキーを生成します。これにより、新しいキーを簡単に追加できます(アルゴリズムやキーサイズなどを気にする必要はありません)。また、いくつかのあいまいさを追加します。