HTTPS
HTTP Secure의 약자로, 기존의 HTTP 프로토콜을 더 안전하게 사용할 수 있음을 의미한다.
HTTP와 달리 요청과 응답으로 오가는 내용을 암호화 한다.
HTTP로 보낸 요청HTTPS로 보낸 요청
위의 두 이미지를 비교해 보면 똑같은 요청을 보냈어도 HTTPS프로토콜로 보냈을 때 데이터가 암호화되어있는 것을 알 수 있다.
➡️ HTTPS 요청 및 응답은 중간에 제 3자에게 데이터가 탈취되도 그 내용을 알 수 없다.
암호화 방식
1.대칭 키 암호화 방식
대칭키 암호화 방식은 하나의 키만 사용한다.
암호화 할때 사용한 키로만 복호화가 가능하다.
- 공개 키 방식에 비해 연산 속도가 빠르다
- 키를 주고받는 과정에서 탈취당했을 경우 암호화가 소용없어지기 때문에 키 관리에 신경써야 한다.
2.공개 키(비대칭 키) 암호화 방식
비대칭 키 암호화 방식은 두 개의 키를 사용한다.
암호화 할때 사용한 키와 다른 키로만 복호화가 가능하다.
- 두 개의 키를 각각 공개 키, 비밀 키라고 한다.
- 공개키는 공개되어있어 누구나 접근 가능하다.
- 공개키를 사용해 암호화된 데이터를 보내면, 비밀키를 가진 사람만 그 내용을 복호화 할 수 있다.
- 요청을 보내는 사용자가 공개 키를 갖고, 요청을 받는 서버가 비밀 키를 갖는다.
- 공개키를 사용해 암화화된 데이터가 탈취당해도 비밀키가 없으면 복호화 할 수 없어 대칭키 보다 보안성이 더 좋다
- 대칭 키 보다 더 복잡한 연산이 필요해 더 많은 시간을 소모한다.
SSL/TLS 프로토콜
HTTPS는 HTTP 통신을 하는 소켓 부분에서 SSL/TLS라는 프로토콜을 사용해 서버인증과 데이터 암호를 진행한다.
SSL이 표준화 되어 바뀐이름이 TLS이다.
SSL/TLS 특징
- CA를 통한 인증서사용
- 대칭 키, 공개 키 암호화 방식 모두 사용
인증서, CA(Certificate Authority)
HTTP를 사용하면 브라우저가 서버의 응답과 함께 전달된 인증서를 확인할 수 있음
인증서를 발급해주는 공인된 기관 ➡️ CA
- 서버는 인증서를 발급하기 위해 CA로 정보와 공개키를 전달
- CA는 서버의 공개키와 정보를 CA의 비밀키로 암호화해 인증서 발급
CA의 비밀키로 암호화된 인증서는 CA의 공개 키
로만 복호화 가능하고, CA에서 발급한 인증서가 맞으면 복호화가 성공적으로 진행되어야 한다.- 복호화가 성공하면 해당 서버가 신뢰할 수 있는 서버임을 알 수 있게 된다.
- 복호화가 실패하면 서버가 보내준 인증서가 신뢰할 수 없는 인증서임을 확인하게 된다.
" 서버와 클라이언트 간의 CA를 통해 서버를 인증하는 과정과 데이터를 암호화하는 과정을 아우른 프로토콜을 SSL/TLS라고 하고, HTTP에서 SSL/TLS 프로토콜을 더한 것을 HTTPS라고 한다. "
참조, 출처 : 코드스테이츠