Подтвердить что ты не робот

Как безопасно хранить ключи шифрования в java?

У меня есть объект свойств java с информацией аутентификации для веб-службы. Мне нужно зашифровать эти данные, но я не знаю, где мне нужно хранить ключ шифрования, чтобы он оставался в безопасности.

Каковы наилучшие методы шифрования этих данных и их безопасного поиска?

Есть ли какое-либо преимущество в использовании хранилища ключей?

ws_user=username
ws_password=password
ws_url=https://www.whatever.com/myservice
4b9b3361

Ответ 1

Ваша проблема является общей. В linux пользовательские пароли хранятся в текстовом файле. Хотя хранятся только хэши паролей, если злоумышленник получает доступ к этому файлу, он не займет много времени, чтобы обнаружить какой-либо пароль, используя атаку в автономном словаре. В этом случае ОС полагается на права доступа к файлам, чтобы запретить доступ к неавторизованным пользователям. В вашем случае это немного отличается. Вы должны правильно настроить права доступа к файлам паролей и обеспечить физическую безопасность сервера.

Ответ 2

Это проблема куриного яйца.
Затем вам нужно будет найти, где хранить пароль для хранилища ключей и т.д....

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

Или вы можете зашифровать данные с помощью симметричного шифрования и заблокировать пароль в своей банке, что небезопасно, но требует некоторых усилий, чтобы найти его, и вы можете делегировать ответственность за права файловой системы на тех, кто может получить доступ к вашим файлам.

Ответ 3

Суть в том, что где-то должен быть пароль "root-of-the-chain" в незашифрованном виде. Локальный файл, защищенный ОС, локальный файл с защитой OS, жестко закодированный в источнике и т.д.

Единственный способ - потребовать от человека ввода начального пароля при запуске приложения, что, очевидно, невозможно для приложений, которые необходимо автозапускать.

Ответ 4

У меня был успех, используя Jasypt StringEncrytor для шифрования конфиденциальной информации в файлах свойств и некоторых внутренних процедур для получения солей и получения пароля. Поскольку вы используете веб-службу, вы можете использовать Jasypt Конфигурация веб-PBE, чтобы вручную вводить пароль во время развертывания или даже сворачивать свое аналогичное решение.