반응형

HTTP(Hyper Text Transter Protocol)

 

서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다. HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로써 80번 포트를 사용하고 있으며 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며 클라이언트는 80번 포트로 요청을 보내게 됩니다. 하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이었기 떄문에 HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었습니다. 이런 문제를 해결하기 위해 등장한 것이 HTTPS입니다.

 

HTTPS(Hyper Text Transfer Protocol Secure)

 

HTTP에 데이터 암호화가 추가된 프로토콜로써 HTTP와 다르게 443번 포트를 사용하며 네트워크 상에서 중간에 3자가 정보를 볼 수 있도록 암호화를 지원합니다. 대칭키와 비대칭키 암호화 방식을 모두 사용하고 있으며 이를 통해 빠른 연산 속도와 안정성을 모두 얻고 있습니다. 먼저 서버와 클라이언트 간의 세션키 교환이 이뤄지고 여기서 세션키를 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어집니다. 문제는 이 세션키를 클라이언트와 서버가 어떻게 교환할 것인가 인데 이 과정에서는 비대칭키가 사용됩니다. 즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서는 비대칭키를 사용하며 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키를 사용합니다.

 

HTTPS 연결 과정

 

1) 브라우저(클라이언트)가 서버로 최초 연결을 시도합니다.

2) 서버는 공개키를 브라우저에게 넘겨줍니다.

3) 브라우저는 인증서의 유효성을 검사하고 세션키를 발급합니다.

4) 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송합니다.

5) 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻습니다.

6) 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행합니다.

반응형

+ Recent posts