한글 도메인 주소가 DNS에 등록 & 처리되는 과정

2022. 1. 6. 08:20Front

Result

전세계의 다국어 도메인은 퓨니코드로 변경되어 등록과 처리가 진행된다.

인터넷 사용자가 입력한 다국어 도메인은 클라이언트 측에서 아스키 기반의 퓨니코드로 변환되 네임서버로 전송된다.

 

과정

  1. 주소창에 다국어 도메인이 입력된다  (ex. 청와대.com)
  2. 클라이언트(브라우저)측에서 퓨니 코드로 변환한다  ( ex. xn--vk1b187a8ue.com )
  3. DNS의 네임 서버로 전송되 IP 주소를 찾아 접속하게 된다

* 네임 서버는 퓨니코드 형태의 영역 데이터를 운영한다 .

 


1) 국제화 도메인 네임 ( IDN _ Internationalized Domain Name )

인터넷 상에서 호스트의 주소를 나타내는 도메인 네임은 기본적으로 라틴 문자, 숫자, ( _ )언더바 등으로 구성되어있다.

여기서 말하는 다국어 도메인(IDN)은 라틴자를 제외한 그리스 문자, 키릴 문자, 한글, 한자, 히라가나 / 가타카나, 아랍 문자 등이 포함되는 것을 의미한다.

전세계의 다국어 도메인은 퓨니코드로 변경되어 등록과 처리가 진행되며,

굵게 표시한 키릴 문자(Д -> A, Ч, У -> Y 등)는 보통 로마자와 비슷하거나 같게 보이기 때문에

사용자가 같은 도메인이라 인식할 가능성이 높아진다.

 

IDN 동형 이의어 공격 ( IDN homograph attack )

 

사용자를 속이기 위해 확립 된 도메인과 유사한 이름을 사용한는 것을 의미한다.

그리스 문자 & 키릴 문자 등이 피싱에 자주 사용된다.

 

예시 : example.com 의 라틴어 문자 "a"는 키릴 문자

 

1. 타이포 스쿼팅 : 가해자는 수동으로 입력 할 때 일반적으로 발생하는 자연스러운 오타에 의존하여 피해자를 유인

2. 동음 이의어 스푸핑 : 가해자는 시각적으로 구별 할 수없는 표현으로 피해자를 속인다

 

웹 브라우저는 이 문제를 해결하기 위해 국제화된 웹사이트에 접속할 때, 신뢰할 수 있는 도메인만 원래 의도된 유니코드 이름으로 보여 주고 그렇지 않은 도메인은 "xn--"으로 시작하는 퓨니코드 이름으로 보여 주는 방법을 사용한다.

  • 구글 크롬 or 오페라 등의 브라우저는 모든 문자가 사용자가 선호하는 언어 중 하나에 속할 경우에만 IDN을 표시
  • Safari의 경우 접근 방식은 문제가있는 문자 집합을 퓨니코드로 렌더링하고
  • Internet Explorer 버전 7 이상에서는 다른 언어의 스크립트를 혼합하는 레이블을 제외하고 IDN을 허용한다. 스크립트를 혼합하는 레이블은 퓨니코드에 표시한다.

 

 


 

2) 국제화 최상위 도메인 ( IDN TLD )

기존 도메인(특히 .com 과 .net)이 포화 상태였기 때문에, .info .biz 같은 신규 최상위 도메인을 생성하다가 최상위 도메인 생성 제한 자체를 풀게 되었다.

그렇게 풀린 제한은 로마자 문자, 한글, 한자, 히나가라, 그리스 문자, 아랍 문자 등 유니코드가 지원하는 세계 각종 문자로 도메인을 만들 수 있도록 개선되었다.

 

ex ) namu.wiki 또한 최상위 도메인으로 .wiki 가 풀리면서 사용가능하게 된 이유

ex ) 청화대.한국 https://xn--vk1b187a8ue.xn--3e0b707e

 


 

