본문 바로가기

보안/study

푸니코드

 

❓푸니코드(Punycode)란 무엇인가?

웹은 전 세계 모든 사람들이 사용하는 글로벌 네트워크이다.
하지만 DNS 시스템은 기본적으로 영어 알파벳(a-z), 숫자(0-9), 하이픈(-) 만을 인식하도록 설계되어 있다.
그렇다면 한글, 일본어, 아랍어처럼 비영어권 문자는 어떻게 도메인 이름에 사용할 수 있을까?

이 문제를 해결하기 위해 등장한 것이 바로 푸니코드(Punycode)이다.


1. 푸니코드란?

푸니코드(Punycode)는
비ASCII 문자(한글, 한자, 키릴 문자 등)를 영어 알파벳과 숫자 조합으로 변환하는 방식이다.
이를 통해 기존 DNS 시스템을 변경하지 않고도 국제 도메인 이름(IDN, Internationalized Domain Name)을 지원할 수 있다.

정리하면,

"다국어 도메인 이름을 DNS가 이해할 수 있는 ASCII 형식으로 변환하는 기술" 이라고 할 수 있다.


2. 푸니코드 변환 예시

아래는 실제 한글 도메인이 푸니코드로 변환된 예시이다.

원래 도메인 변환된 도메인(푸니코드)

한글.com xn--bj0bj06e.com
  • 푸니코드로 변환된 도메인은 항상 xn-- 접두어로 시작한다.
  • xn-- 뒤에 오는 문자열은 비영어권 문자를 인코딩한 결과이다.

3. 푸니코드의 동작 방식

푸니코드는 다음과 같은 절차로 작동한다.

{1} 비ASCII 문자(예: 한글, 한자)를 찾아낸다.
{2} 이를 영어 알파벳과 숫자로만 구성된 문자열로 인코딩한다.
{3} 변환된 문자열 앞에 xn-- 접두어를 붙인다.
{4} 최종 결과를 DNS에 등록하거나 요청에 사용한다.

이 과정을 통해 한글 도메인도 브라우저나 서버가 정상적으로 인식하고 통신할 수 있게 된다.


4. 푸니코드와 보안 이슈

푸니코드를 이용한 도메인은 편리하지만,
IDN Homograph Attack(동형이의어 공격)이라는 보안 위협이 존재한다.

예를 들어,

  • apple.com처럼 보이는 도메인이
  • 실제로는 키릴 문자를 섞어 만든 аррle.com일 수 있다.

사용자는 육안으로 구분하기 어렵기 때문에, 이를 악용한 피싱 사이트에 노출될 수 있다.
브라우저에서는 이런 위험을 방지하기 위해 푸니코드 도메인 표시를 제한하거나 경고를 제공하는 경우가 많다.


5. 결론

푸니코드는 전 세계 다양한 언어를 사용하는 인터넷 사용자들에게
자국어로 도메인을 만들고 사용할 수 있게 해주는 핵심 기술이다.

하지만 동시에,
IDN을 이용한 보안 위협에도 주의해야 한다.
따라서 푸니코드를 이해하고, 도메인 표기 방식을 주의 깊게 검토하는 습관이 필요하다.

인터넷은 더 넓어졌지만, 보안은 더욱 세심해져야 한다.

 

'보안 > study' 카테고리의 다른 글

포트 스캔 공격 정리 및 공격툴(nmap,ncat,hping3)  (0) 2021.05.15
Snort  (0) 2021.05.11
r 계열 명령어 (rhost, rlogin, rsh, rmd)  (0) 2021.01.22
파일 무결성 검사  (0) 2020.01.19
SSL/TLS 통신과정 정리  (0) 2019.12.11