2017-02-21 5 views
1

У меня есть 2 приложения NodeJS, и они обмениваются некоторыми данными. Данные шифруются через AES. В настоящий момент AES KEY жестко закодирован в коде javascript на клиенте и на сервере.Где хранить данные?

Вопрос в том, что такое лучшая практика? Где я могу хранить ключи на клиенте/сервере? Оба приложения - это 100% консольные приложения. (без взаимодействия с пользователем/браузером).

UPDATE: Я использовал термины client/server. Потому что - мне и в отношении приложения. логики его отношение сервер/клиент. НО, но приложения. буквально работают на двух отдельных экземплярах сервера AWS. Я даже могу сделать IP-ограничения между двумя экземплярами. Таким образом, никто не должен иметь доступ к экземплярам, ​​другим из которых является учетная запись AWS RDP, а через порты два экземпляра - это передача через ...

Они обмениваются данными через соединение через веб-сокет, а иногда они также получают доступ к API HTTP, работающему на третий экземпляр ... вот и все ... так безопасно ли это, чтобы ключи были жестко закодированы или где их разместить?

+0

общественный и закрытый ключ. Предоставьте клиенту открытый ключ. На сервере, где только администраторы могут получить закрытый ключ. Тогда вы все настроены. Если вы знаете целевую ОС, вы можете попробовать настроить ее в хранилищах ключей. – Tschallacka

+0

Если есть какой-либо риск руткита (есть, всегда), старайтесь сделать все, чтобы предотвратить его в первую очередь. Затем вы можете добавить кодовую фразу и прочитать ее с помощью readline при запуске. Убедитесь, что вся конфиденциальная информация доступна только пользователю, если невозможно предотвратить ее хранение в файлах. Храните их в директории приложения. –

ответ

1

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

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

Кроме того, у вас должен быть другой ключ для каждого клиента, и, если это возможно, вы должны регулярно менять ключи.

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