TL;DR

  • DNSCrypt는 사용자 컴퓨터와 재귀 네임 서버 사이의 DNS 트래픽을 인증·암호화해 도청과 중간자 위조를 방지하며, UDP 기반 증폭 공격도 완화하는 네트워크 프로토콜임
  • UDP와 TCP에서 모두 사용할 수 있고 기본 포트는 443이며, 클라이언트가 선택한 제공자의 공개 서명 키를 명시적으로 신뢰하는 방식임
  • 프로토콜 버전 1·2X25519, EdDSA, XSalsa20-Poly1305 또는 XChaCha20-Poly1305를 사용하며, 2023년 기준 알려진 취약점이나 실용적 공격이 없음
  • OpenDNS, CloudNS Australia, Yandex, AdGuard, Quad9 등 공용 DNS 서비스와 VPN 서비스가 DNSCrypt를 도입했으며, dnscrypt-proxyOblivious DoH(ODoH)도 통합함
  • Anonymized DNSCrypt는 다른 리졸버를 투명 프록시로 사용해 실제 클라이언트 IP를 숨기는 2019년 제안 확장 기능이며, 공개 후 2주 만에 40개 DNS 릴레이가 구축됨

개요

  • DNSCrypt는 사용자 컴퓨터와 재귀 네임 서버 사이의 도메인 이름 시스템(DNS) 트래픽을 인증하고 암호화하는 네트워크 프로토콜임
  • 수정되지 않은 DNS 트래픽을 클라이언트와 DNS 리졸버 사이에서 암호화 구조로 감싸 중간자에 의한 도청과 위조를 방지함
  • 질의가 대응하는 응답보다 최소한 크게 되도록 요구해 UDP 기반 증폭 공격도 완화하며, DNS 증폭 공격 방지에 기여함
  • DNSCrypt는 원래 Frank Denis와 Yecheng Fu가 설계함
  • 여러 자유·오픈 소스 소프트웨어 구현이 존재하며, Unix, Apple iOS, Linux, Android, Microsoft Windows 등 다양한 운영 체제에서 사용 가능함
  • 자유·오픈 소스 구현인 dnscrypt-proxyOblivious DoH(ODoH)도 통합함

배포

  • 사설 배포 외에도 DNSCrypt 프로토콜은 여러 공용 DNS 리졸버와 가상 사설망(VPN) 서비스에 도입됨
  • 공용 DNS 리졸버의 압도적 다수는 OpenNIC 네트워크의 구성원임
  • OpenDNS(현재 Cisco의 일부)는 2011년 12월 6일 DNSCrypt를 지원하는 최초의 공용 DNS 서비스를 발표했으며, 곧이어 CloudNS Australia도 지원함
  • Yandex는 2016년 3월 29일 공용 DNS 서버와 Yandex Browser에서 DNSCrypt 프로토콜을 지원한다고 발표함
  • AdGuard는 2016년 10월 14일 DNS 필터링 모듈에 DNSCrypt를 추가해 사용자가 온라인 개인정보 보호와 광고 차단을 위해 인터넷 서비스 제공업체(ISP)의 DNS에서 맞춤형 DNS 또는 AdGuard 자체 DNS 서버로 이동할 수 있도록 함
  • Quad9 비영리 공용 재귀 리졸버 서비스는 2018년 9월 10일 DNSCrypt 지원을 발표함
  • 보안 프로토콜을 지원하는 다른 서버는 DNSCrypt 제작자 목록에 언급됨

프로토콜

  • DNSCrypt는 UDP 또는 TCP를 통해 사용할 수 있으며, 두 경우 모두 기본 포트는 443
  • DNSCrypt와 HTTPS는 프로토콜이 크게 다르지만 두 서비스 유형 모두 같은 포트를 사용함
  • DNS over HTTPS와 DNSCrypt를 같은 포트에서 사용하는 것은 가능하지만, 서로 다른 서버에서 별도로 실행해야 함
  • 동일한 서버에서 두 서버 애플리케이션이 같은 통신 포트를 동시에 사용할 수는 없으며, 이론적으로는 다중화 방식을 적용할 수 있음
  • 웹 브라우저에서 일반적으로 사용하는 신뢰된 인증 기관에 의존하는 대신, 클라이언트가 선택한 제공자의 공개 서명 키를 명시적으로 신뢰해야 함
  • 이 공개 키는 일반 DNS 질의를 통해 가져온 인증서 집합을 검증하는 데 사용됨
  • 인증서에는 키 교환에 사용되는 단기 공개 키와 사용할 암호 스위트 식별자가 포함됨
  • 클라이언트는 모든 질의마다 새 키를 생성하도록 권장되며, 서버는 24시간마다 단기 키 쌍을 교체하도록 권장됨
  • DNSCrypt 프로토콜은 사전에 정의된 공개 키 집합만 허용하는 방식으로 접근 제어 또는 과금에도 사용할 수 있음
  • 상용 DNS 서비스는 IP 주소에 의존하지 않고 고객을 식별하는 데 이 기능을 사용할 수 있음
  • 질의와 응답은 같은 알고리즘으로 암호화되며, 패킷 크기 노출을 방지하기 위해 64바이트의 배수로 패딩됨
  • UDP에서 응답이 해당 질의보다 커지는 경우 서버는 TC(truncated) 비트를 설정한 짧은 패킷으로 응답할 수 있음
  • 클라이언트는 이후 TCP를 사용해 재시도하고, 다음 질의의 패딩을 늘려야 함
  • 프로토콜 버전 1·2는 다음 암호 기술을 사용함
  • 키 교환: X25519
  • 서명: EdDSA
  • 인증 암호화: XSalsa20-Poly1305 또는 XChaCha20-Poly1305
  • 2023년 기준 DNSCrypt 프로토콜의 알려진 취약점이나 기반 암호 구조에 대한 실용적 공격은 없음

