Как HTTPS обеспечивает безопасность? - PullRequest
29 голосов
/ 19 октября 2010

Я хочу знать, как реализован HTTPS. Зашифрованы ли данные или зашифрован путь (по которому передаются данные). Я буду благодарен, если кто-то предоставит мне детали реализации.

Ответы [ 5 ]

61 голосов
/ 19 октября 2010

Очень просто, HTTPS использует Secure Socket Layer для шифрования данных, которые передаются между клиентом и сервером. В SSL используется алгоритм RSA http://en.wikipedia.org/wiki/RSA,, технология асимметричного шифрования. Точные детали того, как работает алгоритм, сложны, но в основном он использует тот факт, что хотя умножение двух больших простых чисел вместе легко, разложить результат обратно в составляющие простые числа очень и очень сложно. Как работает шифрование SSL / RSA:

Сервер генерирует два больших простых числа и умножает их вместе. Это называется «открытым ключом». Этот ключ доступен любому клиенту, который хочет безопасно передавать данные на сервер. Клиент использует этот «открытый ключ» для шифрования данных, которые он хочет отправить. Теперь, поскольку это асимметричный алгоритм, открытый ключ не может использоваться для расшифровки передаваемых данных, а только для их шифрования. Чтобы расшифровать, вам нужны исходные простые числа, и только на сервере они есть («закрытый ключ»). При получении зашифрованных данных сервер использует свой закрытый ключ для расшифровки передачи.

В случае, если вы просматриваете Интернет, ваш браузер предоставляет серверу свой открытый ключ. Сервер использует этот ключ для шифрования данных, отправляемых в ваш браузер, который затем использует свой закрытый ключ для расшифровки.

Так что да, все данные, передаваемые на сервер или с сервера по HTTP, шифруются и хорошо шифруются. Типичные реализации SSL используют 128 или 256 цифр для своих ключей. Чтобы сломать это, вам нужно действительно огромное количество вычислительных ресурсов.

Насколько мне известно, запрос на серверный ресурс не зашифрован - используйте httpfox https://addons.mozilla.org/en-US/firefox/addon/6647/ или Wireshark http://www.wireshark.org/ или что-то для подтверждения.

9 голосов
/ 19 октября 2010

Двумя способами.

  1. Обеспечивая шифрование всей информации, передаваемой между вами и веб-сайтом.Это осуществляется посредством процесса обмена ключами с использованием RSA (который обменивается «сеансовым ключом», который используется для фактического шифрования).

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

Это транспортный уровень безопасность.Это не уровень приложения.Вам по-прежнему необходимо следовать правилам безопасного кодирования и другим методам, чтобы обеспечить безопасность вашего сайта.

5 голосов
/ 19 октября 2010

Вы можете прочитать все подробности в TLSv1 RFC-2246 .


Для анализа безопасности, в частности, следующий раздел:

F. Анализ безопасности

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

дальнейшее содержание пропущено

3 голосов
/ 02 августа 2016

Я думал, что это было действительно краткое объяснение, понятное человеку: http://robertheaton.com/2014/03/27/how-does-https-actually-work/

Вот моя краткая версия:

Основные понятия:

  • Алгоритм асимметричной криптографии - Шифрование с открытым ключом, закрытый ключ расшифровки.
  • Алгоритм симметричной криптографии - Открытый ключ шифрование и дешифрование.

Рукопожатие:

  1. Hello - алгоритм криптографии отправки клиента и версия SSL, которую он поддерживает.
  2. Обмен сертификатами - Сервер отправляет сертификат для идентификации себя и открытый ключ сертификата.
  3. Обмен ключами - Клиент использует открытый ключ сертификата для шифрования нового открытого ключа клиента, восстановленного (используя согласованный алгоритм асимметричной криптографии, начиная с шага 1), и отправляет его на сервер. Сервер расшифровывает его, используя свой закрытый ключ (используя алгоритм асимметричной криптографии).
  4. Обмен данными - Этот открытый ключ теперь известен как клиенту, так и серверу. Он используется для последующих запросов / ответов как для шифрования, так и для дешифрования как на клиенте, так и на сервере (алгоритм симметричной криптографии)
0 голосов
/ 19 октября 2010

Сервер и клиент не имеют контроля над путем, который используется для передачи данных.Используемый путь зависит от сетевого уровня (Интернет-протокол - IP), а не от безопасности транспортного уровня (TLS)

. Данные сами по себе зашифрованы, и, как уже упоминалось, существуют средства для проверки подлинности сервера.Полдень Шелк.

http://en.wikipedia.org/wiki/Transport_Layer_Security

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...