Http, Https 알아보기!

Asha·2022년 5월 23일
0

[개발자 지식]

목록 보기
3/4
post-thumbnail

HTTP란 ?

Hyper Test Transfer Protocol

서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
서로 다른 시스템들 사이에서 통신을 주고받게 해주는 프로토콜이라고 이해하면 될 것 같다.

HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용하고 있다.
따라서 http 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.


HTTPS란 ?

HTTP + Secure = HTTPS

HTTP 프로토콜의 문제점은 서버-> 브라우저로 전송되는 정보가 그대로 노출이 된다는 점이다.
보안성이 떨어져 노출을 해결하기 위해 (+암호화 기능을 추가) SSL/TLS 프로토콜을 얹어 신뢰성을 높였다.
웹 서버에 접속하는 사용자에게 모두 동일한 암호를 제공하는 것이 아니라 사용자 마다 다른 암호를 제공한다.

암호화 !

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있는데 각각의 암호화 방식은 다음과 같다.!

  • 대칭키 암호화
    : 클라이언트 = 서버 동일한 키를 이용하여 암호화 / 복호화를 한다.
  • 비대칭키 암호화
    : 1개의 쌍으로 공개키(모두에게 공개)와 개인키(나만 알아야한다) 를 구성하여 암호화 / 복호화를 한다
    (클라이언트는 공개키를 얻어 데이터를 암호화해서 전송, 서버는 개인키를 이용해 복호화.)

SSL(Secure Socket Layer)

SSL은 들어오고 나가는 데이터들을 암호화하는 보안 기능을 갖고 있는 보안 인증서이다.
(SSL -> TLS로 업그레이드 되었으나 일반적으로는 SSL/TLS 구분을 하지 않는다)

HTTP 에서 HTTPS 뭐가 달라졌나요?

도메인에 SSL인증서 없이 https를 사용할 수 없고 http로 표시된다.
즉 우리가 사용하는 https:// 로 시작하는 주소들은 다 SSL인증서 적용이 된 것이라는 뜻이다.
포트 번호 443번!( +증명서를 구입하는데 돈도 든다)

그리고 앞에서 언급한 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 안정성을 얻고 있다.

  1. 클라이언트 -> 서버로 연결시도를 한다.
  2. 서버 -> 클라리언트로 인증서를 클라이언트에 넘겨준다.
  3. 인증서의 유효성을 검사하고 세션키를 발급한다.
    • 세션키 : 주고받는 데이터를 암호화하기 위해 사용되는 대칭키(빠른 연산을 위해 대칭키를 사용)
  4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송한다.
    • 세션키를 교환하기 위해 비대칭키가 사용된다.
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻는다.
    • 이 때 이후로는 다 대칭키 사용.
  6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 한다.


참고자료 : http://wiki.hash.kr/index.php/HTTPS
https://mangkyu.tistory.com/98

profile
열심히 살 수 있을 때 열심히 살자 !

0개의 댓글