Web

HTTP, HTTPS의 차이점

bas96 2021. 6. 23. 15:57

HTTP 


http는 웹서버와 클라이언트 사이에서 문서를 전송하기 위해 사용하는 프로토콜(=규약, 약속) 입니다. 

HTTP는 클라이언트가 서버로 요청, 서버가 클라이언트로 응답을 하는 과정으로 정보를 교환합니다. 

 

그런데 이HTTP는 기본포트인 80번 포트를 사용하는데, 여기에서는 단순한 텍스트만 주고 받기 때문에 

정보가 보안처리 없이 그대로 전송되고, 이는 해킹과 정보 유출의 문제점을 가지고 있습니다. 

 

그래서 우리는 정보를 암호화하여 연결하여, 서버와 브라우저 사이에서 안전한 암호화 연결을 할 수 있는 HTTPS를 사용합니다.

 

HTTPS 


HTTPS는 HTTP + Secure 의 약자입니다.

HTTPS는 내가 어떤 사이트에 보내는 정보를 특정 서버만 알아볼 수 있는 텍스트로 변경하여 통신합니다.

 

HTTPS는 

1. 내가 어떤 사이트에 보내는 정보들을을 제 3자가 보지 못하게 하고,

2. 접속한 사이트가 믿을만한 곳인지 알려줍니다,

 

그 방법은 암호화된 메세지를 통해 일어나는데, 대칭키와 공개키가 있습니다.

 

대칭키 (A - A)

캍은 키(A)로 복호화를 통해 암호문을 해독합니다. 그런데 애초에 이 동일한 키를 공유하기 위해서 한 번은 키를 공유해야 합니다.

이 점을 보완하고 대칭키를 공유하기 위해 사용하는 것이 공개키 입니다.

 

공개키 (A - B)

만약 카카오 사이트를 이용할 때, 카카오에서 개인 키 A키로 암호화 하였다면, 공개키 B를 가진 사용자만 공개키 B를 이용하여 풀 수 있습니다. 

공개 키의 정품을 확인하는 것은 CA를 이용하여 확인이 가능합니다.

크롬, 사파리, 익스플로어 등 브라우저에 CA들의 목록이 내장되어 있습니다. HTTPS로 사이트에 접속하는 과정을 알아보며 이해해 보겠습니다.

 

HTTPS로 사이트에 접속할 때 과정

1. 클라이언트와 서버가 통신하기 전에, 핸드쉐이크를 통한 탐색 과정을 거친다.

- 클라이언트가 어떤 랜덤 데이터(A)를 생성하여 서버에 보냄

- 이 데이터를 받은 서버는 답변으로 서버측에서 생성한 무작위의 데이터(B)와 해당 서버의 인증서를 실어 보냄

2. 클라이언트는 브라우저에 저장 되어있은 CA의 정보를 통해, 서버가 보낸 인증서가 진짜인지 확인한다.

3 -1. 만약 이 CA 중에 인증서에 해당되는 것이 없으면 경고 표시 

3-2. 만약 이 CA 중에 인증서에 해당되는 것이 있으면

4. (클라이언트에서) 성공적으로 복호화 된 인증서에는 서버의 공개키가 포함되어 있다.

5. 이제부터 정보를 주고받을 때 대칭키공개키가 혼합되어 사용된다.

6. 대칭키를 공유할 때 공개키를 사용한다.

7. 핸드쉐이크 할 때 생성 된 무작위 데이터 2개 --> 클라이언트는 이를 혼합하여 어떤 임시 키를 만든다.

8. 이 임시키는 서버의 공개 키로 암호화되어 서버로 보내진다.

9. 양쪽에서 일련의 과정을 거쳐 동일한 대칭키가 사용된다.