✔️HTTP을 간단히 짚고. . .
기본적으로 이미 몇번이나 짚었던 개념인데, 한번 더 정리하면서 확인해보기로 하자.
HTTP(Hyper Text Transfer Protocol)은 클라이언트와 서버간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜이다.
- TCP/IP 기반
- request(요청)/response(응답) 형태
HTTP 구조
- HTTP method: 요청의 목적을 담고 있는 GET, POST, PUT, DELETE 등이 있다.
- GET: 자원에 대한 요청(조회 개념)
- POST: 새로운 자원 생성
- PUT: 자원에 대한 변경(수정 개념)
- DELETE: 존재하는 자원 삭제
![업로드중..]()
HTTP/2, HTTP/3 ?
최초의 버전이 HTTP/1.1 이다. HTTP/2, HTTP/3은 예상할 수 있듯이 프로토콜 자체를 업그레이드한 버전이며, 데이터 전송 시스템을 수정하여 효율성을 개선한 것이다.
- HTTP/2 : 텍스트 형식 대신, 바이너리로 데이터를 교환
- HTTP/3: 실시간 스트리밍 및 기타 최신 데이터 전송 요구사항을 보다 효율적으로 지원
✔️그렇다면 HTTPS는 뭘까?
HTTP는 암호화되지 않은 데이터를 전송하는 프로토콜이기 때문에, 보안면에서는 문제가 될 수 밖에 없다. 이러한 문제를 해결하기 위해 HTTPS가 등장하게 된 것이다.
HTTPS(Hyper Transfer Protocol Secure)는 말 그대로 HTTP에 데이터 암호화가 추가된 프로토콜 이다. 즉, 데이터를 안전하게 전송하기 위해 사용된다.
HTTPS의 암호화
암호화는 데이터를 읽을 수 없는 형태로 변환하는 과정이며, 대칭키와 비대칭키 방식 2가지가 존재한다.
- 대칭키 암호화
- 암호화와 복호화에 동일한 키 사용
- 빠르고 효율적
- 키를 안전하게 공유하기가 어려움 (키를 교환하는 과정에서의 도청될 위험)
- 비대칭키 암호화
- 암호화와 복호화에 다른 키 사용
- 공개키와 개인키로 구성됨(공개키- 누구나 접근 가능, 개인키- 소유자만이 접근 가능)
- 공개키와 개인키는 한 쌍
- 공개키 암호화-개인키 복호화: 개인키는 소유자만이 갖고 있으므로, 소유자만이 볼 수 있음
- 개인키 암호화-공개키 복호화: 공개키는 모두에게 공개되어 있으므로, 소유자가 인증한 정보임을 알려 신뢰성을 보장할 수 있음
- 높은 보안성
- 대칭키에 비해 떨어지는 성능
HTTPS 동작 과정
- 클라이언트(브라우저)가 서버로 최초 연결 시도를 함
- 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘김
- 브라우저는 인증서의 유효성을 검사하고 세션키 발급
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화 진행
결국 HTTP와 HTTPS의 가장 큰 차이는 보안과 관련된 부분이라고 볼 수 있다.