Linuxで実行されているJavaアプリケーションがあります。アプリがクラッシュして再起動すると、前回の実行時に保存された非常に機密性の高い情報 (グローバル静的変数) を回復 (永続化) する必要があります。データベースは許可されていません (安全ではありません)。また、誰もこの情報を変更できないようにすることも重要です (たとえば、ファイルを上書きするなど)。
前もって感謝します
Linuxで実行されているJavaアプリケーションがあります。アプリがクラッシュして再起動すると、前回の実行時に保存された非常に機密性の高い情報 (グローバル静的変数) を回復 (永続化) する必要があります。データベースは許可されていません (安全ではありません)。また、誰もこの情報を変更できないようにすることも重要です (たとえば、ファイルを上書きするなど)。
前もって感謝します
データを保護するには、データを暗号化する必要があります。PKCS7パディングを使用したCBCまたはCTRモードでAES-256を使用します。アプリケーションに暗号化キーを保存しないでください。IV / nonceは安全である必要がないため、保管できます。
データが変更されないようにするには、SHA-256でHMACを使用します。HMACには、AESに使用したものとは異なるキーを使用する必要があります。
Jasyptを使用することをお勧めします。Externalizable
オブジェクトストリームを実装および暗号化できます
BasicPasswordEncryptor encryptor = new BasicPasswordEncryptor();
String cipher = encryptor.encryptPassword(<<stream to encrypt as string>>);
...
if (encryptor.checkPassword(inputPassword, encryptedPassword)) {
// correct!
} else {
// bad login!
}