HTTPS имеет множество вариантов использования, большинство из которых предназначены для защиты от атак "человек посередине". Любой, у кого хакерское мышление, содрогнется и скажет вам, что нет другого способа, кроме устоявшегося способа чего-то достичь. Дело в том, что то, что вы используете TLS (стандарт, который использует современный HTTPS), не означает, что вы используете его хорошо. Кроме того, простое использование TLS не мешает кому-либо использовать известные недостатки. Точно так же, как вы находите творческие способы защиты ваших данных, есть люди, которые находят творческие способы использовать ваши меры безопасности.
Итак, что делать?
Прежде всего, если вы собираетесь отказаться от TLS, полезно понять, как это работает. И все дело в рукопожатии.
Как только клиент и сервер согласились использовать TLS, они договариваются о
подключение с сохранением состояния с помощью процедуры квитирования. [7] Во время этого
рукопожатие, клиент и сервер согласовывают различные параметры, используемые для
установить безопасность соединения:
- Рукопожатие начинается, когда клиент подключается к серверу с поддержкой TLS.
запрашивает безопасное соединение и представляет список поддерживаемых шифров
сюиты (шифры и хеш-функции).
- Из этого списка сервер выбирает
шифр и хэш-функция, которую он также поддерживает и уведомляет
клиент решения.
- Сервер отправляет обратно свою идентификацию в
форма цифрового сертификата. [противоречие] Сертификат
обычно содержит имя сервера, доверенный центр сертификации
(CA) и открытый ключ шифрования сервера.
- Клиент может связаться
сервер, выдавший сертификат (доверенный CA, как указано выше) и
Подтвердите действительность сертификата, прежде чем продолжить.
- Для того, чтобы
генерировать сеансовые ключи, используемые для безопасного соединения клиента
шифрует случайное число с помощью открытого ключа сервера и отправляет
результат на сервер. Только сервер должен быть в состоянии расшифровать его,
со своим закрытым ключом.
- Из случайного числа обе стороны генерируют
ключевой материал для шифрования и дешифрования. [противоречие] Это
завершает рукопожатие и начинает защищенное соединение, которое
зашифрованы и расшифрованы с ключом материала до подключения
закрывается.
Если какой-либо из вышеперечисленных шагов завершится неудачно, произойдет сбой квитирования TLS и
соединение не создано.
Источник: Википедия
Так, это возможно? Да. Меня учили, что все возможно. Это может быть дорого, но всегда возможно.
Я хочу полностью раскрыть, что я НЕ специалист по безопасности, а просто энтузиаст. Я не рекомендую пытаться сделать это для проекта промышленного уровня или чего-то другого, кроме вашего собственного назидания. Вы должны ОПРЕДЕЛЕННО проверить эту публикацию SO , которая дает отличное объяснение препятствий при настройке собственного протокола безопасности.
Однако, если вы хотите двигаться дальше, вот некоторые мысли, которые приходят на ум. Это реальность, которая будет существовать независимо от того, какой прямой вы пошли с этим проектом.
HTTPS поддерживается всеми основными современными браузерами. Даже с этой реальностью время загрузки HTTPS медленнее, чем обычный HTTP. Без большого объема производства весьма вероятно, что ваша альтернативная реализация будет настолько же безопасной, но значительно медленнее. Это будет недостатком любой домашней реализации, если только вы не используете функции браузера, что возвращает нас к использованию TLS, что и используется современным HTTPS.
Если вам удастся зашифровать свой пароль без TLS на стороне браузера, используя Javascript достаточно непредсказуемым образом, что атака MiTM будет затруднена, не останавливайтесь на достигнутом. Вы также должны защищать данные, которые вы отправляете туда и обратно. В противном случае зашифрованный пароль действительно не имеет значения. Конечно, злоумышленник может не знать пароль пользователя bobsmith109, но он ему не нужен, потому что он может прослушивать каждое действие в сети. Он знает, сколько раз bobsmith109 входит в систему, вероятно, может отследить его IP-адрес и любые другие конфиденциальные данные, которые вы отправляете туда и обратно.
Независимо от того, какие меры безопасности вы принимаете, в глубине безопасности. Таким образом, вы можете сразу же приступить к шифрованию своих данных в базе данных, одновременно требуя надежных паролей.
Я повторяю, что я не профессионал безопасности и настоятельно не рекомендую это как что-либо кроме удовлетворения вашего любопытства. Астрономически маловероятно, что вы можете создать жизнеспособную альтернативу TLS без чрезвычайно большой группы специалистов по безопасности, которые вносят свой вклад в проект годами, если не десятилетиями, и этим могут похвастаться SSL / TLS. Тем не менее, хорошей отправной точкой, если вы решите пойти дальше, является рассмотрение модели рукопожатия, приведенной выше, и выяснение того, как можно реализовать ее версию без TLS.
Было бы упущением не упоминать в своем посте, что с большинством реальных барьеров на пути использования HTTPS активно борются. Одна из самых больших - стоимость - очень близка к тому, чтобы стать не проблема. Бесплатный центр сертификации будет выпущен во втором квартале 2015 года, и его поддержат несколько крупных производителей, в том числе Mozilla и Akamai. Вот статья .