Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Какую нагрузку на сеть добавляет TLS по сравнению с незашифрованным соединением?

Автор вопроса: Daniel S. SterlingОтветов: 4

(Приблизительно) на сколько больше битов данных необходимо передать по сети во время зашифрованного соединения по сравнению с незашифрованным соединением?

IIUC, после завершения рукопожатия TLS количество переданных битов равно битам, переданным во время незашифрованного соединения. Это точно?

В качестве дополнения, передача большого файла по https значительно медленнее, чем передача этого файла по http, учитывая быстрые процессоры и одинаковые (идеальные) условия сети?

httpnetworkingsslhttps

Ответы

Ответ 1 · рейтинг 35 · Nasko

Я получил этот вопрос несколько раз, поэтому я решил написать небольшое объяснение накладных расходов с некоторыми примерными числами, основанными на общем случае. Вы можете прочитать его в моем блоге по адресу http://netsekure.org/2010/03/tls-overhead/.

Вывод из записи в блоге:

  • Общие накладные расходы для установления нового сеанса TLS составляют в среднем около 6,5 КБ.
  • Общие накладные расходы для возобновления существующего сеанса TLS в среднем составляют около 330 байт.
  • Общий объем зашифрованных данных составляет около 40 байт.

Ответ 2 · рейтинг 14 · brianegge

Короткий ответ: ваш пробег может варьироваться (YMMV) - все зависит от вашего трафика. Необходимо учитывать ряд факторов:

  • Дополнительные рукопожатия и сертификаты добавят 4-6 КБ к потоку TCP, что также приведет к увеличению количества кадров Ethernet, передаваемых по сети.
  • Клиенты должны загрузить список отозванных сертификатов. Некоторые инструменты, такие как cURL, опускают этот шаг. crl может кэшироваться браузером, однако обычно он не имеет долговременной связи с ним. Verisign устанавливает их срок действия через четыре минуты. В моем тестировании я вижу, что Safari в Windows дважды загружает один и тот же файл размером 91 КБ.
  • возобновление сеанса TLS может избежать части рукопожатия, связанной с обменом открытыми ключами, а также проверка сертификата.
  • HTTP keep-alives будет держать сокет открытым, так же как и http, но имеет больше экономии, когда сокет это ТЛС.
  • Поддержка SSL-сжатия начинает появляться на стороне сервера, но, насколько я знаю, большинство браузеры еще не реализуют это. Кроме того, если вы уже выполняете сжатие на уровне http, здесь мало что выиграете. Потенциально большой выигрыш может быть получен, если клиент отправляет на сервер большие объемы текста, который обычно не сжимается на уровне http.

Ответ 3 · рейтинг 1 · Todd

В 2020 году TLS 1.2 и 1.3 более типичны, а AES-GCM представляет собой режим потокового шифрования с меньшими накладными расходами.

См. https://tools.ietf.org/id/draft-mattsson-uta-tls-overhead-01.xml#rfc.section.3.

На пакет накладные расходы для AES-GCM составляют 29 байтов. TCP MSS может достигать 1460 (https://blog.apnic.net/2014/12/15/ip-mtu-and-tcp-mss-missmatch-an-evil-for-network-performance/). Таким образом, для большой загрузки (где используется максимальное значение MSS) накладные расходы составят 29:1431, что составляет 2,03%.

(Накладные расходы на рукопожатие являются отдельными, разовыми)

Ответ 4 · рейтинг -4 · Scooterville

На порядок. См. это. Это не слишком важно, если защищаемая информация заслуживает защиты. И помните, что скорость процессора может только увеличиваться, поэтому производительность будет расти.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы