[네트워크] HTTPS

CJY·2023년 8월 3일
0

네트워크

목록 보기
3/11

HTTPS

HTTPS란?

HTTPS(HTTPS://)는 HTTP 프로토콜의 보안 버전으로, "Hypertext Transfer Protocol Secure"의 약자입니다. HTTPS는 데이터의 안전한 전송과 사용자의 개인 정보 보호를 위해 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 통신하는 것을 의미합니다.

SSL/TLS란?

SSL(Secure Socket Layer)과 TLS(Transport Layer Security)는 데이터 통신의 보안을 위해 사용되는 프로토콜로, HTTPS와 같은 보안된 연결을 제공하는 데 사용됩니다. SSL은 초기 버전이며, TLS는 SSL의 후속 버전이지만 일반적으로 "SSL/TLS"로 묶어서 언급되기도 합니다.

응용계층(HTTP, FTP, SMTP..)과 전송계층(주로 TCP) 사이에 추가적인 Layer를 사용한 것이 HTTPS이고 그 Layer가 SSL/TLS입니다. 즉 보안 계층이라는 독립적인 프로토콜 계층입니다.

이들은 주로 웹 사이트와 클라이언트 간의 데이터 암호화를 담당하며, 중간자 공격(Man-in-the-Middle Attack)과 같은 보안 위협으로부터 데이터를 보호하는 데 사용됩니다. SSL/TLS를 사용하면 데이터 전송이 암호화되므로 제3자가 데이터를 엿보거나 변조할 수 없습니다.

HTTPS 암호화 과정

  1. 클라이언트가 HTTPS로 보호된 웹 사이트에 접속하면, 클라이언트는 서버에게 SSL 또는 TLS 연결을 설정하기 위한 "무작위" 메시지를 보냅니다.
    거기에 더해 클라이언트이 사용 가능한 SSL 버전, 암호화 알고리즘 유형을 보냅니다.

  2. 서버는 클라이언트에게 서버의 SSL 버전과 클라이언트가 보낸 암호화 알고리즘 유형 중 하나를 택해 응답합니다.
    거기에 더해 공개키(public key)와 인증서(certificate)를 보냅니다. 인증서에는 서버의 공개키와 해당 인증서를 발급한 기관(인증 기관)의 정보가 포함되어 있습니다.

  3. 클라이언트는 인증서를 확인하고, 신뢰할 수 있는 인증 기관에 의해 발급된 유효한 인증서인지 검증합니다.

    인증서는 인증 기관의 개인키로 암호화돼있습니다. (디지털 서명)
    클라이언트는 인증 기관의 공개키로 내용을 확인할 수 있습니다.
    인증서에는 디지털 서명에 사용한 알고리즘, 서버의 정보가 있습니다. 앞서 말했듯이 서버의 공개키가 보통 포함돼있고 서버의 공개키와 관련된 암호화 알고리즘의 종류도 포함돼있습니다.

  4. 클라이언트는 서버의 공개키를 사용하여 세션 키(session key)라고 하는 임시 대칭키를 생성합니다. 이 세션 키는 데이터를 암호화하기 위해 사용됩니다.
    세션 키는 서버의 공개키로 암호화하여 보내고 이후 서버는 자신의 개인키로 세션 키를 확인합니다.

  5. 클라이언트와 서버는 이후의 통신에 대해 세션 키를 사용하여 데이터를 암호화하고, 안전한 연결을 유지합니다.

주요 기능과 이점

  • 보안성
    HTTPS는 데이터를 암호화하여 중간에 제3자가 데이터를 엿보거나 변경하는 것을 방지합니다. 따라서 사용자의 개인 정보와 비밀번호 등이 보호됩니다.

  • 신원 확인
    서버는 공개키와 인증서를 제공하여 클라이언트가 서버의 신원을 확인할 수 있도록 합니다. 이를 통해 중간자 공격을 방지할 수 있습니다.

  • 검색 엔진 최적화(SEO)
    검색 엔진은 HTTPS를 사용하는 웹 사이트를 선호하고, 검색 랭킹에 긍정적인 영향을 미칠 수 있습니다.

  • 브라우저 표시
    대부분의 웹 브라우저는 HTTPS 연결이 안전하다고 표시하여 사용자에게 신뢰성을 높여줍니다.

정리

HTTPS를 사용함으로써 웹 사이트는 보안을 강화하고 사용자들의 신뢰를 얻을 수 있습니다. 최근에는 HTTPS를 채택한 웹 사이트가 증가하고 있으며, 개인 정보 보호와 데이터 보안을 중요시하는 웹 애플리케이션 개발에 필수적인 요소로 자리잡고 있습니다.

profile
열심히 성장 중인 백엔드

2개의 댓글

comment-user-thumbnail
2023년 8월 3일

개발자로서 배울 점이 많은 글이었습니다. 감사합니다.

1개의 답글