정의
호모글리프(英: homoglyph)는 시각적으로 서로 거의 동일하거나 매우 유사하게 보이는 문자·기호·그림자를 의미한다. 외관은 동일하지만 실제로는 서로 다른 유니코드 코드 포인트 혹은 다른 문자 체계에 속한다. 예컨대 라틴 알파벳 대문자 “O”(U+004F)와 숫자 “0”(U+0030), 혹은 라틴 알파벳 소문자 “a”(U+0061)와 키릴 문자 “а”(U+0430) 등이 호모글리프에 해당한다.
어원
homos(그리스어, ‘같은’)와 glyph(그리스어 glyphein, ‘새기다’에서 파생)라는 두 어근의 결합으로, ‘같은 형태를 가진 문자’라는 의미를 갖는다. 영어 단어 “homoglyph”가 그대로 한국어로 음역·전사된 형태가 “호모글리프”이다.
주요 사용·관계 분야
| 분야 | 내용 |
|---|---|
| 타이포그래피·디자인 | 문자 모양이 유사해 눈에 띄지 않는 오류를 방지하기 위해 폰트 디자인 시 구분이 쉽도록 차별화한다. |
| 컴퓨터 보안 | 피싱 공격 등에서 호모글리프를 이용해 사용자를 속인다. 예를 들어 악성 사이트 주소에 라틴 “a” 대신 키릴 “а”를 사용하면 눈에 보이는 URL은 동일하지만 실제 도메인은 다르다. |
| 국제화·유니코드 | Unicode 표준은 호모글리프 충돌을 최소화하기 위해 새로운 문자에 고유 코드를 할당하고, 혼동을 일으키는 문자쌍에 대한 경고를 제공한다. |
| 검색·텍스트 처리 | 문자열 정규화(NFKC, NFKD 등)를 통해 호모글리프로 인한 중복을 제거하거나 일관된 형태로 변환한다. |
예시
- 라틴 ‘A’(U+0041)와 키릴 ‘А’(U+0410) – 형태는 동일하지만 코드값이 다름.
- 라틴 소문자 ‘l’(U+006C)와 숫자 ‘1’(U+0031) – 특히 작은 글꼴에서 구분이 어려움.
- ‘Ω’(그리스 문자 오메가, U+03A9)와 ‘Ω’(오메가 심볼, U+2126) – 시각적으로 동일하지만 의미와 코드가 다름.
보안·사용상의 권고
- 도메인 이름 등록 시 국제화 도메인(IDN) 표준을 따르고, 브라우저에서 제공하는 IDN 표시 정책을 확인한다.
- 소스 코딩·텍스트 입력 시 문자 정규화와 코드 포인트 검증을 수행한다.
- 폰트 디자인 시 시각적 차별성을 높이는 대체 문자 형태(예: ‘O’에 얇은 가로선 추가)를 고려한다.
관련 용어
- Homograph: 철자·발음이 동일하지만 의미가 다른 단어.
- Glyph: 글자·기호의 시각적 형태.
- Unicode Normalization: 문자 시퀀스를 표준 형태로 변환하는 절차.
참고
- Unicode Consortium, “Unicode Standard”, 최신 버전.
- OWASP, “Homoglyph Attack”.
(위 내용은 현재 공개된 백과사전·학술 자료와 보안 가이드라인을 근거로 작성되었으며, 별도의 추정이나 미확인 정보는 포함하지 않았다.)