본문 바로가기
🗂 Study/네트워크

HTTP와 HTTPS의 차이점 + SSL Handshake

by 뿌맘 2021. 6. 30.
반응형

HTTP (Hypertext Transfer Protocol)

HTTP는 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜입니다. 웹 서핑을 할 때 서버에서 자신의 브라우저로 데이터를 전송해주는 용도로 가장 많이 사용되며, 인터넷 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜입니다.

 

그러나 HTTP는 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않기 때문에 데이터가 쉽게 도난당할 수 있다는 문제점이 있습니다.

 

HTTPS (Hypertext Transfer Protocol Secure)

HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했습니다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 데이터가 도난당하는 것을 막아줍니다.

 

두 프로토콜 사이에 가장 큰 차이점은 SSL 인증서입니다. 

SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호로 바꿔주는데, 이렇게 전송된 데이터는 암호화되어있기 때문에 해독할 수 없습니다. 그 외에도 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지합니다.

TSL은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고, 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공하고 있습니다.

 

SSL (Secure Sockets Layer)

SSL은 암호화 기반의 통신 프로토콜입니다.

SSL 인증서를 통해 클라이언트와 서버 간에 통신을 보증하며, 암호화된 데이터를 주고 받습니다. 주로 대칭키(공개키) 방식, 비대칭키(비밀키) 암호화 방식이 사용됩니다.

SSL 통신과정은 Handshake라는 과정을 거칩니다.

 

SSL 통신과정 (Handshake과정)

1) 클라이언트 -> 서버

  • 클라이언트는 랜덤데이터를 만들어 서버에 보낸다.
  • 클라이언트는 사용 가능한 암호화 방식들을 서버에 보낸다.

2) 서버-> 클라이언트

  • 서버 또한 랜덤데이터를 만들어 클라이언트에 보낸다.
  • 클라이언트가 보낸 암호화 방식들 중에 사용한 방식을 선정하여 클라이언트에 보낸다.
  • 공개키, 인증서 발급자(CA), 도메인 등의 정보가 담겨있는 SSL인증서도 같이 보낸다.

3) 클라이언트 -> (공인/사설) CA

  • 서버에게 받은 인증서를 CA를 통해 확인한다.
    -> 공인된 CA에서 발급받은 인증서라면 브라우저에도 https가 안정하게 연결됐다는 표시가 뜬다.
    -> 사설 CA에서 발급받은 인증서는 믿을만한 인증서라고 판단되지않기 때문에 브라우저 https 경고 표시가 뜬다.

4) 클라이언트

  • 1, 2에서 생성된 랜덤데이터들을 조합하여 임시 key를 만든다.
  • 임시 key를 인증서의 공개키로 암호화한다.

5) 클라이언트 -> 서버

  • 암호화한 임시 key를 서버에 전송한다.

7) 서버

  • 임시 key는 인증서에 공개키로 암호화되었기 때문에 서버에 저장된 비밀키로 복호화할 수 있다.(비대칭키 암호화방식)

이 모든 과정이 끝나면 서버와 클라이언트에서 일련의 과정을 거친 후 최종 key를 만들고, 이 key를 가지고 암호화된 데이터를 주고받는다. (대칭키 암호화 방식)

 

 


참고

반응형

'🗂 Study > 네트워크' 카테고리의 다른 글

쿠키🍪 와 세션  (0) 2021.07.09
HTTP 메서드와 역할  (0) 2021.07.09
GET 방식과 POST 방식  (0) 2021.07.08
TCP 3, 4 way handshake  (0) 2021.06.30
OSI7계층과 그 존재 이유  (0) 2021.06.18

댓글