Hyper Text Transfer Protocol + Secure Socket layer의 약자로
기존의 HTTP에 보안 기능을 추가한 계층이라고 볼 수 있다.
HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해
통신 과정에서 데이터를 암호화하여 전송하는 방법이다.
HTTPS의 장점
암호화
서버와 클라이언트가 주고 받는 정보를 중간에 제 3자가 탈취할 수 없도록
정해둔 방법으로 데이터를 암호화하여 주고 받기 때문에
데이터가 탈취되어도 데이터를 알아볼 수 없다.
클라이언트와 서버 간의 데이터는 비대칭키와 대칭키 방식을 혼용해서 사용하기 때문에
데이터를 복호화하기 전까지 제 3자는 데이터를 알 수가 없기 때문이다.
클라이언트와 서버 간의 데이터를 주고 받을 때는 양쪽이 비밀 키를 공유하여
데이터를 암호화하고 복호화 하는 대칭키 방식을 사용하고
대칭키를 주고 받을 때는 비대칭키를 사용한다.
대칭키는 비밀 키를 사용하여 복호화가 쉽기 때문에 클라이언트와 서버 간에 사용하지만
대칭키가 탈취되는 경우에는 복호화 될 가능성이 높기 때문에
대칭기를 주고 받는 과정에서는 개인이 가진 비밀 키로만 풀 수 있는
비대칭키 방식으로 주고 받아 복호화 할 수 없게 한다.
- 대칭키 : 하나의 비밀 키를 서로 공유하여 암호화와 복호화에 사용함
- 비대칭키 : 공개 키를 사용하여 암호화를 하지만 복호화는 개인 키로만 가능함
인증서
브라우저가 서버의 응답과 같이 전달된 인증서를 확인할 수 있기 때문에
서버의 신원을 보증해준다.
이러한 서버의 신원을 보증해주는 제 3자를 CA(Certificate Authority)라고 부르며
인증서를 발급해 주는 공인 기관들로 서버의 공개키와 정보를 비밀키로 암호화하여 인증서를 발급한다.
인증서를 통해 검증하는 과정은 아래와 같다.
- 서버가 클라이언트에 인증서를 전달
- 클라이언트 측의 운영체제나 브라우저에 내장된 CA 리스트에서 조회
- 인증된 CA에서 발급 받은 인증서인지 확인
- 아니라면 경고창을 띄워서 연결이 안전하지 않다 알림
- 인증된 인증서라면 해당 CA 기관의 공개키로 인증서를 복호화
- 복호화해 얻은 공개키로 서버가 신뢰할 수 있는 대상인지 판단
'Back-End > Security' 카테고리의 다른 글
[스프링 시큐리티] 회원가입 구현 (0) | 2023.07.10 |
---|---|
[스프링 시큐리티] 기본 (0) | 2023.07.10 |
Session (0) | 2023.07.07 |
Cookie (0) | 2023.07.07 |
Hashing (0) | 2023.07.07 |