Надежно сохранять данные

У нас есть 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!
}
Другие вопросы по тегам