한국의 한글 국가도메인 .한국은 실제 DNS에서 xn--3e0b707e라는 이름으로 존재합니다 — 한글은 자음과 모음이 하나의 음절 블록으로 결합되는 문자 체계이기 때문에, 이 하나의 상표성 강한 두 글자짜리 도메인이 인코딩되면 꽤 긴 ASCII 문자열이 됩니다.
완성형 한글과 Punycode의 관계
유니코드는 한글 음절을 자음과 모음을 조합한 완성형 코드 포인트(U+AC00~U+D7A3)로 저장합니다. 즉 "한"이라는 한 글자도 이미 하나의 코드 포인트이며, Punycode는 이런 완성형 문자 하나하나의 코드 포인트와 위치 정보를 인코딩합니다 — 한글은 로마자처럼 풀어 쓰지 않기 때문에, 음절 수가 같아도 알파벳 기반 언어보다 인코딩 결과가 더 조밀합니다.
DNS를 UTF-8로 바꾸지 않은 이유
DNS 자체를 UTF-8을 기본으로 지원하도록 바꾸려면 전 세계 모든 네임서버를 동시에 업데이트해야 했을 것입니다. Punycode는 이 문제를 우회합니다 — 브라우저와 등록기관만 인코딩을 이해하면 되고, 그 아래의 DNS 인프라는 여전히 ASCII만 봅니다.
일반적인 사용 사례
- 이메일이나 링크에 나타난
xn--...문자열 뒤에 숨은 실제 도메인을 확인할 때. - 한글 도메인을 ASCII만 지원하는 DNS 패널에 등록하기 전에 Punycode 형식으로 변환할 때.
- 인증서나 이메일 주소의 IDN 관련 문제를 진단할 때.
호모글리프 공격은 한국 사용자에게도 위협이 된다
키릴 문자 "а"는 대부분의 서체에서 라틴 문자 "a"와 구별되지 않으며, 공격자는 이를 이용해 "аpple.com"처럼 Punycode로 고유한 xn-- 문자열이 되지만 겉보기엔 정상 브랜드처럼 보이는 도메인을 등록합니다. 한 레이블이 여러 알파벳을 의심스럽게 섞으면, 최신 브라우저는 디코딩하는 대신 원본 xn-- 형태를 그대로 표시합니다.