한글.com 같은 도메인을 브라우저 주소창이나 이메일 헤더에서 xn--으로 시작하는 이상한 문자열로 본 적 있을 겁니다. 이게 뭔지, 왜 필요한지 정리했습니다.
Punycode란 무엇인가
도메인 시스템(DNS)은 원래 ASCII 문자만 지원합니다. 한글·중국어·아랍어 등 유니코드 문자를 담은 국제화 도메인(IDN)을 DNS가 처리할 수 있는 ASCII로 안전하게 변환하기 위해 고안된 인코딩이 Punycode입니다. 예를 들어 "한글.com"은 "xn--bj0bj06e.com"으로 변환됩니다.
왜 xn--으로 시작할까
xn--는 ACE(ASCII Compatible Encoding) 접두사로, 이 뒤에 오는 문자열이 Punycode로 인코딩된 유니코드 도메인임을 나타내는 표준 접두사입니다(RFC 3492). 브라우저는 이 접두사를 보고 실제 화면에는 다시 원래 언어로 디코딩해서 보여줍니다.
실무에서 마주치는 상황
이메일 헤더에 낯선 xn-- 도메인이 찍혀있을 때 발신지 확인, 국제화 도메인을 nginx 같은 서버 설정 파일에 등록할 때 ASCII 형태가 필요할 때, SSL 인증서를 발급받을 때 CN(Common Name)에 Punycode 형태가 쓰일 때 등에서 마주치게 됩니다.
피싱 사이트 구분에 활용하기
유니코드 문자 중에는 라틴 알파벳과 시각적으로 거의 동일한 문자(키릴 문자 등)가 있어, 이를 악용한 "IDN 호모그래프 공격"으로 가짜 도메인을 만들 수 있습니다(예: 키릴 문자 'а'를 쓴 가짜 "аpple.com"). 의심스러운 도메인은 Punycode로 변환해 실제 문자 구성을 확인하면 정상 도메인인지 판단하는 데 도움이 됩니다.
🔤 이 작업, 도구로 바로 해보세요
Punycode란? 한글 도메인이 xn--으로 보이는 이유 — 국제화 도메인(IDN)을 ASCII로 안전하게 표현하는 인코딩 방식.