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

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

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

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

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

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

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

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

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

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

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

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

  • Шифрование / Расшифровка больших файлов (.NET)
  • Хранение данных кредитной карты
  • Почему при использовании функции Non-Random IV с режимом CBC существует уязвимость?
  • Шифрование настроек приложения в web.config
  • Безопасность сообщений WCF без сертификата и windows auth
  • Давайте будем гением компьютера.