당신이 얻을 때
https://encrypted.google.com/search?q=%s
%s
쿼리 암호화? 아니면 그냥 응답? 그렇지 않은 경우 Google은 왜 공개 콘텐츠도 암호화로 제공해야합니까?
당신이 얻을 때
https://encrypted.google.com/search?q=%s
%s
쿼리 암호화? 아니면 그냥 응답? 그렇지 않은 경우 Google은 왜 공개 콘텐츠도 암호화로 제공해야합니까?
답변:
URL 및 명령 ( GET
)을 포함하여 전체 요청이 암호화됩니다 . 프록시 서버와 같은 중재 당사자가 수집 할 수있는 유일한 대상은 대상 주소와 포트입니다.
그러나 TLS 핸드 셰이크의 Client Hello 패킷은 SNI 확장 (@hafichuk 덕분에)을 통해 정규화 된 도메인 이름을 일반 텍스트로 광고 할 수 있습니다.이 이름은 모든 최신 메인 스트림 브라우저에서 사용되지만 일부는 최신 OS에서만 사용할 수 있습니다.
편집 : (방금 나에게 "좋은 답변"배지를 얻었으므로 전체 질문에 대답해야한다고 생각합니다 ...)
전체 응답도 암호화됩니다. 프록시는 그 일부를 가로 챌 수 없습니다.
Google은 https를 통해 검색 및 기타 콘텐츠를 제공합니다. 모든 공개 콘텐츠가 아니기 때문에 MITM 에서 일부 공개 콘텐츠를 숨길 수도 있습니다 . 어쨌든 Google 이 스스로 답변 하도록하는 것이 가장 좋습니다 .
URL 자체는 암호화되므로 쿼리 문자열의 매개 변수가 와이어를 따라 일반으로 이동하지 않습니다.
그러나 GET 데이터를 포함하는 URL은 종종 웹 서버에 의해 기록되는 반면 POST 데이터는 거의 없습니다. 따라서 /login/?username=john&password=doe
다음 과 같은 일을 할 계획 이라면하지 마십시오. 대신 POST를 사용하십시오.
HTTPS HTTP 데이터가 전송되기 전에 기본 SSL 연결을 설정합니다. 이렇게하면 모든 URL 데이터 (연결을 설정하는 데 사용되는 호스트 이름 제외)가이 암호화 된 연결 내에서만 전달되고 HTTPS 데이터와 같은 방식으로 MITM (Man-in-the-Middle) 공격으로부터 보호됩니다.
위의 내용은 여기에있는 Google 답변의 매우 포괄적 인 답변의 일부입니다.
http://answers.google.com/answers/threadview/id/758002.html#answer
호스트 이름 뒤의 URL 부분은 안전하게 전송됩니다.
예를 들어 https://somewhere.com/index.php?NAME=FIELD
/index.php?NAME=FIELD
부분은 암호화됩니다. 는 somewhere.com
없습니다.
모든 것이 암호화되어 있지만 쿼리는 서버의 로그에 유지되며 다양한 로그 분석기 등 (일반적으로 POST 요청이 아닌 경우)에 액세스 할 수 있다는 것을 기억해야합니다.
SSL은 헤더 구문 분석 전에 발생합니다. 이는 다음을 의미합니다.
Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed
요청은 다음과 같습니다 (정확한 구문을 기억할 수는 없지만 충분히 가까워 야합니다).
GET /search?q=qwerty HTTP/1.1
Host: www.google.de
동일한 IP의 여러 호스트에 대해 서로 다른 SSL 인증서를 갖는 것이 문제가되는 이유이기도합니다. 요청 된 호스트 이름은 해독 할 때까지 알 수 없습니다.
HTTP/1.1
첫 번째 줄의 끝에서 온다.
GET 요청은 HTTPS를 사용할 때 암호화됩니다. 실제로 보안 웹 사이트에는 고유 한 IP 주소가 있어야하기 때문에 요청에서 암호가 해독 될 때까지 요청에서 의도 한 호스트 이름 (또는 가상 디렉터리)을 가져올 수있는 방법이 없습니다.