HTTPS 헤더가 암호화되어 있습니까?


599

HTTPS를 통해 데이터를 보낼 때 내용이 암호화되어 있음을 알고 있지만 헤더가 암호화되는지 또는 얼마나 많은 헤더가 암호화되는지에 대한 혼합 답변을 듣습니다.

얼마나 많은 HTTPS 헤더 암호화됩니까?

GET / POST 요청 URL, 쿠키 등 포함


9
HTTPS를 통한 HTTP 헤더는 암호화되며 본문이 있더라도 HTTP 압축되지 않습니다. 이것은 BEAST와 같은 압축 관련 공격에 덜 취약합니다.
Neil McGuigan

답변:


551

전체 로트는 -모든 헤더로 암호화됩니다 . 따라서 호스트의 SSL이 제대로 작동하지 않습니다. 호스트 헤더가 암호화되어 있기 때문에 전용 IP 주소가 필요합니다.

SNI (Server Name Identification) 표준은 TLS를 사용하는 경우 호스트 이름이 암호화되지 않을 수 있음을 의미합니다. 또한 SNI 사용 여부에 관계없이 TCP 및 IP 헤더는 암호화되지 않습니다. (만약 있다면 패킷을 라우팅 할 수 없습니다.)


3
@Greg, vhost 게이트웨이가 인증되었으므로 게이트웨이가 암호화를 해제 할 수없고 Host 헤더를 관찰 한 다음 패킷을 보낼 호스트를 결정합니까?
Pacerier

2
Afaik URL 자체는 암호화되지 않습니다.
Teddy

4
@Teddu "URL 자체는 암호화되지 않습니다."는 무슨 뜻입니까? 헤더의 일부이므로 암호화됩니다.
Dmitry Polushkin

1
Fiddler를 사용하여 https 통신을 캡처하는 경우 여전히 일부 헤더가 표시됩니다. 왜 그렇습니까? 특히, 인터넷 연결이 인증이 필요한 프록시를 통한 경우에는 첫 번째 전송에서 407을받은 후 요청이 재전송 될 때 프록시 인증 헤더가 표시됩니다.
Bochen Lin

1
페가수스와 같은 방식으로 @Bochen. HTTPS 터널의 한쪽 끝에 있으면 모든 것을 볼 수 있습니다. 브라우저 devtools에서 아무것도 볼 수있는 것과 같은 방법입니다.
Nux

97

헤더는 완전히 암호화됩니다. '클리어 된'네트워크를 통한 유일한 정보는 SSL 설정 및 D / H 키 교환과 관련이 있습니다. 이 교환은 도청 자에게 유용한 정보를 제공하지 않도록 신중하게 설계되었으며, 일단 발생하면 모든 데이터가 암호화됩니다.


4
모든 SSL 설정에 DH가 포함되는 것은 아닙니다.
Dori

30
약간의 지식을 유지하려면 : 클라이언트와 서버의 IP 주소, 서버의 호스트 이름 및 SSL 구현에 대한 신호는 도청에 유용하며 볼 수 있습니다.
poolie

66

오래된 질문에 대한 새로운 답변, 죄송합니다. 내 $ .02를 추가 할 것이라고 생각했습니다.

OP는 헤더가 암호화되었는지 묻습니다.

그들은 : 운송 중입니다.

그들은 아닙니다 : 운송 중이 아닐 때.

따라서 브라우저의 URL (및 경우에 따라 제목)은 쿼리 스트링 (일반적으로 가장 민감한 세부 사항을 포함 함)과 일부 세부 사항을 헤더에 표시 할 수 있습니다. 브라우저는 일부 헤더 정보 (콘텐츠 유형, 유니 코드 등)를 알고 있습니다. 브라우저 기록, 비밀번호 관리, 즐겨 찾기 / 북마크 및 캐시 된 페이지에는 모두 쿼리 문자열이 포함됩니다. 원격 쪽의 서버 로그에는 일부 내용 세부 정보뿐만 아니라 쿼리 문자열도 포함될 수 있습니다.

또한 URL이 항상 안전하지는 않습니다. 도메인, 프로토콜 및 포트가 표시됩니다. 그렇지 않으면 라우터가 요청을 보낼 위치를 모릅니다.

또한 HTTP 프록시가있는 경우 프록시 서버는 주소를 알고 있으며 일반적으로 전체 쿼리 문자열을 모릅니다.

따라서 데이터가 이동하면 일반적으로 보호됩니다. 전송 중이 아니면 암호화되지 않습니다.

선택하지 말고 끝에있는 데이터도 해독되며 마음대로 파싱, 읽기, 저장, 전달 또는 폐기 할 수 있습니다. 그리고 어느 쪽 끝에 든 악성 코드는 SSL 내부로 나가거나 나가는 데이터의 스냅 샷을 찍을 수 있습니다 (예 : HTTPS 내부 페이지 내부의 (나쁜) 자바 스크립트). 종종 제한되며 유용하지 않습니다).

