퓨니코드

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
유니코드
부호화 형식
UCS
양방향 텍스트
BOM
한중일 통합 한자
유니코드 범위 목록
유니코드 정규화
유니코드와 HTML
유니코드와 전자 우편
유니코드 글꼴
v  d  e  h

퓨니코드(Punycode)는 유니코드 문자열을 호스트 이름에서 허용된 문자만으로 인코딩하는 방법으로, RFC 3492에 기술되어 있다. 퓨니코드는 유니코드가 지원하는 모든 언어로 국제화 도메인을 쓸 수 있게 한 IDNA의 일부로, 변환은 전적으로 웹 브라우저와 같은 클라이언트에서 이루어진다.

이 과정은 ASCII 문자 집합으로 표시할 수 없는 도메인 이름의 각 부분마다 따로 일어나고, 변환된 퓨니코드 문자열에는 예약된 접두어 xn--이 덧붙는다. 예를 들어서 "wiki백과"는 퓨니코드로 wiki-ei4p334e가 되고 ".한국"은 3e0b707e가 된다. 따라서 "wiki백과.한국" 도메인은 IDNA에서 xn--wiki-ei4p334e.xn--3e0b707e이 된다.

구조[편집]

퓨니코드는 ASCII 문자 집합에 포함되는 문자만 문자열에 남긴 후에, 일반화된 가변 길이 기수법을 사용하여 ASCII에 포함되지 않는 문자들이 원래 문자열에 어떻게 삽입될지를 부호화한다. 이 부호화 과정에서는 코드 포인트가 델타 인코딩으로 저장되기 때문에 삽입될 문자들이 비슷한 코드 포인트를 사용할 경우 짧은 길이로 부호화될 수 있다.

퓨니코드를 사용한 피싱[편집]

퓨니코드를 사용하면 도메인 이름에 모든 유니코드 문자를 쓸 수 있기 때문에, IDNA를 사용하여 피싱 공격을 할 수 있다. 예를 들어 "wikipedia.org"라는 도메인을 스푸핑하기 위해서 "wikipеdiа.org"(IDNA에서 xn--wikipdi-8fg6b.org) 도메인을 사용할 수 있다. 굵게 표시한 키릴 문자는 보통 로마자와 비슷하거나 같게 보이기 때문에 사용자가 같은 도메인이라 인식할 가능성이 높아진다.

사파리, 파이어폭스, 오페라 웹 브라우저는 이 문제를 해결하기 위해 국제화된 웹사이트에 접속하는 것을 제한하는 대신, 신뢰할 수 있는 도메인만 원래 의도된 유니코드 이름으로 보여 주고 그렇지 않은 도메인은 "xn--"으로 시작하는 퓨니코드 이름으로 보여 주는 방법을 쓴다. 단 ISO 8859-1에 있는 문자들은 섞여 쓰여도 이 취약점을 쓸 수 있는 가능성이 적기 때문에, 명시적으로 허용하지 않아도 유니코드 이름으로 표시된다. 사파리도 보안 업데이트 2005-003 이후로 특히 피싱에 잘 사용되는 그리스 문자, 키릴 문자, 체로키어가 들어 있는 도메인을 이와 비슷한 방법으로 표시하는 방법을 사용하고 있다.

외부 링크[편집]