네트워크 - HTTP & HTTPS

고태희·2022년 3월 13일
0

CS

목록 보기
16/20

HTTP

개념

인터넷에서 서버와 클라이언트가 자원(데이터)를 주고받는 데 쓰는 프로토콜

구조

특징

  • 80번 포트 사용
  • TCP/IP위에서 작동

    HTTP는 Stateless 프로토콜이며 비연결성인데 비연결성인 UDP말고 연결성인 TCP/IP 사용 이유?

    HTTP가 비연결이라는 의미는 이전의 요청과 다음 요청이 비연결이라는 것이지, 하나의 요청/응답에 대해서는 연결된 상태로 통신한다.
    따라서 TCP/IP 사용

  • HTTP는 암호화 되지 않은 평문 데이터를 전송하는 프로토콜 => 보안 이슈 => HTTPS 등장

HTTPS

개념

  • HyperText Transfer Protocol over Secure Socket Layer
  • SSL 프로토콜을 사용해 HTTP에 암호화가 추가된 프로토콜
    • 이 때 암호화는 대칭키 / 비대칭키 모두 사용
  • 443번 포트 사용

HTTPS 동작과정

대칭키를 통해 빠른 연산 속도, 비대칭키를 통해 안정성을 모두 획득

  • 대칭키 : HTTP 연결과정에서 먼저 서버와 클라이언트 간에 세션키(주고 받는 데이터를 암호화 하기 위해 사용되는 대칭키)를 교환하는데 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어진다.
  • 비대칭키 : 이 세션키를 클라이언트와 서버가 교환할 때 비대칭키 사용

HTTPS 연결과정

조금 더 자세하게는 여기

  1. 클라이언트(브라우저) -> 서버 : 연결시도
  2. 서버 -> 브라우저 : 공개키(인증서)를 넘겨줌
  3. 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
  4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
  5. 서버는 개인키로 세션키를 복호화하여 세션키 획득
  6. 이제 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터 전달 시에 이 세션키로 암호화/복호화 진행

서버가 대칭키를 발급받는 과정

  1. A기업은 HTTP 기반의 어플리케이션에 HTTPS 를 적용하기 위해 공개키/개인키를 발급
  2. CA기업에게 돈을 주고, 공개키를 저장하는 인증서의 발급요청
  3. CA기업은 CA기업이름, 서버공개키, 서버정보 등을 기반을 인증서생성하고, CA기업 개인키로 암호화하여 A기업에 제공
  4. A기업은 A기업의 공개키로 암호화된 HTTPS요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 준다.
  5. 브라우저는 CA기업의 공개기를 미리 다운받아 가지고 있어, 암호화된 인증서를 복호화함.
  6. 암호화된 인증서를 복호화ㅣ하여 얻은 A기업의 공개키로 세션키를 공유함

인증된 CA기관의 인증서가 아니면 브라우저에 '안전하지 않음' 같은 경고메시지가 뜨는 것

비교

HTTP는 HTTTPS에 비해 더 빠르고 트래픽이 적게 발생하기 때문에 상대적으로 적은 비용으로 유지가능하지만, 보안에 취약한 큰 단점을 가진다.
=> 민감한 정보가 없는 페이지는 HTTP를 이용하는 것이 유리하고, 그렇지 않으면 HTTPS를 사용하는 것이 유리할 것이다.

참고
https://mangkyu.tistory.com/98
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Network/HTTP%20%26%20HTTPS.md

0개의 댓글

관련 채용 정보