Я работаю над игровой приставкой, у которой есть интерфейс C# и PHP-сервер для аутентификации, и мне нужно отправить пароль с панели запуска на бэкэнд по незашифрованному соединению. Есть ли способ сделать это безопасно? (Пароли хранятся в виде хешей blowfish в базе данных, начинающихся с $ 2y ...)Отправка пароля по незашифрованному соединению
ответ
Establishing an SSL
соединение является одним из наиболее часто используемых методов передачи конфиденциальной информации, такой как пароли. Для этого, по крайней мере, вы должны предоставить вашему серверу/серверу пару ключей (сертификат). Его не нужно подписывать veriSign, если ваше приложение будет работать на него, а не на браузер.
Обратите внимание: что вы на самом деле после этого - «конфиденциальность». Это означает, что никто, кроме вас, и ваша предполагаемая сторона не смогут прочитать содержание сообщения. В большинстве случаев это связано с «правильным использованием механизмов шифрования». Вы также хотите быть в безопасности от таких атак, как Man in the Middle Attack.
Очень часто разработчики просто программируют что-то, что работает и думает о безопасности позже; но есть неоспоримая польза, если вы можете подумать об этом раньше времени.
Редактировать: Если вам нужно только отправить пароль надежно, и все, то ответ @ rich.okelly будет ответом. Поскольку вы можете жестко кодировать доверенный открытый ключ сервера в приложении и просто шифровать этот пароль клиентом. Но если вы хотите иметь безопасное соединение для более/всех ваших сеансов, вы можете подумать о решении для SSL.
Как я вижу, лучше всего сделать это (предполагая, что соединение ДОЛЖНО быть небезопасным), было бы зашифровать пароль перед его отправкой и расшифровать на бэкэнд - эффективно перевести свое собственное шифрование на уровне сообщений.
Для этого вам понадобится механизм асимметричного шифрования - общедоступный/закрытый ключ, вероятно, самый простой способ для этого.
Во всех случаях, ваше требование заключается в следующем:
Начиная с незащищенными, незашифрованными средствами передач данных, как я в конечном итоге с защищенными, зашифрованным средствами передач данных, по крайней мере, достаточно долго, чтобы отправить пароль?
- Интернет всегда начинается как незащищенное и незашифрованное!
Существует много способов, и rolling your own является наихудшим из них. Варианты включают, но не ограничиваются ими:
- Используйте C# библиотеки как Bouncy Castle
- Для создания 1.2 сеанса TLS с использованием шифров AEAD
- Чтобы использовать асимметричные шифры как RSA, ECDSA или DSA (с ключом> = 2048 бит) для шифрования пароля
- Использование VPN программное обеспечение, как OpenVPN
- вызовов OpenSSL
- Чтобы создать TLS 1.2 сеанса с использованием AEAD шифров
- Чтобы использовать асимметричные шифры как RSA, ECDSA или DSA (с ключом> = 2048 бит) для шифрования пароля
- вызов GPG для шифрования пароля с помощью открытого ключа
Во всех случаях вам придется каким-либо образом изменить как задний, так и передний конец, либо напрямую, либо добавить другой слой между ними (VPN).
- 1. Отправить письмо по незашифрованному соединению
- 2. Безопасная передача пароля по незашифрованному tcp/ip
- 3. Отправка данных по соединению
- 4. Как исправить: ваше приложение отправляет рекламный идентификатор по незашифрованному соединению
- 5. Перехват информации, отправляемой по незашифрованному каналу
- 6. Отправка одноразового пароля по почте
- 7. MySQL SELECT учетные данные по имени пользователя и незашифрованному паролю
- 8. Настройка и отправка данных по последовательному соединению в Python
- 9. Отправка данных SSL по прокси-соединению TCP в Python
- 10. Отправка двоичных данных по последовательному соединению с помощью pyserial
- 11. Java-клиент/сервер - отправка нескольких строк по соединению сокета
- 12. Надежность по последовательному соединению
- 13. Рекомендации по перекрестному соединению
- 14. Подзапрос по соединению
- 15. Консультация по внутреннему соединению SQL
- 16. Linq с группой по соединению
- 17. Отправить объект по TCP-соединению
- 18. Результат LIMIT по соединению MySQL
- 19. Запрос по соединению Java Space?
- 20. jQuery, отправка пароля через ajax?
- 21. PHP - Отправка пароля для хеширования
- 22. Отправка хеш-пароля в WebAPI
- 23. отправка пользовательской формы сброса пароля
- 24. Отправка пароля, незашифрованного через Интернет
- 25. Отправка пароля через скрипт оболочки
- 26. Magento enterprise отправка пароля по электронной почте не сбрасывается ссылка
- 27. Отправка ссылки пароля по электронной почте, когда пользователь забыл пароль
- 28. Выполняет ли mod_proxy_wstunnel шифрование данных при подключении к незашифрованному серверу?
- 29. Обработка потоков Bytes в Java по соединению сокетов
- 30. Отправка пароля через HTTPS - единственный вариант?