또한 쿠키는 HTTPS 프로토콜에서도 암호화되지 않습니다. 민감한 데이터를 쿠키 (또는 그 문제의 다른 곳)에 저장하려는 개발자는 자체 암호화 메커니즘을 사용해야합니다.

캐시와 관련하여 대부분의 최신 브라우저는 HTTPS 페이지를 캐시하지 않지만 사실은 HTTPS 프로토콜에 의해 정의되지 않으며 HTTPS를 통해 수신 된 페이지를 캐시하지 않도록 브라우저 개발자에게 전적으로 의존합니다.

따라서 패킷 스니핑이 걱정된다면 괜찮을 것입니다. 그러나 멀웨어 나 사용자가 이력, 북마크, 쿠키 또는 캐시를 통해 파고 드는 것에 대해 걱정이 되더라도 아직 멀지 않은 상태입니다.


20
좋은 답변이 맨 위에 있다는 것을 알고 있지만 이것은 다시 한 번 잘못된 정보를 삽입 합니다. SNI를 사용하지 않으면 도메인이 표시 되지 않습니다 . IP 및 TCP 이외의 프로토콜은 표시 되지 않습니다 . HTTP 1.1, SPDY 또는 HTTP2를 사용 중인지 알 수 없습니다. 암호화의 목표는 사물을 보이지 않게 하는 것이 아니라 신뢰할 수있는 당사자 사물을 보이게 하는 것이므로 두 엔드 포인트에서 볼 수있는 것은 무의미 합니다. 따라서 끝점은 질문에 내포되어 있으며 답변의 약 2/3를 제거 할 수 있습니다. 프록시 정보는 다음과 같아야합니다. HTTPS 프록시를 사용하는 경우 모든 것에 액세스 할 수 있습니다.
Melvyn

6
귀하의 링크는 쿠키가 암호화되어 있다고 명시합니다. "방문자의 연결이 암호화되어 URL, 쿠키 및 기타 민감한 메타 데이터가 가려져 있습니다."
DylanYoung

1
네 맞습니다. 쿠키는 전송 중에 암호화되지만 일단 브라우저에 도달하면 SSL 프로토콜에 의해 암호화되지 않습니다. 개발자는 쿠키 데이터를 암호화 할 수 있지만 SSL 범위를 벗어납니다.
Andrew Jennings

4
@DylanYoung SSL = 보안 소켓 계층; TLS = 전송 계층 보안. 암호화는 소켓 (연결) 수준이거나 도메인 데이터베이스별로 브라우저에 저장되어 있지 않은 전송 수준에서 다른 방법으로 사용됩니다.
curiousguy

@Wigwam 보안에 민감한 HTTP 쿠키는 인증 된 세션의 서버 데이터베이스에있는 레코드에 대해 거의 항상 불투명 한 참조 (보통 암호화 적으로 강력한 난수)입니다. 따라서이 의미없는 식별자를 암호화하면 대부분 추가 ​​복잡성이 발생합니다.
curiousguy

53

HTTP 버전 1.1에는 필요한 프로토콜 핸드 셰이크 및 암호화 설정을 포함하여 SSL 터널을 만들기위한 특수 HTTP 방법 인 CONNECT가 추가되었습니다.
이후 일반 요청은 모두 SSL 터널, 헤더 및 본문을 포함하여 전송됩니다.


CONNECT는 SSL 터널을 만드는 데 언제 사용됩니까?
curiousguy


47

SSL을 사용하면 암호화가 전송 수준에 있으므로 요청을 보내기 전에 발생합니다.

따라서 요청의 모든 것이 암호화됩니다.


SSL은 전송 계층에서 발생하고 패킷의 대상 주소 할당 (헤더)은 네트워크 계층 (전송 아래)에서 발생하므로 헤더는 어떻게 암호화됩니까?
Prateek Joshi

@PrateekJoshi HTTP 헤더는 응용 프로그램 계층에 상주하므로 기본적으로 하위 / 상위 계층이 암호화되어 암호화되기 때문에 기본적으로 암호화됩니다.
수채 화법

40

HTTPS (HTTP over SSL)는 모든 HTTP 컨텐츠를 SSL tunel을 통해 전송하므로 HTTP 컨텐츠 및 헤더도 암호화됩니다.


21

예, 헤더는 암호화됩니다. 여기에 쓰여 있습니다 .

헤더 및 요청 / 응답로드를 포함하여 HTTPS 메시지의 모든 내용이 암호화됩니다.


37
Wikipedia는 사용자가 인용해야 할 사양이 아닙니다.
Aran Mulholland

8

URL도 암호화되어 있습니다. 실제로 IP, 포트 및 SNI 인 경우 암호화되지 않은 호스트 이름 만 있습니다.


SNI가 지원되지 않더라도 HTTP 연결을 가로 챌 수있는 중개자는 종종 DNS 질문도 모니터링 할 수 있습니다 (대부분의 가로 채기는 해적판 사용자 라우터와 같이 클라이언트 근처에서 수행됨). 그래서 그들은 DNS 이름을 볼 수있을 것입니다.
curiousguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.