Anonymized DNSCrypt

  • Anonymized DNSCrypt는 DNS 개인정보 보호를 더욱 개선하기 위해 2019년에 제안된 프로토콜 확장 기능임
  • 리졸버가 클라이언트에 직접 응답하는 대신 다른 리졸버의 투명 프록시로 동작해, 후자의 관점에서 실제 클라이언트 IP를 숨길 수 있음
  • Anonymized DNSCrypt는 DNS 트래픽을 위해 특별히 설계된 경량 방식이며, DNSCrypt를 Tor와 SOCKS 프록시를 통해 실행하는 방법의 대안임
  • Anonymized DNSCrypt 배포는 2019년 10월 시작됨
  • 클라이언트와 서버 구현이 공개된 지 2주 만에 40개 DNS 릴레이가 구축될 정도로 프로토콜 도입이 빠르게 진행됨

같이 보기

  • DNS over HTTPS
  • DNS over TLS
  • 도메인 이름 시스템 보안 확장(DNSSEC)
  • 타원 곡선 암호(Elliptic curve cryptography)
  • Curve25519
  • DNSCurve

참고 자료

  • John Biggs, “DNSCrypt Encrypts Your DNS Traffic Because There's Always Someone Out To Get You”, TechCrunch, 2011년 12월 6일
  • “DNSCrypt version 2 protocol specification (DNSCRYPT-V2-PROTOCOL.txt)”, GitHub/DNSCrypt — UDP 응답 길이는 항상 최초 클라이언트 질의 길이와 같거나 짧아야 함
  • “DNSCrypt - Implementations”, dnscrypt.info
  • “DNSCrypt/dnscrypt-proxy: dnscrypt-proxy 2 - A flexible DNS proxy, with support for encrypted DNS protocols”, GitHub, DNSCrypt — 원문은 2016년 1월 20일 보관됨, 2016년 1월 29일 확인됨
  • “Oblivious DoH · DNSCrypt/dnscrypt-proxy Wiki”, GitHub, DNSCrypt 프로젝트 — 2022년 7월 28일 확인됨
  • David Ulevitch, “DNSCrypt – Critical, fundamental, and about time”, Cisco Umbrella, 2011년 12월 6일 — 원문은 2020년 7월 1일 보관됨, 2020년 7월 1일 확인됨
  • “AdGuard DNS Now Supports DNSCrypt”, AdGuard Blog — 원문은 2017년 9월 12일 보관됨, 2017년 9월 11일 확인됨
  • “DNS filtering”, AdGuard Knowledgebase — 원문은 2017년 9월 11일 보관됨, 2017년 9월 11일 확인됨
  • “DNSCrypt Now in Testing”, Quad9 Blog, 2018년 8월 30일 — 원문은 2019년 12월 28일 보관됨, 2020년 7월 1일 확인됨
  • “DNSCrypt - List of public DoH and DNSCrypt servers”, DNSCrypt — 원문은 2020년 6월 19일 보관됨, 2020년 7월 1일 확인됨
  • “Anonymized DNSCrypt specification”, GitHub, DNSCrypt — 원문은 2019년 10월 25일 보관됨, 2020년 7월 1일 확인됨
  • “Anonymized DNS relays”, GitHub, DNSCrypt, 2019년 11월 1일 — 원문은 2020년 7월 1일 보관됨, 2020년 7월 1일 확인됨

외부 링크

  • Official website
  • DNSCrypt protocol specification
  • Anonymized DNSCrypt specification

인터넷 검열 우회 기술

  • 배경: 인터넷 검열, 중국의 인터넷 검열, 국가 인트라넷
  • 검열·차단 기술: IP 주소 차단, DNS 캐시 포이즈닝, 단어 필터, 중국의 만리방화벽
  • 특정 웹사이트 차단: Facebook, GitHub, Twitter, Wikipedia
  • 원칙 — 프록시 서버 사용: P2P, 웹 프록시, SSH, VPN, PAC
  • 원칙 — 프록시 서버 미사용: HTTPS, IPv6 전환 메커니즘, hosts, DNSCrypt, 도메인 프론팅, 굴절 네트워킹
  • 검열 방지 소프트웨어 — 자유 소프트웨어: Psiphon, Shadowsocks, OnionShare, Orbot, Outline VPN, GoAgent, PirateBox, VPN Gate, WireGuard
  • 검열 방지 소프트웨어 — 독점 소프트웨어: Lantern, Freegate, Ultrasurf, Hotspot Shield, Telex, Proxify, Shadowrocket
  • 브라우저 확장: Snowflake, uProxy
  • 익명 소프트웨어: Tor, JAP (JonDonym), Flash proxy, Mixmaster
  • 익명 P2P 네트워크: Hyphanet, I2P, StealthNet, Tribler, ZeroNet
  • 물리적 우회 방법: Sneakernet, USB dead drop
  • 관련 조직: GreatFire, FreeWeibo, NetBlocks, OONI, Turkey Blocks
  • 참고: Great Cannon
  • 기울임꼴 표시는 해당 도구의 유지 관리가 중단됐음을 의미함
  • 분류: Commons
  • 원문 URL: https://en.wikipedia.org/w/index.php?title=DNSCrypt&oldid=1332572255
  • 분류: 도메인 이름 시스템, 인터넷 프로토콜
  • 숨은 분류: 짧은 설명이 있는 문서, Wikidata와 일치하는 짧은 설명, 2020년 7월부터 일·월·년 날짜 사용, 출처가 없는 주장이 있는 모든 문서, 2020년 7월 출처가 없는 주장이 있는 문서