개발일기/CS(면접)

HTTPS 란?

w.llama 2024. 9. 12. 18:21

HTTPS 란?

HTTP에 SSL/TLS(보안 소켓 계층/ 전송 계층 보안)를 결합하여 안전하게 데이터를 전송하며 데이터가 암호화되어 전송되며, 서버와 클라이언트 간의 통신이 보안이 적용되어 HTTPS로 표기되는 것

HTTPS가 작동되는 과정

  1. SSL/TLS Handshake
    • Client Hello - 클라이언트가 서버에 접속 요청을 보내며, 이 때 클라이언트는 사용할 수 있는 암호화 방식과 SSL/TLS 버전을 서버에 전달
    • Server Hello - 서버는 클라이언트의 요청을 수락하고, 사용할 암호화 방식과 SSL/TLS버전을 선택한 뒤, 인증서를 클라이언트에 전달(인증서에는 서버의 공개 키가 포함되어있음)
  2. 서버 인증서 검증
    • 클라이언트는 서버의 인증서 검증 - 클라이언트는 서버가 보낸 SSL/TLS 인증서를 확인한다. 인증서가 신뢰할 수 있는 인증기관(CA)에 의해 발급되었는지, 그리고 인증서가 만료되지 않았는지 등을 검사
    • 검증 실패 시 - 유효하지 않은 인증서라면 클라이언트는 경고 메세지를 띄우고 연결을 차단할 수 있다.
  3. 세션 키 생성
    • 클라이언트는 프리마스터 시크릿을 생성하고 서버에 전송 - 클라이언트는 서버의 공개 키를 사용해 프리마스터 시크릿을 암호화한 뒤 이를 서버에 전송
    • 서버는 프리마스터 시크릿을 복호화 - 서버는 자신의 개인 키를 사용하여 클라이언트가 전송한 프리마스터 시크릿을 복호화 한다. (이 프리마스터 시크릿은 이후 세션 키를 생성하는데 사용함)
    • 세션키 생성 - 클라이언트와 서버는 프리마스터 시크릿을 바탕으로 대칭키(세션 키)를 생성
      (이 키는 이후의 데이터 전송을 암호화하는데 사용)
  4. 대칭키 암호화를 통한 데이터 전송
    • 대칭키로 암호화된 데이터 전송 - 핸드셰이크 과정이 끝난 뒤, 클라이언트와 서버는 세션 키를 사용하여 데이터를암호화해 전송합니다. 대칭키 암호화 방식은 공개키 암호화 방식보다 속도가 빠르기 때문에, 실제 데이터 전송에서는 대칭키를 사용한다
    • 데이터의 무결성 검증 - 데이터가 전송될 때는 메세지 인증코드(MAC)를 사용하여 데이터의 무결성을 검증한다. 이 데이터가 전송 중에 변조되지 않았는지 확인한다.
  5. 세션 종료
    • 연결 종료 - 데이터 전소이 완료된 후, 클라이언트와 서버는 SSL/TLS 연결을 종료한다. 이때 양측에서 세션을 종료하는 메세지를 주고 받으며 안전하게 연결을 끊는다.

HTTPS의 장점과 필요성

  • 보안 강화 - HTTPS는 민감한 정보를 암호화하여 해커나 중간자 공격(Man-in-the-Middle Attack)으로부터 보호합니다. 예를 들어, 로그인 정보나 결제 정보가 안전하게 전송됩니다.
  • 신뢰성 제공 - SSL/TLS 인증서를 통해 서버의 신원을 증명함으로써, 사용자는 접속하려는 사이트가 신뢰할 수 있는지 알 수 있습니다. 이는 피싱 사이트로부터 사용자를 보호합니다.
  • 검색 엔진 최적화(SEO) - 구글 등 주요 검색 엔진은 HTTPS를 사용하는 웹사이트에 대해 검색 순위를 높게 평가합니다. 이는 HTTPS 적용이 사용자 보안뿐만 아니라 사이트의 노출에도 긍정적인 영향을 미친다는 것을 의미합니다.

 

'개발일기 > CS(면접)' 카테고리의 다른 글

Junit5, Mockito 사용하기  (0) 2024.09.30
Spring Security 동작 과정  (0) 2024.09.24
공간 복잡도란?  (0) 2024.09.10
쿠버네티스란?  (0) 2024.09.09
시간 복잡도란?  (0) 2024.09.08