Как безопасно хранить приватный RSA ключ, чтобы использовать его в Java-приложении?

Необходимо иметь какое-то защищённое (к примеру, системным паролем) хранилище ключей, но чтобы была возможность что-то этим ключом шифровать.
Возможно, я неправильно понимаю принципы шифрования.

В общем необходимо сгенерировать при инсталляции приложения пару приватный/публичный ключ и при отправке серверу данных подписывать их приватным ключом. При этом нужно как-то обезопасить от подделки данных путём кражи приватного ключа: речь идёт о ПО терминалов оплаты, где попросту могут украсть терминал целиком вместе с жёстким диском.

P.S. К примеру, чтобы этот ключ могло прочитать из java keystore только подписанное приложение (сертификат предварительно загружен в keystore).
  • Вопрос задан
  • 3504 просмотра
Решения вопроса 1
@codecity
чтобы этот ключ могло прочитать из java keystore только подписанное приложение (сертификат предварительно загружен в keystore)

Стандартного решения нет.

Попробуйте такой вариант: при первом запуске приложение стучится на управляющий сервер и докладывает о необходимости инициализации. Оператор вводит PIN-код, который соответствует этому терминалу (при этом он убеждается, что терминал не украли, к примеру, с помощью видео).

PIN-код используйте для расшифровки приватного ключа. После чего не сохраняйте PIN или расшифрованный ключ на диске -- только в памяти. После отключения питания потребуется повторная инициализация.

Кроме того, нужна будет небольшая аппаратная поддержка: при перемещении терминала должно происходить отключение или перезагрузка. Реазиловать можно с помощью гироскопа или обычного геркона+магнитика.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы