눈송이의 개발생활
[Network]HTTP와 HTTPS 본문
HTTP
- Hyper Text Transfer Protocol
- 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터 주고 받을 수 있는 프로토콜
- 포트 번호 80번 사용
- 애플리케이션 레벨의 프로토콜 ⇒ TCP/IP 위에서 작동
- 비연결(connectionless)
- 클라이언트가 요청한 응답을 서버에서 보내면 바로 연결이 끊김
- 무상태(statelss)
- 연결 끊으면 서버의 통신은 끝나고 상태 정보를 유지하지 않음
- Method, Path, Version, Headers, Body로 구성됨
단점
- 평문 통신이기 때문에 도청이 가능
- 통신 상대를 확인하지 않기 때문에 위장 가능
- 완전성을 증명할 수 없어서 변조 가능
HTTP Method
기능 | 설명 | |
POST | create | body부분에 데이터 담김. 서버값 변경 |
GET | read | header부분에 url 담겨져 전송. ?로 data 실어서 query 작성. 브라우저에서 caching 가능 |
PUT | update | 리소스 전체 수정할 때 사용 |
DELETE | delete | 어떤 data 삭제할지 url에 드러나게 전달 |
PATCH | update | 리소스 일부 수정 |
HTTPS
- Hyper Text Transfer Protocol Secure
- 웹 통신 프로토콜인 HTTP의 보안이 강화된 버젼
- HTTP에 데이터 암호화가 추가된 프로토콜
- 통신하는 소켓 부분을 SSL 또는 TLS 프로토콜로 교체
- 포트 번호 443번 사용
- 암호화, 증명서, 안전성 보호 이용할 수 있음
- 대칭키 암호화 방식과 비대칭키 암호화 방식 모두 사용
- 암호화 통신은 CPU나 메모리 등의 리소스를 평문 통신(HTTP)보다 많이 요구
- BUT 하드웨어의 발달로 이제는 속도 저하 거의 일어나지 않음
- 데이터의 적절한 보호 보장
- 구현 정확도, 서버 소프트웨어, 암호화 알고리즘 → 보호 성능 결정
- 원리
- 공개키 알고리즘 방식
- 암호화, 복호화시킬 수 있는 서로 다른 키를 이용한 암호화
- 공개키 : 모두에게 공개
- 개인키(비공개키) : 개인에게만 공개. 서버가 갖는 비공개키(클-서 구조에서)
- 클라이언트 → 서버
- 사용자의 데이터 공개키로 암호화
- 서버로 전송 (복호화 불가능)
- 서버의 개인키로 복호화
장점
- 네트워크 상에서 열람, 수정이 불가능해 안전함
단점
- 암호화 하는 과정이 웹 서버에 부하를 줌
- HTTP에 비해 느림
- HTTPS 설치 및 인증서 유지하는데 추가 비용 발생
- 인터넷 연결 끊긴 경우 재인증 시간 소요
HTTPS 동작 과정
- Handshaking
- 서버와 클라이언트 간의 세션키 교환
- 세션키 : 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키. 빠른 연산 속도 필요하기 때문
- 처음 연결을 성립하여 안전하게 세견키를 공유하는 과정에서 비대칭키 사용
- 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키 사용
- 흐름
- 클라이언트(브라우저)가 서버로 최초 연결 시도를 함
- 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
- 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송함
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함
SSL
- Secure Sockets Layer
- 클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있도록 돕는 보안 계층
- HTTP와 같은 계층의 프로토콜(FTP, SMTP 등)과 조합해 사용 가능
- TLS
- Transport Layer Security
- SSL2.0에 취약점이 발견되어 구조를 재설계해서 SSL 3.0 발표 ⇒ 이전 버젼과 구분하기 위해 이름을 TLS로 변경!
'Computer Science > Network' 카테고리의 다른 글
[Network]대칭키와 공개키 (0) | 2023.02.08 |
---|---|
[Network]HTTP/1.1 HTTP/2.0 HTTP/3.0 (0) | 2023.02.07 |
[Network]TCP/IP 흐름제어(Flow Control)와 혼잡제어(Congestion Control) (0) | 2023.02.06 |
[Network]TCP와 UDP (0) | 2023.02.03 |
[Network]TCP 3-way Handshake & 4-way Handshake (0) | 2023.02.03 |
Comments