Posted
Filed under etc
[원문] - http://sdj.kr/g4/bbs/board.php?bo_table=i_web&wr_id=18


퓨니코드 확인 ( http://domain.blueweb.co.kr/pop_puny.html )

ex) 공사포털.com -> xn--ob0bx78arxl45c.com
      공사포탈.com -> xn--ob0bx78ad7lcrc

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


이 과정은 ASCII 문자 집합으로 표시할 수 없는 도메인 이름의 각 부분마다 따로 일어나고

, 변환된 퓨니코드 문자열에는 예약된 접두어 xn--이 덧붙는다.
 
예를 들어서 "wiki백과"는 퓨니코드로 wiki-ei4p334e가 되고,

따라서 "wiki백과.kr" 도메인은 IDNA에서 xn--wiki-ei4p334e.kr이 된다.



 구조

퓨니코드는 ASCII 문자 집합에 포함되는 문자만 문자열에 남긴 후에,
 
일반화된 가변 길이 기수법을 사용하여 ASCII에 포함되지 않는 문자들이
 
원래 문자열에 어떻게 삽입될 지를 부호화한다.

이 부호화 과정에서는 코드 포인트가 델타 인코딩으로 저장되기 때문에
 
삽입될 문자들이 비슷한 코드 포인트를 사용할 경우 짧은 길이로 부호화될 수 있다.



 퓨니코드를 사용한 피싱

퓨니코드를 사용하면 도메인 이름에 모든 유니코드 문자를 쓸 수 있기 때문에,
 
IDNA를 사용하여 피싱 공격을 할 수 있다.
 
예를 들어 "wikipedia.org"라는 도메인을 스푸핑하기 위해서
 
"wikipеdiа.org"(IDNA에서 xn--wikipdi-8fg6b.org) 도메인을 사용할 수 있다.

굵게 표시한 키릴 문자는 보통 로마자와 비슷하거나 같게 보이기 때문에
 
사용자가 같은 도메인이라 인식할 가능성이 높아진다.

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

단 ISO 8859-1에 있는 문자들은 섞여 쓰여도 이 취약점을 쓸 수 있는 가능성이 적기 때문에,
 
명시적으로 허용하지 않아도 유니코드 이름으로 표시된다.
 

사파리도 보안 업데이트 2005-003 이후로 특히 피싱에 잘 사용되는

그리스 문자, 키릴 문자, 체로키어가 들어 있는 도메인을 이와 비슷한
 
방법으로 표시하는 방법을 사용하고 있다.

2010/12/13 14:49 2010/12/13 14:49