DNS의 암호화 방법
서론
오늘은 DNS의 보안에 대해 알아볼게요
참고한 형님들
- 마크다운 언어
- https://cizz3007.github.io/%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4/%EB%AC%B8%EB%B2%95/markdown/2018/04/08/markdown/
- TCP 와 UDP 정의 및 차이점
- https://dump.tistory.com/4369
- https://jamong1014.tistory.com/37
- DoH, DoT 등 DNS 용어
- https://t-okk.tistory.com/86
DNS?
도메인 네임 서비스
- IP주소를 사용자가 인식할 수 있는 주소(naver등)으로 변환해 주는 역할
- 이 DNS의 쿼리/응답은 UDP로, 텍스트 전송됨
- 하단 UDP의 통신 방법을 확인하면 위험하구나~ 를 알 수 있음
UDP 통신?
간단하게 보면 다음 그림과 같다!
누가 일주일 전에 뿌린 신문에 우연히 맞아서 읽는 것..
TCP와 UDP
간단하게만 비교해 보면
설명 | Transport Control Protocol | User Datagram Protocol |
---|---|---|
특징 | 신뢰성을 추구하는 프로토콜 | 연속성을 추구하는 프로토콜 |
세션유무 | 세션을 먼저 설정 후 데이터를 주고 받음 | 세션같은 연결 세팅 없이 그냥 전송 |
검증 | 데이터가 잘 갔는지 확인할 수 있음(HandShake) | 최소한의 확인 절차만 거침(UDP CheckSum) |
순서 | 전송 순서가 유지됨 | 전송 순서 보장하지 않음 |
중복 | 중복이 발생하지 않음 | 데이터 중복 발생 |
속도 | 세션을 설정하는 등 절차가 있어 레이턴시가 큼 | 최소한의 절차만 거쳐서 레이턴시가 적다! |
굳이 설명하자면 | 저랑 대화좀 할까요 요청해서 정보를 하나씩 교환하는 느낌 | 길거리에서 누가 날린 신문에 맞아서 읽는 느낌 |
따라서 UDP는 인증 및 암호화가 없기 때문에 스푸핑(나한테 올 데이터는 아니지만 IP를 변조해서 원래 목적지인것처럼 속여야지!) 공격에 취약하다
다시 본론으로 돌아와서
왜 DNS에 보안이 필요할까?
- 아까 봤던 것처럼, DNS 쿼리는 UDP로 이루어짐
- UDP는 인증절차가 허술하다 -> ISP 등지에서 빼 읽을 수 있음
어떻게 암호화할까?
- DNS over TLS
- DNS over HTTPS
다음 시간에 계속~ 아직 작성중이라 계속 수정할 예정