반응형
💭 HTTPS
- HTTP는 클라이언트 (웹 브라우저) ↔ 서버 사이의 요청/응답 프로토콜
- HTTPS는 하이퍼 텍스트 전송 프로토콜 보안, HTTP 프로토콜의 보안 버전
- SSL을 사용하면 암호화를 할 수 있고, 통신하려는 상대를 보증할 수 있다.
- HTTPS는 SSL(Secure Socket Layer)을 이용한 HTTP 통신 방식
SSL 통신과정
CA(Certificate authority)란?
- Client Server 통신에 앞서 Server는 CA에서 인증서를 받는다.
- 공인된 기관에서 Server가 믿을 수 있는 서버인지 보증하는 SSL 보증서를 발급한다.
- 자체 CA (사설 CA)로도 SSL 인증서를 발급할 수 있다.
- 사설 CA도 HTTPS 통신이지만 브라우저 입장에서는 안전하지 않다고 판단한다.
통신과정
- Client가 Server에 최초 접속하면서 2가지 정보를 보낸다.
- Client가 생성한 random data와 암호화 기법 목록을 보낸다.
- SSL에서 사용되는 암호화 기법은 여러가지가 있다.
- Server는 Client에게 3가지 정보를 보낸다.
- random data
- Server가 생성한 random data
- Client가 보낸 암호화 기법 중 자신도 사용할 수 있고, 가장 안정된 암호화 기법을 선택
- 인증서
- 인증서에는 서비스 정보와 public key를 보낸다.
- 서비스 정보: 인증서를 발급한 CA, 서비스의 도메인 등등
- 서비스 정보는 private key로 암호화된 상태
- Client는 믿을 수 있는 CA에서 발급한 인증서인지 확인
- Browser는 믿을 수 있다고 판단한 CA 기관 목록을 가지고 있다.
- 공인 CA (믿을 수 있는 CA) / 사설 CA에서 발급한 인증서는 각각 다른 형태로 표시된다.
- Client는 실제 CA 기관에서 발급한 인증서인지 확인
- Server가 보낸 인증서에는 서비스 정보와 public key가 있다.
- private key와 public key는 하나의 쌍을 이룬다.
- public key로 암호화 → private key로 복호화
- private key로 암호화된 서비스를 public key로 복호화할 수 있다면, 두 key는 pair되고 CA 기관에서 발급한 인증서라고 할 수 있다. 즉, 내가 기대한 서버인지 확인하게 된다.
⇒ 대칭키 방식 (public, private key를 사용하는 암호화 방식)
- 통신에 사용할 key를 Client와 Server가 공유
⇒ 공통키 방식 (하나의 key를 공유하는 암호화 방식)
- premaster secret은 앞서 언급한 random data를 합쳐 생성
- public key로 암호화하면 private key로만 복호화할 수 있기 때문에 premaster secret은 안전하다.
- premaster secret → master secret → session key
- 일련의 과정을 거쳐 client와 server는 공통키를 가지게 된다.
- 공통의 session key로 데이터를 암호화/복호화할 수 있다.
반응형
'개발일지 > 기술 면접 대비' 카테고리의 다른 글
2023.01.08 TIL(Django Q&A 정리) (0) | 2023.01.09 |
---|---|
2023.01.07 TIL(자료구조 CS Q&A 정리) (2) | 2023.01.09 |
2023.01.05 TIL(Django Q&A 정리) (0) | 2023.01.06 |
2023.01.03 TIL(알고리즘 CS Q&A 정리) (0) | 2023.01.04 |
2023.01.02 TIL(데이터베이스 CS Q&A 정리) (0) | 2023.01.03 |