[TIL] HTTP & HTTPS

다혜·2022년 3월 10일
0

Network

목록 보기
5/5
post-thumbnail

✅ HTTP

HyperText Transfer Protocol
서버와 클라이언트 사이에서 어떻게 메시지를 교환할지를 정해놓은 규칙
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다

✔ 프로토콜 : 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계.
기기간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구하는데, 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 한다.


✅ HTTPS

HyperText Transfer Protocol Secure
TLS을 사용해 암호화 된 연결을 하는 HTTP

✔ TLS (Transport Layer Security) : 전송 계층 보안. SSL에 기반한 기술. 보안통신을 위한 프로토콜. 아직 SSL이라는 이름을 많이 사용.

💥 HTTPS의 특징

  • TLS 상의 HTTP 구현

  • 주요기능

    • 암호화 (내가 사이트에 보내는 정보에 대한 보안)
    • 인증 (접속한 사이트가 믿을만한 곳인지 검증)
  • 사용포트
    HTTP 80이 아닌 HTTPS 443번 포트를 사용

🌐 HTTPS의 통신 흐름

🎓 사전지식

✔ 애플리케이션 서버를 만드는 기업은 HTTPS를 적용하기 위해 개인키와 공개키를 만든다
✔ CA에게서 공개키에 대한 인증서를 발급받는다.
✔ CA의 인증을 받은 인증서들은 해당 CA의 개인키로 암호화 되어있다.

  • CA(Certificate Authority) : 공개키 인증서를 발급해주는 공인된 민간기업. 대부분의 운영체제나 브라우저에 CA의 목록들이 미리 등록되어있다.

클라이언트는 서버를 신뢰하지 못하는 상태이기 때문에 서로의 신원을 확인하고 통신 암호화에 사용할 세션 키를 공유하기 위해 탐색 과정을 거친다. 이 과정을 handshake라고 한다.

  1. Client Hello
    클라이언트에서 서버에게 무작위 데이터를 보낸다.

  2. Server Hello
    클라이언트의 데이터를 받은 서버도 무작위 데이터와 해당 서버의 인증서를 보낸다.

  3. 인증서 검증
    클라이언트는 CA들의 정보를 통해 인증서를 검증한다. (CA의 공개키로 복호화) 복호화 된 인증서에는 서버의 공개키가 포함되어있다.

  4. 임시키 생성
    클라이언트는 Client HelloServer Hello 과정에서 주고받은 무작위 데이터로 pre master secret 이라는 임시키를 생성한다. 이 임시키는 서버의 공개키로 암호화되어 서버로 전송된다.

  5. 세션키 생성
    서버는 개인키를 통해 pre master secret을 복호화하고 이를 통해 master secret을 생성한다. 그 뒤 master secret으로 session key를 생성한다. (클라이언트 역시 같은 과정을 거쳐 세선키 생성)

  6. handshake 종료
    서버와 클라이언트는 각자 동일한 세션키를 가지게 되었고 이를 통해 대칭키 암호를 사용하는 통신을 할 수 있다.


❓ 비대칭키 암호화는 하드웨어 자원을 소비하여 컴퓨터에 부담이 되기 때문에, 보안 수준 대비 적당한 속도를 내기 위해 대칭키를 사용한다.






💛 참고 :
https://wayhome25.github.io/cs/2018/03/11/ssl-https/
https://youtu.be/H6lpFRpyl14

profile
봉식이를 위한 개발을 하고 싶오

0개의 댓글