HTTP & HTTPS

Jean·2023년 8월 21일
0
post-thumbnail

HTTP

"하이퍼텍스트 전송 프로토콜 (Hypertext Transfer Protocol)"의 약자로, 웹 서버와 웹 브라우저 사이의 데이터 통신을 위한 규약이다

데이터가 암호화되지 않고 평문으로 전송되어 민감한 정보를 주고받을 때 보안에 취약합니다.
주로 웹 페이지의 텍스트, 이미지, 비디오, 오디오 등을 브라우저로 전송합니다.

HTTPS

"하이퍼텍스트 전송 프로토콜 보안 (Hypertext Transfer Protocol Secure)"의 약자로, HTTP의 보안 버전이다

데이터를 암호화하여 전송한다
주로 온라인 상거래, 로그인 페이지, 금융 거래 및 개인 정보와 같은 민감한 데이터 전송에 용이하다
SSL과 TLS를 사용해 암호화한다.

SSL

  • Secure Sockets Layer 의 약자
  • Netscape 사에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜 (규칙)
  • 대칭키와 비대칭키 기반으로 사용함

TLS

  • SSL의 업그레이드된 버전으로, 현재의 표준 보안 프로토콜
  • SSL과 거의 유사한 목적을 가지고 있으며, 데이터의 기밀성과 무결성을 보장하며 통신을 안전하게 만든다

SSL/TLS 핸드 셰이크

SSL/TLS 핸드셰이크(Handshake)는 클라이언트와 서버 간에 보안 통신을 설정하기 위한 중요한 과정입니다. 이 과정은 다음과 같이 이루어집니다.

Hello 메시지 (ClientHello, ServerHello):

클라이언트가 서버에 접속할 때, 클라이언트와 서버는 먼저 서로에게 "Hello" 메시지를 보낸다
이 메시지에는 각각의 SSL/TLS 버전과 암호화 알고리즘 목록 등의 정보가 포함된다

인증서 교환 (Certificate Exchange):

서버는 클라이언트에게 공개키 인증서를 제공한다
클라이언트는 이 인증서를 확인하고, 서버가 신뢰할 수 있는 인증 기관에서 발급한 것인지 확인한다

키 교환 (Key Exchange):

클라이언트와 서버는 통신에 사용할 비밀키를 교환
클라이언트가 서버의 공개키를 사용하여 비밀키를 암호화하고, 서버는 이를 자신의 개인키로 복호화하여 비밀키를 획득한다

비밀키는 통신 동안 데이터를 암호화하고 복호화하는 데 사용된다

핸드셰이크 완료 (Finished):

위 과정을 거치면 클라이언트와 서버는 서로에게 통신에 필요한 모든 정보를 공유하게 된다

profile
햇내기 개발자 지망생

0개의 댓글