Чи зашифровані заголовки HTTPS?


598

Під час надсилання даних через HTTPS я знаю, що вміст зашифровано, проте я чую неоднозначні відповіді про те, чи зашифровані заголовки, чи велика частина заголовка зашифрована.

Скільки HTTPS заголовки будуть зашифровані?

Включаючи URL-адреси GET / POST, файли cookie тощо


9
Заголовки HTTP через HTTPS зашифровані, а також не стиснені HTTP (навіть якщо тіло є). Це робить їх менш вразливими до атак, пов’язаних із стисненням, таких як BEAST
Ніл МакГуйган

Відповіді:


551

Весь лот зашифрований - всі заголовки. Ось чому SSL для vhosts працює не надто добре - вам потрібна спеціальна IP-адреса, оскільки заголовок Host зашифрований.

Стандарт ідентифікації імені сервера (SNI) означає, що ім'я хоста може бути не зашифровано, якщо ви використовуєте TLS. Крім того, використовуєте ви чи ні SNI, заголовки TCP та IP ніколи не шифруються. (Якби вони були, ваші пакети не були б маршрутизованими.)


3
@Greg, Оскільки шлюз vhost дозволений, чи не міг шлюз розшифрувати їх, спостерігайте заголовок Host, а потім визначайте, до якого хоста відправити пакети?
Печер'є

2
Сама URL-адреса Afaik не шифрується.
Тедді

4
@ Teddu, що ти маєш на увазі під "самою URL-адресою не зашифровано". Він зашифрований, оскільки є частиною заголовка.
Дмитро Полушкін

1
Якщо Fiddler використовується для зйомки зв'язку https, він все одно відображає деякі заголовки, чому? Особливо, коли підключення до Інтернету здійснюється через проксі-сервер, який вимагає автентифікації, він відображає заголовок Proxy-Authorization, коли запит буде відтворено після отримання 407 при першій відправці.
Бохен Лін

1
@Bochen так само, як робить Пегас. Якщо ви знаходитесь на будь-якому кінці тунелю HTTPS, ви можете побачити все. Так само я бачу що-небудь у розробниках браузера.
Nux

97

Заголовки повністю зашифровані. Єдина інформація, що переходить через мережу "в чистоті", пов'язана з налаштуванням SSL та обміном ключів D / H. Цей обмін ретельно розроблений, щоб не давати корисної інформації підслуховувачам, і як тільки він відбувся, всі дані шифруються.


4
Не всі установки SSL передбачають DH
Дорі

30
Щоб бути трохи педантичним: IP-адреса клієнта та сервера, ім'я хоста сервера та сигнали про їх реалізацію SSL корисні для підслуховувачів і є видимими.
poolie

66

Нова відповідь на старе запитання, вибачте. Я думав, що додам $ 02

ОП запитала, чи зашифровані заголовки.

Вони: в дорозі.

Вони НЕ: коли не в дорозі.

Отже, URL-адреса вашого веб-переглядача (та заголовок у деяких випадках) може відображати рядок запитів (які зазвичай містять найчутливіші деталі) та деякі деталі у заголовку; браузер знає деяку інформацію заголовка (тип вмісту, унікод тощо); історія веб-переглядача, керування паролем, вибране / закладки та кешовані сторінки містять рядки запитів. Журнали серверів на віддаленому кінці також можуть містити рядок запитів, а також деякі відомості про вміст.

Крім того, URL-адреса не завжди захищена: домен, протокол і порт видно, інакше маршрутизатори не знають, куди надсилати ваші запити.

Крім того, якщо у вас є проксі-сервер HTTP, проксі-сервер знає адресу, зазвичай вони не знають повного рядка запитів.

Отже, якщо дані рухаються, вони, як правило, захищені. Якщо він не в дорозі, він не шифрується.

Не для вибору ниток, але дані в кінці також розшифровуються, і їх можна за бажанням проаналізувати, прочитати, зберегти, переслати або відкинути. І зловмисне програмне забезпечення на будь-якому кінці може робити знімки даних, що вводять (або закривають) протокол SSL - наприклад, (поганий) Javascript всередині сторінки всередині HTTPS, який може натомість робити http (або https) дзвінки на веб-сайти, що реєструються (оскільки доступ до локального жорсткого диска) часто обмежений і не корисний).

