HTTPS

귀찮Lee·2022년 7월 21일
0

◎ HTTPS (Hyper Text Transfer Protocol Secure Socket layer)

  • HTTP over SSL(TLS), HTTP over Secure
  • HTTP 프로토콜 내용을 암호화 (HTTP에서 보안성이 추가)
  • HTTP 통신을 하는 과정에서 데이터를 암호화하여 전송하는 방법 (SSL 혹은 TLS라는 알고리즘을 이용)

◎ HTTPS 특징

  • 인증서

    • 데이터를 제공한 서버가 정말로 데이터를 보내준 서버인지 인증을 확인하는 용도 (데이터 제공자 신원 보장)
    • 인증서 정보에는 서버 도메인 관련 정보가 있어서 데이터 제공자의 인증을 용이하게함 (도메인 종속)
  • CA (Certificate Authority) : 공인 인증서 발급 기관

    • 앞서 말한 인증서를 발급하는 기관, 각 브라우저는 신뢰하는 CA의 정보를 가지고 있음
    • 각 브라우저는 인증서도 차이가 남 (계속 자격을 유지하는 것이 아니라 자격을 박탈당할수도 있다.)
  • 암호화

    • 제 3자가 서버와 클라이언트가 주고받는 정보를 탈취할 수 없도록 하는 것
    • 서버와 클라이언트는 서로가 합의한 방법으로 데이터를 암호화하여 주고 받음

◎ HTTPS 프로토콜의 특징

  • 비대칭 키 암호화 사용

    • 전혀 다른 키 한 쌍으로 암호화 및 복호화를 함
    • 한 쌍인 키를 통해 하나의 키로 암호화를 한다면, 다른 하나의 키로 복호화를 할 수 있음
    • 주로 누구나 알 수 있는 공개키와 서버만 가지고 있는 개인키로 나누어 사용
      • 개인키로 암호화한 경우, 공개키로 연다 : 누가 보냈는지 알 수 있다. (전자서명)
      • 공개키로 암호화한 경우, 개인키로 연다 : 특정 유저만 알 수 있다. (암호화)
  • 대칭 키 암호화 사용

    • 비대칭 키 암호화는 연산이 복잡한 알고리즘이기 때문에 초창기에만 사용
    • 이후 하나의 키로 암호화&복호화가 가능한 대칭키를 사용하여 암호화를 하여 통신함
    • 복호화를 했다면 성공적으로 HTTPS 연결이 완료된 상태
  • 관련 내용은 HTTPS 통신 과정 참고

◎ HTTPS 통신 과정

  • Hand Shake

    1. 요청을 받는다면 서버는 인증서와 함께 응답을 전송

      • 인증서는 CA에서 인증한 내용임
    2. CA에 SSL 인증서 검증 요청을 함

    3. 응답을 받은 클라이언트는 인증서에 작성된 도메인과 응답 객체에 작성된 도메인을 비교한다.

    4. case 1. 만약 응답에서 확인한 도메인과 인증서에 작성된 도메인이 같다면, 정말로 데이터를 제공해준 서버가 확실하다는 것을 인지

    5. case 2. 하지만 중간에 해커가 요청을 탈취해서 서버인 척 요청을 전달하는 경우가 발생한다면, 응답에서 확인한 도메인과 인증서의 도메인이 불일치하여 서버에서 보내준 것인지 확신할 수 없음 (전혀 다른 서버에서 제공한 것을 알 수 있음)

  • 이후 과정

    • 우선 '비대칭 키 암호화'를 한 공개키(public key) 와 개인키(private key)가 있음
    • 인증서를 통해 해당 서버에 공개키를 알 수 있고, 개인키는 서버만 알고 있다.
    1. '대칭 키 암호화'를 사용하는 대칭키를 공개키로 암호화하여 전송

    2. 서버에서 개인키를 통해 복호화하여 대칭키를 얻음

    3. 대칭키를 통해 암호화하여 서로 정보를 주고 받음

  • 참고 자료

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!

0개의 댓글