<TIL> 72. HTTP와 HTTPS

YUJIN LEE·2023년 3월 22일
0

개발log

목록 보기
67/149

HTTP?

Hyper Text Transfer protocol
HTTP는 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
즉, HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약, 80번 포트 사용.

HTTP의 구조

HTTP는 애플리케이션 레벨의 프로토콜. TCP/IP 위에서 작동.
HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이며
Method, Path, Version, Headers, Body 등으로 구성.

HTTPS?

Hyper Text Transfer Protocol Secure
HTTP에 데이터 암호화가 추가된 프로토콜.
HTTPS는 HTTP와 다르게 443번 포트를 사용, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화 지원.
SSL(Secure Sockets Layer)위에 HTTP를 얹어 보안이 보장된 통신을 하는 프로토콜.
이 통신 방식을 SSL 암호화 통신이라고 함.
SSL 암호화 통신은 공개키 암호화 방식 이라는 알고리즘을 통해 구현.

공개키 암호화 방식?

공개키 암호화 방식에는 공개키 & 개인키 존재.
한쪽 키로 데이터 암호화 -> 오직 다른쪽 키로만 복호화 가능.

대칭키 암호화 / 비대칭키 암호화

HTTPS는 대칭키 암호화, 비대칭키 암호화 둘 다 사용.

대칭키 암호화

클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행
키가 노출되면 매우 위험하지만 연산 속도가 빠름

비대칭키 암호화

1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용
키가 노출되어도 비교적 안전하지만 연산 속도가 느림

공개키: 모두에게 공개가능한 키
개인키: 나만 가지고 알고 있어야 하는 키

클라이언트와 서버와의 응답 과정

CA는 서버 운영 기업이 넘겨준 공개키를 인증서 발급자, CA의 이름 등과 함께 묶어 CA가 가지고 있는 개인키로 암호화해 SSL 인증서로 발급.
차후 클라이언트에서 요청시 서버는 클라이언트에게 SSL 인증서 보냄.
브라우저(클라이언트)는 대표적인 CA들이 리스트와 그들의 공개키 보유.
만약 인증서에 적힌 CA의 이름과 브라우저가 소유하고 있는 CA 이름이 같다면 CA의 공개키로 SSL 인증서 복호화
그 후 SSL 내부에 들어있던 서버의 공개키를 가지고 요청을 암호화해 서버에게 보냄.
서버측은 가지고 있는 개인키로 요청을 복호화해 해석하고 응답은 다시 암호화해서 보냄.
-> 보안성 강한 통신 가능

SSL 인증서

사용자가 사이트에 제공하는 정보를 암호화.
그 외에도 HTTPS는 TLS(전송 계층 보안)프로토콜을 통해서도 보안 유지.
TLS -> 데이터 무결성 제공, 데이터가 전송 중에 수정되거나 손상되는 것 방지, 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증기능 제공

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글