목차
1. HTTPS란?
2. SSL/TLS 및 SSL Handshake
3. HTTPS 암호화 과정
4. 대칭 키 vs 비대칭 키
5. DNS 란?
6. DNS 작동 방식
7. DNS query 종류
8. DNS가 UDP를 사용하는 이유
9. DNS 레코드란?
10. UDP란?
11. UDP 장단점
12. UDP 체크섬
13. 전송 후 대기 프로토콜
14. 파이프라인 프로토콜
작동방식
SSL은 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터를 암호화 한다. 따라서, 데이터를 가로채려해도 거의 복호화가 불가능하다.
SSL은 클라이언트와 서버간에 핸드셰이크를 통해 인증이 이루어진다. 또한 데이터 무결성을 위해 데이터에 디지털 서명을 하여 데이터가 의도적으로 도착하기 전에 조작된 여부를 확인한다.
HandShake(핸드셰이크)란❓
클라이언트와 서버간의 메시지 교환이다.
궁극적 목표
- 서버-클라이언트가 주고 받을 데이터의 암호화 알고리즘 결정
- 서버-클라이언트가 주고 받을 데이터 암호화를 위한 동일한 대칭키 얻기
HTTPS 프로토콜을 사용하기 위해서는 인증기관(CA)으로 부터 SSL 인증서를 발급받아야 한다.
동작 과정
1. Client Hello(암호화 알고리즘 나열 및 전달)
2. Server hello(암호화 알고리즘 선택)
3. Server Certificate(인증서 전달) : Server의 SSL 인증서 내용
4. Client에서 Server의 SSL 인증서 검증
5. Client Key Exchange(데이터를 암호화 할 대칭 키 서버로 전달)
6. Client / ServerHello done (정보 전달 완료) 7. Finished(SSL Handshake 종료)
대칭 키=비밀키
- 암호화, 복호화에 같은 키를 사용한다.
- 발송자와 수신자가 대화하려면 둘다 공유키를 가져야 한다.
- 키가 유출되면 암호의 내용을 복호화 할 수 있기에 위험하다. (=유출되면X=비밀키)
- 공개키보다 빠르게 통신이 가능하다.
비대칭키=공개 키
- 암호화, 복호화에 다른 키를 사용한다.
- A키로 암호화,B키로 복호화O / B키로 암호화,A키로 복호화O
- 암호화 키 (public key)는 공개되어 있으며, 보통 디지털 인증서안에 포함되어 있다.
- 복호화 키 (secret key)는 호스트만이 개인 복호화키를 알고있다.
- 컴퓨터에 과부하를 줄 수 도 있다.
공개키와 비공개키는 안전한 데이터 전달 이외에도, 데이터 제공자의 신원을 보장 하는데 사용할 수 있다.
DNS(Domain Name System)는 인터넷 전화번호부이다.
TCP/IP 네트워크 상에서 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP 주소로 바꾸고 해당 IP주소로 접속하는 서버를 DNS 라고 한다.
✅ 일반적인 동작 방식
1. 웹 브라우저 창에 도메인 주소 입력
-> 로컬 컴퓨터의 캐시에 해당 도메인의 IP 가 저장되어 있는지 확인
1-1. 있는 경우 바로 해당 IP 주소로 패킷 전송,
없는 경우 로컬 DNS 서버로 쿼리
2. DNS 서버의 캐시 및 주소록에서 IP 주소 검색
2-1. 있는 경우 바로 해당 IP 주소로 패킷 전송,
없는 경우 연결된 Root DNS 서버로 쿼리
3. Root DNS 서버에서 도메인의 TLD 정보를 가지고 있는
하위 DNS 서버 IP 요청 (".com" )
4. 하위 DNS 서버에서 다음 계층의 주소를 포함하는
도메인 주소의 정보를 가지고 있는 하위 DNS 서버 IP 요청 ("naver.com")
5. 같은 방식으로 계층 하나씩 이동하며
최종 domain 의 IP 주소를 받을 때까지 쿼리 반복
6. 마지막으로 IP 주소를 로컬 DNS 와 브라우저 PC 에 캐싱한 뒤 패킷 전송
Root DNS: 최상위 도메인에 대한 권한이 있는 네임 서버 목록을 반환하는 도메인 네임 서버이며, 전 세계에 13대밖에 없다.
(참고) www.naver.com 예시 동작 원리✅ 웹 브라우저에 www.naver.com을 입력 시 과정
1. Local DNS에게 "www.naver.com"이라는 hostname"에 대한 IP 주소를
질의하여 Local DNS에 없으면 다른 DNS name 서버 정보를 받음
(Root DNS 정보 전달 받음)
2. Root DNS 서버에 "www.naver.com" 질의
3. Root DNS 서버로 부터 "com 도메인"을 관리하는
TLD (Top-Level Domain) 이름 서버 정보 전달 받음
4. TLD에 "www.naver.com" 질의
5. TLD에서 "name.com" 관리하는 DNS 정보 전달
6. "naver.com" 도메인을 관리하는 DNS 서버에
"www.naver.com" 호스트네임에 대한 IP 주소 질의
7. Local DNS 서버에게 www.naver.com에 대한 IP 주소는
222.122.195.6 이라고 응답
8. Local DNS는 www.naver.com에 대한 IP 주소를 캐싱을 하고
IP 주소 정보 전달
DNS 클라이언트와 DNS 서버는 DNS 쿼리를 교환한다. DNS 쿼리는 Recursive(재귀적) 또는 Iterative(반복적)으로 구분된다.
재귀적 질의
- 클라이언트에서 로컬 DNS 서버로 보내는 요청이다.
결과물(IP 주소)를 돌려주는 작업이다.
Recursive 쿼리를 받은 Recursive 서버는 Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답한다. 사전적 의미로써 재귀로, 응답을 돌려주는 쿼리라고 생각하자.
반복적 질의
- 로컬 DNS 에서 root DNS 서버 & 하위 DNS 서버에 보내는 요청이다.
Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업이다.
Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)를 알아낸다.
Recursive 서버에 이미 IP 주소가 캐시 되어있다면 이 과정은 건너 뛴다.
1. 빠른 속도
- tcp는 데이터 전송을 시작하기 전, 3-way-handshake를 사용하는 반면, udp는 없기 때문에 연결 설정에 드는 비용이 없이 없다.
2. 연결 상태를 유지할 필요가 없다.
- udp는 어떠한 정보도 기록하지 않고 유지할 필요도 없기 때문에 더 많은 클라이언트를 수용할 수 있다.
DNS Record는 DNS 서버가 해당 패킷을 받았을 때 어떤식으로 처리할지를 나타내는 지침을 말한다.
나중에 추가해보기
장점
- UDP는 TCP와 다르게 흐름제어나 오류제어 등이 없기 때문에 전송 속도가 빠르다.
- 연속성이 중요한 서비스에서 유용하다. (ex. 실시간 스트리밍 서비스)
단점
- 신뢰성이 낮다. (TCP처럼 신뢰성 있는 전송 보장X)
- 데이터 빠르게 전송하는데 초점, 데이터 제대로 도착했는지 확인X
체크섬(checksum)이란 네트워크를 통해서 전송된 데이터의 값이 변경되었는지(무결성)를 검사하는 값으로, 무결성을 통해서 네트워크를 통해서 수신된 데이터에 오류가 없는지 여부를 확인한다.
단점
종류
참고
https 참고
ssl/tls 참고
https 암호화과정, ssl handshake 참고
TLS&SSH handshake 과정 참고 > 추후 과정 그림도 참고하기!
DNS 참고
DNS 작동 원리 참고
DNS 동작방식 참고
DNS Query 참고
UDP 이해 참고
체크섬 참고
전송 후 대기 프로토콜, 파이프라인 프로토콜 참고
_
https://wayhome25.github.io/cs/2018/03/11/ssl-https/ >
SSL 통신과정 사진 잘 되어 있어서 나중에 다시 읽어보기