✓ 퓨니 코드(Punycode)는 무엇일까

  • 문자열이 아스키로 변환된 구문

  • 한글 뿐 아닌 세계 각국의 자국어로 도메인을 처리할 수 있게 만들어진 표준 코드

  • 접두어(xn--)로 시작하는 영숫자 혼합 문자열로 변환된다

  • 국제표준의 지원 코딩 방식으로 개발 채택

  • 퓨니코드로의 변환은 브라우저(클라이언트) 측에서 이루어진다
 

 


 

✓ 아스키 코드 (ASCII) 란?

  • 정보 교환용 7비트 부호체계

  • 000(0x00) ~ 127(0x7F)까지 총 128개의 부호를 사용

  • 1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정 & 나머지 1비트는 통신 에러 검출 용도로 비어둔다

    더보기
    아스키 코드표 (ASCII Codes)
    • 컴퓨터는 이진수만 알고 입력한 문자를 출력할 수 있도록 문자 코드가 존재한다.

    • 그런 문자코드와 숫자를 매칭시킨 대표적인 표가 아스키 코드표다.

    • ASCII의 A는 American을 뜻하며 영어권 국가를 위해서 만들어져 초창기에는 문자 코드는 ASCII의 로마자 위주 코드였다

    • 한글이나 중국어 등을 표현하기에 아스키 코드가 표현할 수 있는 문자가 제한적이였다.

    • 1바이트의 남은 공간에 각 나라가 자국 문자를 할당하였지만 깨짐 현장이 발생했다. 

    • 이에 따라 모든 언어를 표현할 수 있는 문자표가 필요하다고 판단되었고

    • 2~3바이트의 넉넉한 공간에 세상의 모든 문자를 할당한 결과물인 유니코드가 생겨났다.
     
 

 

✓ 그래서 유니 코드는 무엇일까?

전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식으로 국제 표준 문자표이다

  • 유니코드는 지구상에서 통용되는 대부분의 문자들을 담고 있다.

  • 각 언어와 문자 체계에 따른 충돌 문제를 해결한다

  • 저장 효율을 위해 언어에 따라 1~4byte를 사용해 문자를 표현하는 가변 길이 인코딩 방식을 사용

더보기
  • 유니 코드에는 악보 기호, 이모지, 태그, 마작이나 도미노 기호 등도 포함되며, 나열된 유니코드에 대해 읽어올 단위에 대한 혼란이 발생해 다양한 인코딩 방식이 존재한다.

  • UCS, UTF(Unicode Transform Format) 등의 인코딩 방식, 문자 처리 알고리즘 등
    • UTF-8은 8비트(1byte) 단위로 유니코드를 인코딩하는 방식을 의미

    • 유니코드의 시작 바이트를 확인하여 몇 바이트를 읽어올 것인지를 결정한다.
  • 인코딩은 몇 바이트를 읽을 것인지에 대한 약속이기 때문에 인코딩이 서로 다르면 문자가 깨져서 표시된다. 
    • EUC-CN ↔ EUC-KR/MS949 예시 ( 法拉利赛车 ↔ 랬윗적힙났 / 七彩龙[8] ↔ 폄꽈질 )

 


 

큰 도움이 되었습니다 🎈

 

✓ https://zigispace.net/598

✓ https://ko.wikipedia.org/wiki/%ED%93%A8%EB%8B%88%EC%BD%94%EB%93%9C

 http://xn--910bx01e.net/%ED%93%A8%EB%8B%88%EC%BD%94%EB%93%9C-punycode-%EC%9D%98-%EC%97%AD%ED%95%A0/

✓ https://namu.wiki/w/%EA%B5%AD%EC%A0%9C%ED%99%94%20%EB%8F%84%EB%A9%94%EC%9D%B8%20%EB%84%A4%EC%9E%84?from=IDN

✓ https://sweetday-alice.tistory.com/179

https://ko.wikitrev.com/wiki/IDN_homograph_attack