Как поделиться секретным ключом разными приложениями

Я хочу зашифровать / расшифровать некоторый текст, используя криптографию с симметричным ключом. Я использую классы, предоставляемые библиотекой apache shiro. (Org.apache.shiro.crypto.DefaultBlockCipherService)

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

Как я могу сериализовать ключ в файл и снова сгенерировать ключ из файла?

-Спасибо


person Varun    schedule 31.10.2014    source источник


Ответы (1)


Ответ, который я даю, больше касается развертывания / эксплуатации, но он может решить вашу проблему. Я смотрю на суперкласс для справки, в котором есть реализации шифрования и дешифрования, содержащие ключ.

Вы могли:

  1. Передайте всем экземплярам приложения строку, представляющую это развертывание как переменную среды. (Возможно, это номер развернутой версии или дата хеширования, или что-то в этом роде).
  2. Разработайте свое приложение так, чтобы оно потребляло и хешировало это значение, используя алгоритм по вашему выбору при запуске. Это ваш ключ, который доступен как синглтон для вашего кода, который шифрует / дешифрует сообщения.
  3. Убедитесь, что ваш механизм развертывания (будь то вручную или какой-то код) дает всем экземплярам одинаковое значение. (т.е. выберите что-то совместимое с развертыванием или развернутым кодом)

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

Надеюсь, это то, что вы искали.

person alph486    schedule 31.10.2014