HTTP
HTTP는 HyperText Transfer protocol의 약자로
인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 통신 규약을 뜻합니다.
서버 클라이언트 모델이기 때문에 클라이언트에서 보내는 요청을 서버가 처리하여 응답하는 방식으로 동작합니다.
또한 HTTP는 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동하게 됩니다.
HTTP가 지니는 특징으로는 상태를 저장하지 않는 Stateless와
클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless가 있습니다.
HTTP의 장점은 상태 관리의 필요성이 없어 서버 디자인이 간단합니다.
단점으로는 이전 통신 정보를 모르기 때문에 매번 인증을 해줘야 하고,
이를 해결하기 위해 쿠키나 세션을 통한 데이터 처리가 필수적인 점을 들 수 있습니다.
HTTPS
HTTP는 평문 데이터를 전송하는 프로토콜입니다. 평문 데이터란 암호화 되지 않은 정보를 뜻합니다.
암호화가 되어있지 않기 때문에 비밀번호나 주민번호와 같은 민감한 데이터를 주고 받으면 제 3자에 의하여
조회될 수 있는 위험성이 있습니다.
이런 문제를 해결하기 위해 기존의 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다.
HTTPS는 SSL(Secure Socket Layer) 인증서를 사용합니다. 인증서는 일반 HTTP 요청 및 응답을 암호화
하는 기능을 수행합니다. 다시 말해 HTTPS는 SSL 프로토콜위에서 돌아가는 프로토콜이라 할 수 있습니다.
SSL 또는 TLS 방식이라고 말하기도 하는데, 이 둘은 같은 의미입니다. 처음에 SSL이 발명되었고 이후에 표준화 기구의
관리로 변경되면서 TLS라는 이름으로 변경되었습니다.
암호화는 방식중에 하나는 대칭키 방식입니다. 대칭키란 통신을 받는 곳과 보내는 곳 모두가 똑같은 키를 지니고
이것으로 암호화 및 복호화 작업을 수행하는 방식을 뜻합니다.
하지만 대칭키를 서로 알려면 한곳에서 다른 한곳으로 보내야만 하는 문제점이 있습니다.
이를 누군가가 탈취하게 된다면 대칭키를 통한 암호화 방식의 효용성이 사라지게 됩니다.
그래서 생겨난 것이 공개키(비대칭키) 방식입니다. 공개키 방식은 두개의 키를 갖게 됩니다.
A키를 암호화하면 B키로만 복호화 할 수 있고 B키로 암호화하면 A키로만 복호화 할 수 있는 방식입니다.
두개의 키중 하나는 자신만이 가지고 있는 비공개키로, 나머지 하나는 타인에게 제공하는 공개키로 지정합니다.
공개키가 유출된다 하더라도 비공개키를 알 수 없기 때문에 안전합니다.
하지만 비칭키 암호화 복호화는 비용이 매우 크기 때문에 모든 메세지를 처리하기에는 오버헤드가 발생할 가능성이 있습니다.
그래서 서버는 기본적으로 대칭키 방식을 사용하돼 해당 대칭키를 공유하는 과정에서 비대칭키를 이용하여
전달하게 됩니다. 동작 방식은 다음과 같습니다.
1. 서버가 공개키를 브라우저에 전달합니다.
2. 브라우저는 자신의 프라이빗 키를 공개키로 암호화하여 서버에 넘깁니다.
3. 서버가 비공개키로 브라우저에서 넘긴 정보를 복호화하여 브라우저의 프라이빗키를 알아냅니다.
해당 과정을 통해 서버에는 서버의 공개키와 브라우저의 프라이빗키가 남고
클라이언트에도 브라우저의 프라이빗키와 서버의 공개키가 남게 됩니다.
이 두개를 사용하여 하나의 대칭키를 만들어냅니다. 이 방식을 통하여 누군가가 대칭키를 가로챌 염려도 없고
비용의 부담도 줄이는 방식으로 데이터 교환이 가능해지게 됩니다.
이상으로 긴글 읽어주셔서 감사합니다!
부족한 부분이나 수정할 부분이 있으면 댓글 남겨주세요!
감사합니다.
'CS > 네트워크' 카테고리의 다른 글
TCP/IP 에 대하여 (2) | 2023.03.08 |
---|---|
주소창에 naver.com을 입력하면? (0) | 2023.02.24 |