1. Http란?
: Http(Hyper Text Transfer Protocol)란 "서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜"
: Http는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신규약으로, 80번 포트를 사용함.
: Http 서버가 80번 포트에서 요청을 대기하고 있으며, 클라이언트는 80번 포트로 요청을 보냄
: 웹브라우저가 서버와 통신하는 방법 == Http
a) Http의 구조
: Http는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.
: Http는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Header, Body로 구성됨
Http는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 Http로 개인정보(비밀번호, 주민등록번호)등을
주고 받으면 제3자가 정보를 조회할 수 있었고, 이 문제를 해결하기 위해 Https가 등장함.
2. Https란?
: Https(Hyper Text Transfer Protocol Secure)란 Https에 데이터 암호화가 추가된 프로토콜
: Https는 443번 포트를 사용하며, 네트워크 상에서 제3자가 정보를 볼 수 없도록 암호화를 지원함.
a) 대칭키 암호화와 비대칭키 암호화
: Https는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있음.
- 대칭키 암호화
: 클라리언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
: 키가 노출되면 위험하지만 연산속도가 빠름 - 비대칭키 암호화
: 1개의 쌍으로 구성된 공개키와 개인키를 암/복호화 하는데 사용
: 키가 노출되어도 안전하지만 연산속도가 느림
비대칭키 암호화는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화하고 있다.
공개키와 개인키는 서로를 위한 1쌍의 키이다.
- 공개키 : 모두에게 공개가능한 키
- 개인키 : 나만 가지고 알고 있어야 하는 키
b) Https의 동작 과정
: Https는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 가지고 있음
: HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환. 여기서 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만듦
→ 이 세션키를 클라이언트와 서버가 어떻게 교환? : 여기서 비대칭키가 사용됨
: 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것이고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용됨
※ 실제 HTTPS 연결 과정이 성립되는 흐름
- 클라이언트(브라우저)가 서버로 최초 연결 시도
- 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
- 브라우저는 인증서의 유효성을 검사하고 세션키를 발급
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행
c) Https의 발급 과정
: 위에서 잘 살펴봐야 할 부분은 서버가 비대칭키를 발급받는 과정이다.
: 서버는 클라이언트와 세션키를 공유하기 위한 공개키를 생성 → 일반적으로는 인증기관(Certificate Authority)에 공개키 전송 → 인증서 발급
: 인증서는 CA의 개인키로 암호화되어서 신뢰성을 확보할 수 있고, 클라이언트는 기업의 공개키로 데이터를 암호화했기 때문에 그것만 복호화하여 원본의 데이터를 얻을 수있음.
3. Http와 Https
- Http는 암호화가 추가되지 않았지 때문에 보안에 취약하지만 속도가 빠르다.
- Https는 암호화가 있어 데이터를 안전하게 주고 받을 수 있지만, 암/복호화의 과정이 필요하기때문에 Http보다 느림.
→ 고로 개인정보와 같은 민감한 데이터를 주고 받아야 하는 경우에는 Https를 이용하고, 노출이 되어도 상관없는 단순정보만을 처리한다면 http를 이용하면 된다.
(모든 사이트를 Https로 사용한다면 안전하겠지만 웹의 퍼포먼스가 현저히 떨어져 불편함을 초래할수도 있다.)