HTTP, Hyper Text Transfer Protocol
HTTP는 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다.
Application Level의 프로토콜로, TCP/IP 위에서 작동하며 80번 포트를 사용한다.
구성
HTTP 보안 취약점
HTTP는 암호화되지 않은 평문 데이터를 전송하므로, 보안에 있어서 취약점이 존재한다.
취약점 | HTTP | HTTPS |
도청 | 평문으로 통신하기 때문에 도청 가능 | 통신 자체를 암호화 |
위장 | 통신의 상대를 확인하지 않기 때문에 위장된 상대와 통신할 수 있다. | CA 인증서를 통해 인증된 상대와 통신이 가능하다. |
변조 | 완전성을 보장하지 않기 떄문에 변조가 가능하다. | 메시지 인증 코드(MAC), 전자 서명 등을 통해 변조를 방지한다. |
HTTPS, Hyper Text Transfer Protocol Secure
인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해, 클라이언트와 서버가 자원을 주고 받을 떄 쓰는 통신 규약이다. 즉, HTTP에 데이터 암호화가 추가된 프로토콜로 443번 포트를 사용한다.
HTTPS의 암호화 방식
HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 둘 다 사용한다. 만약 여기에 대해 자세히 보고 싶으면 다음 링크를 참조하길 바란다.
대칭키 & 비대칭키
대칭키 Symmetric Key 암호화와 복호화에 같은 암호키, 즉 대칭키를 사용하는 알고리즘이다. 장단점 장점 구현이 용이하다 데이터를 암호화하기 위한 연산이 빨라, 대용량 데이터 암호화에 적합하
rue-mi.tistory.com
HTTPS 통신 흐름
사전 키워드
- CA, Certificate Authority : 공개키를 저장해주는 신뢰성이 검증된 민간 기업
[HTTPS의 발급 과정]
- 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
- 신뢰할 수 있는 CA 기업을 선택하고, 그 기업에게 내 공개키 관리를 부탁하며 계약을 한다.
- 계약 완료된 CA 기업은 해당 기업의 이름, A 서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A 서버에게 제공한다.
- A 서버는 암호화된 자신의 인증서를 갖게 되었다.
[HTTPS의 동작 과정]
- A 서버는 A 서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건내준다.
- 클라이언트가 main.html 파일을 달라고 A 서버에 요청했다고 가정하자. HTTPS 요청이 아니기 때문에 CA 기업이 A 서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 클라이언트가 받게 된다.
- 브라우저는 (이미 널리 알려져 있는) CA의 공개키로 인증서를 해독하여 A 서버의 공개키를 얻는다.
- 클라이언트가 A 서버와 HandShaking 과정에서 주고받은 난수를 조합하여, pre-master-secret-key(대칭키)를 생성한 뒤, A 서버의 공개키로 해당 대칭키를 암호화하여 서버로 보낸다.
- A 서버는 암호화된 대칭키를 자신의 개인키로 복호화하여 클라이언트와 동일한 대칭키를 얻는다.
- 클라이언트와 서버는 각각 pre-master-secret-key를 master-secret-key로 만든다.
- master-secret-key를 통해 session-key를 생성하고, 이를 이용하여 대칭키 방식으로 통신한다.
- 각 통신이 종료될 때마다 session-key를 파기한다.
덜 안전한 HTTPS?
HTTPS여도 무조건 안전한 것은 아니다. 신뢰받는 CA 기업이 아닌, 자체 인증서를 발급한 경우에는 HTTPS라도 브라우저에서 “주의 요함”, “안전하지 않은 사이트” 같은 알림으로 주의를 받게 된다.
[Web] HTTP와 HTTPS의 개념 및 차이점
1. HTTP란? [ HTTP(Hyper Text Transfer Protocol)란? ] HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위
mangkyu.tistory.com
'Computer Science > Network' 카테고리의 다른 글
CORS란 무엇인가요? (0) | 2024.01.12 |
---|---|
TLS/SSL handshake (0) | 2023.10.25 |
대칭키 & 비대칭키 (0) | 2023.10.24 |
TCP & UDP (0) | 2023.10.24 |
TCP/IP 흐름 제어 & 오류 제어 &혼잡 제어 (0) | 2023.10.20 |