반응형
Intro
- 웹브라우저를 통해 웹서비스를 이용할 때 사용자는 HTTP/HTTPS 프로토콜로 데이터를 주고 받게 됩니다.
- HTTPS/HTTP 통신은 대칭암호화, 비대칭암호화 방식을 적절하게 혼합하여 데이터를 암호화 합니다.
- 네트워크구간에서 데이터 유출을 막기 위한 방법으로 HTTPS통신을 사용해야합니다.
- HTTPS통신은 SSL/TLS인증서가 필요하고, SSL인증서는 CA기관에서 발급을 받을 수 있습니다.
- 오늘은 HTTP/HTTPS가 어떻게 암호화하는지 알아 보도록 하겠습니다.
필요 사전 지식
- HTTP/HTTPS
- SSL/TLS
- 대칭암호화, 비대칭암호화
- 중간자공격(MITM)
- 공개키 인증구조(PKI)
- 인증기관(CA)
* 대칭암호화 란? 비대칭암호화 란?https://kim-dragon.tistory.com/67?category=834254
* HTTPS란? SSL/TLS란? https://kim-dragon.tistory.com/66?category=834254
HTTP 통신 암호화 과정
- 웹서버에서 웹서버의 public key(보라색 자물쇠)와 private key(보라색 열쇠)를 생성
- 웹서버에서 브라우저로 웹서버의 public key(보라색 자물쇠)를 복사
- 브라우저만의 private key(빨간색 열쇠)가 생성됨
- 웹서버에서 넘어온 public key(보라색 자물쇠)로 private key를(빨간색 열쇠)를 암호화 함 (키가 키를 암호화)
- public key(보라색 자물쇠)로 private key를(빨간색 열쇠)를 암호된 키를 웹서버로 전달
- 웹서버에서는 자기가 갖고 있는 private key(보라색 열쇠)로 이것을 복호화함
- 각각에 웹서버의 public key(보라색 자물쇠)와 브라우저의 private key(빨간색 열쇠)로 symmetric key(녹색 열쇠)를 생성함
- 이제 브라우저에서 symmetric key(녹색 열쇠)를 사용하여 데이터를 암호화하고 서버와 통신하게됨
그러면 이제 보안이 완벽히 안전한가? → No
- 해커들은 송신자와 수신자 통신 중간에서 가짜 웹서버로 들어오게 하여 symmetric key(녹색 열쇠)를 만들고 데이터를 약탈함
- 이것을 중간자 공격 (MITM, Main In The Middle) 이라함
중간자 공격 (MITM, Main In The Middle) 과정
- 가짜 웹서버에서 가짜 웹서버의 public key(검은색 자물쇠)/private key(검은색 열쇠)를 생성
- 중간자 공격자는 웹서버와 동일한 가짜 웹서버를 만들고 중간에 라우터를 조정하여 가짜 웹으로 접속하게 만듬
- 가짜 웹서버에서 브라우저로 웹서버의 public key(검은색 자물쇠)를 복사
- 브라우저만의 private key(빨간색 열쇠)가 생성됨
- 가짜 웹서버에서 넘어온 public key(검은색자물쇠)로 private key를(빨간색 열쇠)를 암호화 함 (키가 키를 암호화)
- public key(검은색 자물쇠)로 private key(빨간색 열쇠)를 암호된 키가 가짜 웹서버로 복사됨
- 가짜 웹서버에서는 자기가 갖고 있는 private key(검은색 열쇠)로 이것을 복호화함
- 각각에 가짜 웹서버의 public key(검은색 자물쇠)와 브라우저의 private key(빨간색 열쇠)로 symmetric key(녹색 열쇠)를 생성함
- 이제 브라우저에서 이 symmetric key(녹색 열쇠)를 사용하여 데이터를 암호화하고 가짜 웹서버와 통신하게됨
이를 방지하기 위한 → 공개키 인증구조(PKI, Public Key Infrastructure)
- 중간에 신뢰할 수 있는 제3자가(CA, Certificate Authority) 웹서버에서 브라우저로 넘어어오는 public key가 인증된 것인지 확인해주는 것을 말함
HTTPS 통신 암호화 과정 (CA 인증 사용)
- 브라우저는 CA에서 발급한 public key(주황색 자물쇠)를 갖고 있음
- 웹서버에서 CSR을 사용하여 public key를 생성(보라색 자물쇠)하고 CA로 보냄
(.csr 파일은 웹서버 private key로 생성)
- CA는 CSR을 통해서 인증서를 만들고, CA의 private key(주황색 열쇠)로 인증서와 public key(보라색 자물쇠)를 암호화하여 다시 웹서버로 전달
(이 형태가 바로 .crt 파일)
- 웹서버는 private key(주황색 열쇠)로 암호화된 public key(보라색 자물쇠)와 인증서를 브라우저로 전달
- 브라우저는 갖고 있는 CA의 public key(노란색 자물쇠)로 이것을 복호화 함
- 브라우저만의 private key(빨간색 열쇠)를 생성
- 웹서버의 public key(보라색 자물쇠)로 브라우저의 private key(빨간색 열쇠)를 암호화하여 웹서버로 전달
- 웹서버의 private key(보라색 열쇠)로 이것을 복호화함
- 각각에 웹서버의 public key(보라색 자물쇠)와 브라우저의 private key(빨간색 열쇠)로 symmetric key(녹색 열쇠)를 생성함
- 이제 브라우저에서 symmetric key(녹색 열쇠)를 사용하여 데이터를 암호화하고 서버와 통신하게 됨
반응형
'IT > 네트워크' 카테고리의 다른 글
[네트워크]웹브라우저에서 URL을 입력할때 어떤일이 일어날까? (0) | 2021.06.15 |
---|---|
포트(Port)의 종류(잘알려진포트/등록된포트/동적포트) (0) | 2021.06.09 |
대칭암호화(symmetric encryption)와 비대칭암호화(asymmetric encryption)란? (0) | 2021.06.04 |
HTTP란? HTTPS란? SSL이란? TLS란? (0) | 2021.06.04 |
[네트워크] NAT(Network Address Translator)란?? (0) | 2019.10.15 |