2016-01-05 1 views
-2

У меня есть серверные и клиентские приложения, взаимодействующие через сокет TCP, который является настольным приложением. Я включил Windows IP-sec между сервером и клиентским компьютером, чтобы мой сетевой трафик был зашифрован. Во время процесса входа клиентское приложение отправляет хеш пароля на сервер и сервер, проверяя его в базе данных после применения хеша на стороне сервера. Теперь существует еще один сценарий, когда клиентское приложение запрашивает пароль сервера SQL с сервера по TCP и серверу, отправляет этот пароль в виде обычного текста, а затем клиентское приложение использует этот пароль для подключения к SQL-серверу, аналогично подключению с другим сторонним сервером, клиентским приложением получить пароль с сервера, сервер отправить его как простой по Ipsec. Мой вопрос заключается в том, безопасно ли отправлять пароль на сервер и клиент с поддержкой ipsec? Если не то, что мне нужно сделать, чтобы сделать его безопасным?Безопасно ли передавать учетные данные для входа в систему как обычный текст по серверу и клиенту, включенному Ipsec?

ответ

0

IP-sec обеспечивает шифрование, поэтому теоретически безопасно отправлять пароль в виде обычного текста через соединение IP-sec.

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

Метод, который приходит на ум, использует ключи SSH. Клиент будет генерировать ключ-пар и отправлять открытый ключ на сервер, который будет перенаправлять его на сервер SQL/сторонний сервер. В этом случае личный ключ никогда не должен покидать клиента. Это сложнее настроить, но в долгосрочной перспективе должно быть более безопасным.

PS: Также помните, что пароль/ключ можно извлечь из клиентского приложения, если злоумышленник имеет доступ к клиентскому компьютеру (напрямую или вредоносным ПО на компьютере). Поэтому всегда предполагайте, что пользователь, прошедший проверку подлинности как клиент, будет иметь доступ к этим ключам и сможет делать все, что могут использовать эти ключи, даже если ваш клиент этого не допускает.

+0

Да, это имеет смысл. Вместо использования SSH-ключа. Сервер при запуске будет иметь пару ключей RSA и отправить открытый ключ клиенту и клиенту, сгенерирует случайный ключ AES и зашифрует его с помощью открытого ключа сервера, тогда этот ключ будет использоваться для шифрования и дешифрования пароля SQL по сети, когда требуется клиентское приложение. Также как рукопожатие TLS. Имеет ли это смысл? –

+0

Ну, это имеет смысл, если вы не хотите/не можете избавиться от пароля SQL. Только одна деталь: может быть лучше использовать согласование ключей вместо того, чтобы сервер просто составлял ключ шифрования, например, Diffie Hellman https://wiki.openssl.org/index.php/Diffie_Hellman – xhunterx

Смежные вопросы