두 대의 컴퓨터가 HTTPS 연결을 설정할 때 사용할 키를 결정해야 합니다. 그렇죠?
따라서 그렇게 하려면 어느 시점에서 키가 암호화되지 않은 상태로 한 컴퓨터에서 다른 컴퓨터로 이동해야 합니다. 그렇죠? 그 순간, 중간자(man-in-the-middle)가 그것을 스니핑하고 키를 얻어 암호화된 패킷을 읽고 쓸 수 있는 것이 가능하지 않습니까?
HTTPS 프로토콜은 이를 어떻게 방지합니까?
답변1
SSL은 개인 키와 공개 키라는 두 개의 키를 사용합니다. 공개 키만 전송되며 개인 키를 모르면 이 키는 값이 없습니다.
모든 당사자는 상대방의 공개 키를 사용하여 보내는 데이터를 암호화합니다(조금 더 복잡하지만 아이디어는 있습니다). 수신자만이 트래픽을 (쉽게) 디코딩할 수 있습니다.
이는 트래픽 스니핑이 그다지 문제가 되지 않는다는 것을 의미합니다. 물론 무차별 대입 공격은 사용된 키 크기와 알고리즘에 따라 달라질 수 있습니다.
트래픽 가로채기 및 서버 대체를 기반으로 한 중간자 공격은 위험이 더 높지만 일반적으로 신뢰할 수 있는 인증 기관을 사용하여 방지합니다. 그러나 서버 인증서가 사이트 이름과 일치하지 않거나 신뢰할 수 있는 기관(예: 자체 서명 인증서)에서 발급되지 않은 경우 브라우저에 표시되는 경고를 무시하면 인증서가 무효화됩니다.
답변2
HTTPS/SSL 프로토콜은 개인/공개 키를 사용하여 보안 연결을 보장합니다. http://en.wikipedia.org/wiki/Transport_Layer_Security