kluiop1 2021. 6. 26. 00:42

HTTP

- 웹의 애플리케이션 계층 프로토콜

- 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다 따라서 HTTP는 클라이언트 프로그램과 서버 프로그램으로 구현된다.

- HTTPTCP/IP위에서 작동한다. HTTPTCP를 전송 프로토콜로 사용한다.

- HTTP는 무상태(Stateless) 프로토콜이다.

- Method,Path, Version, Headers, Body로 구성된다.

- 80port 사용

- 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜 -> 이 문제로 HTTPS가 등장

 

무 상태성(Stateless)

서버가 클라이언트에 관한 어떠한 상태정보도 저장하지 않는다는 의미

이벤트 시간대에 서버 scale out(수평확장) 할때 쓰인다.

로그인 했다는 상태를 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지를 한다.

 

EX.

쇼핑몰 구매자 ---(A 상품 선택)---> 서버

쇼핑몰 구매자 <---(A 상품의 옵션 선택) 서버

 

쇼핑몰 구매자 ---(A 상품 선택, A상품의 옵션)---> 서버

-> 무 상태성이기 때문에 이전에 전달했던 정보와 추가된 정보를 다시 보내야한다.

 

장점

서버 디자인을 단순하게 만든다.

-> 진행 중인 송수신 정보를 처리하기 위해 저장 공간을 동적으로 할당할 필요가 없다.

-> 접속자의 정보를 서버가 저장할 필요가 없으니 클라이언트가 추가 정보를 다시 보내면서 서버의 부담이 줄어든다

단점

매 요청마다 추가정보를 포함할 필요가 있다.

-> 전송해야하는 정보가 계속 늘어난다.

-> 이 부가 정보는 서버가 해석해야한다.

 

비지속 연결 HTTP

TCP 연결이 하나의 요청 메세지와 하나의 응답 메시지만 전송

즉 전송해야하는 5개의 JPGE 객체가 있으면 매번 TCP연결을 하고 하나의 파일을 전송하고 종료하는 것을 5번 반복한다.

 

단점

각 요청 객체에 대한 새로운 연결이 설정되고 유지되어야함

TCP 버퍼가 할당되어야하고 TCP 변수들이 클라이언트와 서버 양쪽에 유지되어야함

-> 이는 웹 서버에 큰 부담

3. 전체 전송 시간이 오래 걸림

 

지속 연결 HTTP

지속 연결에서는 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지

서버는 일정기간 사용되지 않으면 페이지를 닫는다

즉 전송해야하는 5개의 JPGE 객체가 있으면 매번 TCP연결을 하고 모든 파일이 전송된 후 일정 시간 후 연결 종료

 

HTTPS

- HTTP에서 데이터 암호화가 추가된 프로토콜

- 웹 사이트를 SSL/TLS 인증서로 보안함

- HTTP와 다르게 433port 사용

- 공개키 암호화 지원

 

보안 소켓 계층 (SSL)

SSL은 웹사이트와 브라우저(혹은, 두 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결을 보안을 유지하는 표준 기술입니다. 이는 해커가 개인 정보 및 금융 정보를 포함한 전송되는 모든 정보를 열람하거나 훔치는 것을 방지합니다.

 

전송 계층 보안(TLS)

TLS는 가장 최신 기술로 더 강력한 버전의 SSL입니다. 그러나 SSL이 더 일반적으로 사용되는 용어이기에, 여전히 보안 인증서는 SSL이라 불립니다. DigiCert에서 SSL을 구매하시면 가장 높은 신뢰성을 가진 최신 TLS 인증서를 획득 하시게 됩니다.

 

인증서 발급

서버는 클라이언트가 요청을 보낼 때 암호화를 하기 위한 공개키를 생성해야하는데 일반적으로 인증된 기관에 공개키를 전송하여 인증서를 발급받는다.

 

인증서 발급 과정

1. A기업은 HTTP 기반의 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키를 발급함

2. CA 기업은 CA기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고, CA 기업의 개인키로 암호화하여 A기업에게 이를 제공함

3. CA 기업은 CA기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고, CA 기업의 개인키로 암호화하여 A기업에게 이를 제공함

4. A기업은 클라이언트에게 암호화된 인증서를 제공함

5. 브라우저는 CA기업의 공개키를 미리 다운받아 갖고 있어, 암호화된 인증서를 복호화함

6. 암호화된 인증서를 복호화하여 얻은 A기업의 공개키로 데이터를 암호화하여 요청을 전송함

 

호화된 인증서는 CA의 개인키로 암호화되었기 때문에, 신뢰성을 확보할 수 있고, 클라이언트는 A 기업의 공개키로 데이터를 암호화하였기 때문에 A기업만 복호화하여 원본의 데이터를 얻을 수 있다.

 

HTTPS의 동작 과정

 

1. Client Hello

브라우저 마다 지원하는 암호화 알고리즘과 TLS 버전이 다르므로 해당 정보를 전송하며, 난수 값을 생성하여 전송합니다.

 

2. Server Hello

사용할 TLS 버전, 사용할 암호화 알고리즘, 난수값을 전송합니다.

 

3. Certificate

CA로 부터 발급받은 인증서를 전송합니다.

 

4. Server Key Exchange

키 교환에 필요한 정보를 제공합니다. 만약 필요하지 않으면 이 과정은 생략이 가능한데, 예를 들어 키교환 알고리즘을 Diffie-Hellman으로 사용한다면 소수, 원시근 등이 필요하므로 이것을 전송합니다

 

5. Certificate Request

서버가 클라이언트를 인증해야할때 인증서를 요구하는 단계입니다. 요청하지 않을수도 있습니다.

 

6. Server Hello Done

 

7. Client Key Exchange, Change Cipher Spec

pre-master-key 라는 것을 전송합니다. 이 키는 1,2 단계에서 생성한 난수를 조합하여 생성하게되며 대칭키로 사용하게될 예정입니다. 그러므로 안전한 전송을 위해서 공개키 방식을 사용하여 전송합니다.

 

8.  Change Cipher Spec 

클라이언트로 부터 전송받은 pre-master-key를 정상적으로 복호화 후 master-key(대칭키)로 승격 후 보안 파라미터를 적용하거나 변경될때 보내는 알림입니다.

 

위 과정을 통해서 공개키 방식으로 대칭키를 안전하게 설정하여 데이터를 송, 수신하게됩니다

 

HTTPS는 이러한 공개키/개인키 기반의 대칭키 암호화 방식을 활용하여 안전성을 확보하고 있다

 

요약

 

HTTP

암호화/복호화 과정이 없어 속도가 빠르다

암호화/복호화 과정이 없어 보안에는 취약

-> 단순 정보 조회시 적합

 

HTTPS

암호화/복호화 과정이 있어 속도가 느리다

암호화/복호화 과정이 있어 안전하다.

-> 민감한 개인정보 조회 시 적합

 

참조

https://mangkyu.tistory.com/98

 

[Web] HTTP와 HTTPS 및 차이점

1. HTTP란? [ HTTP(Hyper Text Transfer Protocol)란? ] HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환..

mangkyu.tistory.com

https://mysterico.tistory.com/30

 

[Web 기초] HTTPS의 동작 원리 (feat. 와이어샤크)

안녕하세요 ian입니다. 오늘은 HTTPS의 개념과 어떻게 동작하는지 정리해보았습니다. HTTP의 보안처리가 된 버전이 HTTPS인것은 다들 아실것입니다. 그리고 요즘은 HTTPS는 웹의 기본스펙이라고 봐도

mysterico.tistory.com