Надежно сохранять данные
У нас есть Java-приложение, работающее на Linux. когда приложение аварийно завершает работу и перезапускается, нам нужно восстановить (сохранить) очень конфиденциальную информацию, которая была сохранена в предыдущем запуске (глобальная статическая переменная). база данных запрещена (небезопасно). также важно, чтобы никто не мог незаметно изменить эту информацию (например, переопределить файл и т. д.).
заранее спасибо
2 ответа
Для защиты данных вам необходимо зашифровать их. Используйте AES-256 в режиме CBC или CTR с отступом PKCS7. Не храните ключ шифрования в вашем приложении. Вы можете хранить IV/nonce, так как он не должен быть безопасным.
Чтобы гарантировать, что данные не изменены, используйте HMAC с SHA-256. Вы должны использовать другой ключ для 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!
}