IT
[Network]HTTP/HTTPS 란?
Admimistrator
2024. 6. 17. 14:38
728x90
반응형
반응형
HTTP (Hypertext Transfer Protocol)
- 정의
- 하이퍼텍스트 방식의 정보를 교환하기 위한 하나의 규칙
- 서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
- 💡 서버 → 서비스 제공자하이퍼텍스트(Hypertext) → 일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서
- 클라이언트 → 서비스 요청자 즉, 클라이언트는 요청하고 서버는 응답하는 관계
- 따라서, HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
- 구조
- 어플리케이션 레벨의 포로토콜로 TCP/IP 위에서 작동한다.
- HTTP는 상태를 가지고 있는 Stateless 프로토콜이며, Method, Path, Version, Headers, Body 등으로 구성 된다.
- 💡 TCP/IP → 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다.
- Stateless 프로토콜 → 무상태 프로토콜 무상태 = 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않는다. ex) UDP, HTTP
HTTPS (Hypertext Transfer Protocol Secure)
- 정의
- HTTP + SSL / TLS HTTP에 데이터 암호화가 추가된 프로토콜
- 443포트를 사용한다.
- 네트워크에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.
- 접속한 사이트가 신뢰할만한 사이트인지 알려주는 역할이다.
- 통신 내용의 악의적인 변경을 방지할 수 있다.
- TLS(Transport Layer Security) → 기존 SSL 취약성을 수정하는 업그레이드된 SSL 버전
- 암호화 방식
- HTTPS는 대칭키 암호화와 비대칭키 암호화 방식을 모두 사용한다.
- 비대칭 키 방식이 가진 이점은 이어가되 전송 소요시간 및 리소스 부담은 줄이는 방식입니다.
- HTTPS를 통한 통신이 시작될 때, 서버는 서버가 제공한 공개 키와 증명서에 부합하는 요청을 클라이언트가 보냈는지를 확인합니다. 클라이언트가 공통 키를 서버가 제공한 공개 키로 암호화해 서버에게 보낸 첫 번째 요청을 복호화하는 과정을 핸드쉐이크(handshake)라고 부르는데, 이 과정이 끝나면 실제 요청과 정보를 교환하는 과정이 이어집니다.
- 서버가 제공하는 비대칭 키(=공개 키)를 써 클라이언트는 서버에게 보낼 공통 키를 암호화합니다.
- 서버는 클라이언트가 보낸 암호화된 요청을 비대칭 키로 복호화합니다.
- 결과적으로 클라이언트와 서버는 서버가 제공한 비대칭 키를 통해 암호화된 공통 키로 통신합니다. </aside>
- 💡 대칭키와 비대칭키 방식을 모두 사용한다?
- 대칭키 암호화
- 암호화에 사용되는 키와 복호화에 사용되는 키가 동일한 암호화 - 비 대칭키(공개키) 암호화
- 두 개의 키를 갖게 되는데 A키를 사용해 암호화를 하면 B키로 복호화를 할 수 있고, B키로 암호화를 하면 A키로 복호화를 할 수 있는 암호화 기법이다.
- A키와 B키 두개의 키 중 하나를 비공개키(개인키)로 하여 자신만 갖고 있고, 나머지를 공개키로 지정하여 대중에게 공개한다.
- HTTPS는 대칭키 암호화와 비대칭키 암호화 방식을 모두 사용한다.
이 과정에서 공개키가 유출이 된다고 해도 공개키를 이용해서는 오직 암호화만 가능하고 복호화는 오직 서버에서 보관중인 비밀키로만 가능하기 때문에 정보가 안전하다.
동작 과정
- 클라이언트(브라우저)가 서버로 최초 연결 시도
- 서버는 공개키(인증서)를 브라우저에게 넘겨줌
- 브라우저는 인증서의 유효성을 검사하고 세션키를 발급
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행
차이점
HTTP | HTTPS | |
의미 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
기본 프로토콜 | HTTP/1 & /2 → TCP/IP HTTP/3 → QUIC |
HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용 |
포트 | 기본 포트 80 | 기본 포트 443 |
용도 | 보안이 크게 중요하지 않은 데이터 전송에 사용 |
개인정보, 로그인 정보 등 민감한 데이터를 주고 받을 때 사용 (보안이 필수적인 상황) |
보안 | 추가 보안 기능 없음 | 퍼블릭 키 암호화에 SSL 인증서 사용 |
장점 | 인터넷을 통한 통신 지원 | 웹사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
728x90
반응형