Також файли cookie не шифруються за протоколом HTTPS. Розробники, які хочуть зберігати конфіденційні дані у файлах cookie (або деінде з цього питання), повинні використовувати власний механізм шифрування.

Що стосується кешування, то більшість сучасних браузерів не кешуватимуть сторінки HTTPS, але цей факт не визначений протоколом HTTPS, він повністю залежить від розробника браузера, щоб бути впевненим у тому, щоб не кешувати сторінки, отримані через HTTPS.

Тож якщо ви переживаєте за нюхання пакетів, ви, мабуть, добре. Але якщо ви переживаєте про зловмисне програмне забезпечення або хтось переглядає вашу історію, закладки, файли cookie чи кеш, вам поки що не виходить з води.


20
Я знаю, що гарні відповіді зверху, але це ще раз вставляє недостовірну інформацію. Домен не відображається, якщо не використовується SNI. Протокол, окрім IP та TCP, не видно. Ви не можете сказати, чи використовую я HTTP 1.1, SPDY або HTTP2. Те, що видно на двох кінцевих точках, не має значення, оскільки мета шифрування - не зробити речі невидимими, а зробити так, щоб вони були видимими лише для довірених сторін. Таким чином, кінцеві точки містяться у запитанні, і приблизно 2/3 вашої відповіді можна буде видалити. Інформація про проксі повинна бути: якщо ви використовуєте проксі HTTPS, він має доступ до всього .
Мельвін

6
У вашому посиланні конкретно сказано, що файли cookie зашифровані: "Підключення відвідувача шифрується, затушовуючи URL-адреси, файли cookie та інші чутливі метадані".
DylanYoung

1
Так, це правильно. Файли cookie шифруються під час транзиту, але, як тільки вони дістаються до браузера, вони не шифруються протоколом SSL. Розробник може зашифрувати дані файлів cookie, але це не виходить для SSL.
Ендрю Дженнінгс

4
@DylanYoung SSL = захищений шар сокета ; TLS = безпека транспортного рівня. Шифрування відбувається на рівні сокета (з'єднання) або, якщо інше, зберігається в браузері за базою даних домену.
curiousguy

Файли cookie HTTP @Wigwam, які чутливі до безпеки, майже завжди непрозорі посилання (зазвичай це криптографічно сильне випадкове число) на запис у серверній базі даних аутентифікованих сесій. Оскільки таке шифрування цього безглуздого ідентифікатора здебільшого спричинило б додаткову складність.
curiousguy

53

HTTP версія 1.1 додала спеціальний метод HTTP, CONNECT - призначений для створення тунелю SSL, включаючи необхідне рукостискання протоколу та налаштування криптографічних даних.
Після цього регулярні запити надсилаються загорнуті в тунель SSL, заголовки та тіло включно.


Коли CONNECT використовується для створення тунелю SSL?
curiousguy


47

За допомогою SSL шифрування знаходиться на транспортному рівні, тому воно відбувається перед тим, як надсилати запит.

Отже все в запиті зашифроване.


Оскільки SSL відбувається в транспортному шарі, а призначення адреси призначення в пакетах (у заголовку) відбувається в мережевому шарі (який знаходиться нижче транспорту), то як зашифровані заголовки?
Prateek Joshi

@PrateekJoshi Оскільки заголовки HTTP живуть на рівні додатків і тому за замовчуванням шифруються через зашифрований нижчий / пращурний шар.
Акварель

40

HTTPS (HTTP через SSL) надсилає весь вміст HTTP через тунель SSL, тому вміст і заголовки HTTP також шифруються.


21

Так, заголовки зашифровані. Це написано тут .

Все в повідомленні HTTPS зашифроване, включаючи заголовки та завантаження запиту / відповіді.


37
Вікіпедія не є специфікацією, про що ви повинні цитувати.
Aran Mulholland

8

URL-адреса також зашифрована, у вас дійсно є тільки IP, порт та SNI, ім'я хоста, які не шифруються.


Навіть якщо SNI не підтримується, посередник, здатний перехоплювати HTTP-з'єднання, часто також може контролювати питання DNS (більшість перехоплення проводиться біля клієнта, як на піратському маршрутизаторі користувача). Тож вони зможуть побачити імена DNS.
curiousguy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.