Можно ли не передавать пароль на сервер, а шифровать им соединение (например, через сокеты)? Почему нет веб-приложений, которые используют примерно такую схему безопасности:
p - пароль, F(p) - функция высшего порядка, которая принимает на вход пароль и возвращает функцию, шифрующую (синхронным шифрованием) текст при помощи пароля, вродеfunction getEncoder(password){
return function(message){ return encode(message, hash(password)); }
}
На сервер отправляется сообщение формата {login, F(p)(login)}, на сервере так же хранится хэш пароля, при помощи которого и расшифровывается.
Если нужно увеличить сложность - можно использовать в качестве ключа что-то вроде (uniq_salt передается с сервера, для каждого соединения новая) blowfish(blowfish(uniq_salt) XOR blowfish(password)), например. Достаточно длинная соль сделает подбор практически нереальным.
Все дальнейшее общение между сервером и клиентом идет уже зашифрованным, пароль не передается, вроде все безопасно, нет?
Я не криптограф, объясните мне, в чем я не прав, или почему это не делают, пожалуйста.

21 Авг 2019 в 07:14
189 +1
0
Ответы
1

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

Управление ключами: шифрование данных требует наличия ключей шифрования. В вашем случае ключом является пароль пользователя. Необходимо обеспечить безопасное хранение и обмен ключами между клиентом и сервером. Если ключи утекут или будут скомпрометированы, это может привести к компрометации безопасности данных.

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

Безопасность протокола: сам протокол шифрования также должен быть безопасным и надежным. Неисправное или уязвимое шифрование может привести к возможности расшифровать данные злоумышленникам.

Сложность реализации: такое решение может быть сложным в реализации и поддержке, особенно если необходимо обеспечить совместимость с другими сервисами или протоколами.

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

20 Апр 2024 в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир