맨위로가기

호모글리프

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

호모글리프는 모양이 비슷하여 구별하기 어려운 문자를 의미한다. 이러한 문자는 숫자 0과 대문자 O, 숫자 1과 소문자 l, 대문자 I처럼 여러 종류가 있으며, 초기 타자기에서는 구분이 어려웠다. 현재는 글꼴 디자인을 통해 구별하려는 시도가 이루어지고 있으며, 유니코드에서는 이러한 문자에 대한 코드 포인트를 별도로 할당한다. 호모글리프는 도메인 이름 스푸핑과 같은 보안 문제를 야기할 수 있으며, 이를 방지하기 위해 사용자는 URL을 주의 깊게 확인하고, 보안 솔루션 및 도메인 등록 정책을 활용해야 한다.

2. 용어

동음이의어라는 용어는 때때로 동형 문자와 동의어로 오용되기도 하지만, 일반적인 언어학적 의미에서 동음이의어는 철자는 같지만 의미가 다른 단어이며, 이는 문자가 아닌 단어의 속성이다.

이형 문자는 모양은 다르지만 같은 의미를 갖는 글꼴 디자인 변형을 의미한다. 예를 들어 세리프체의 g와 산세리프체의 g, 또는 한두 줄로 된 달러 기호가 있다. '''동형 기호'''라는 용어는 이와 비슷하지만 약간 더 추상적인 의미를 갖는다. 예를 들어 기호 £와 문자 L (Lsd에서)은 둘 다 파운드 스털링을 의미하지만,[2] 해당 문맥에서만 의미가 통한다. 이형 문자와 동형 기호는 비공식적으로 "디스플레이 변형"이라고도 한다.

3. 주요 호모글리프

키릴 문자로마자는 A, B, C, E, I, J, K, M, H, O, P, C, T, Y (А, В, C, E, І, Ј, К, М, Н, О, Р, С, Т, Ү) 등 많은 글자 모양이 서로 같거나 거의 비슷하지만, 유니코드에서는 서로 다른 문자로 취급된다.[1] 터키어의 점이 있는 I (İ)나 Í (I에 ´가 추가된 것)와 같이 로마자에서도 몇몇 글자들은 거의 같은 형태를 띤다. j와 에스페란토의 글자 ĵ, 로마자 Ȉ와 Ï, 로마자 ÖÕ 등도 동일한 문자 체계에 속하지만, 분명히 다른 글자이며, 거의 비슷하게 보인다.

오늘날 흔히 사용되는 중요한 호모글리프 쌍은 숫자 0(영)과 대문자 O(오), 그리고 숫자 1(일)과 소문자 l(엘), 대문자 I(아이)이다. 초기 기계식 타자기 시절에는 이러한 글리프들 사이에 시각적 차이가 거의 없어서, 타이피스트들은 키보드 단축키로 이들을 서로 바꿔 사용했다. 실제로 대부분의 키보드에는 숫자 "1" 키가 없었고, 사용자는 대신 소문자 "l"을 입력해야 했다. 일부 키보드에서는 숫자 "0"도 생략되어 "O"를 대신 입력했다. 1970년대와 1980년대에 타자기 사용자였던 사람들이 컴퓨터 키보드 조작자로 전환되면서, 이러한 습관이 이어져 때때로 혼란을 야기했다.[4]

리터의 기호는 단위 명칭이 인명에서 유래하지 않았기 때문에 원래 소문자 l (엘)로 표기했지만, 숫자 1과 비슷하여 혼동을 일으킬 수 있으므로 대문자 L로 표기하는 것이 권장된다.

대부분의 현대 글꼴 디자인은 이러한 호모글리프를 신중하게 구별한다. 일반적으로 숫자 "0"은 더 좁게 그리고, 숫자 "1"은 눈에 띄는 세리프를 넣어 그린다. 초기 컴퓨터 인쇄물은 "0"에 슬래시나 점을 추가하여 구분했는데, 이는 스칸디나비아어 문자 "Ø" 및 그리스 문자 Φ(phi)와의 새로운 혼동을 야기했다. 이러한 문자를 구별하기 위한 글꼴 재설계는 혼란을 줄이는 데 도움이 되었다. 두 개의 서로 다른 문자가 주어진 관찰자에게 동일하게 보이는 정도를 "시각적 유사성"이라고 한다.[4]

3. 1. 로마자와 키릴 문자

키릴 문자로마자는 A, B, C, E, I, J, K, M, H, O, P, C, T, Y (А, В, C, E, І, Ј, К, М, Н, О, Р, С, Т, Ү) 등 많은 글자 모양이 서로 같거나 거의 비슷하다. 하지만 유니코드에서는 서로 다른 문자로 취급된다.[1]

유럽에서 널리 쓰이는 세 가지 문자(그리스 문자, 키릴 문자, 라틴 문자)는 많은 글자 형태를 공유하지만, 유니코드에서는 별도의 코드 포인트로 인코딩되어 있다.


터키어의 점이 있는 I (İ)나 Í (I에 ´가 추가된 것)와 같이 로마자에서도 몇몇 글자들은 거의 같은 형태를 띤다.

  • j와 에스페란토의 글자 ĵ, 로마자 Ȉ와 Ï, 로마자 ÖÕ 등도 동일한 문자 체계에 속하지만, 분명히 다른 글자이며, 거의 비슷하게 보인다.

3. 2. 숫자와 알파벳

오늘날 흔히 사용되는 중요한 호모글리프 쌍은 숫자 0(영)과 대문자 O(오), 그리고 숫자 1(일)과 소문자 l(엘), 대문자 I(아이)이다. 초기 기계식 타자기 시절에는 이러한 글리프들 사이에 시각적 차이가 거의 없어서, 타이피스트들은 키보드 단축키로 이들을 서로 바꿔 사용했다. 실제로 대부분의 키보드에는 숫자 "1" 키가 없었고, 사용자는 대신 소문자 "l"을 입력해야 했다. 일부 키보드에서는 숫자 "0"도 생략되어 "O"를 대신 입력했다. 1970년대와 1980년대에 타자기 사용자였던 사람들이 컴퓨터 키보드 조작자로 전환되면서, 이러한 습관이 이어져 때때로 혼란을 야기했다.[4]

리터의 기호는 단위 명칭이 인명에서 유래하지 않았기 때문에 원래 소문자 l (엘)로 표기했지만, 숫자 1과 비슷하여 혼동을 일으킬 수 있으므로 대문자 L로 표기하는 것이 권장된다.

대부분의 현대 글꼴 디자인은 이러한 호모글리프를 신중하게 구별한다. 일반적으로 숫자 "0"은 더 좁게 그리고, 숫자 "1"은 눈에 띄는 세리프를 넣어 그린다. 초기 컴퓨터 인쇄물은 "0"에 슬래시나 점을 추가하여 구분했는데, 이는 스칸디나비아어 문자 "Ø" 및 그리스 문자 Φ(phi)와의 새로운 혼동을 야기했다. 이러한 문자를 구별하기 위한 글꼴 재설계는 혼란을 줄이는 데 도움이 되었다. 두 개의 서로 다른 문자가 주어진 관찰자에게 동일하게 보이는 정도를 "시각적 유사성"이라고 한다.[4]

3. 3. 특수 문자와 알파벳


  • 가운뎃점(·)은 아래아(ㆍ)와 반각, 전각 여부를 제외하면 거의 같다.
  • 논리합 기호(∨)는 V와 전각, 반각 여부를 제외하면 거의 같다.
  • 는 Ʃ의 소문자인 ʃ이나 ſ와 거의 같다.

키릴 문자 С는 로마자 C와 모양이 거의 같아 혼동을 일으킬 수 있다.

3. 4. 여러 글자로 이루어진 호모글리프

rri, rn, nn은 m과 같이 보이기도 한다. 그리고 ci는 a, cl은 d, lc는 k, vv는 w처럼 보이기도 한다.[1]

글꼴 Arial, Calibri, Times New Roman, Cambria, Walbaum-Fraktur, Comic Sans에서 문자 m과 r+n


묘비명에 새겨진 '''''St'''efan Szczotkowski''는 '''''A'''effan Szczotkowski''처럼 보인다.


다른 몇몇 문자 조합도 비슷하게 보이는데, 예를 들어 '''rn'''은 '''m'''과, '''cl'''은 '''d'''와, '''vv'''는 '''w'''와 비슷하게 보인다.[1]

특정 좁은 간격의 글꼴(예: Tahoma)에서 문자 '''c'''를 j, l 또는 i와 같은 문자 옆에 배치하면 cj cl ci (g d a)와 같은 호모글리프가 생성된다.[1]

일부 문자가 서로 옆에 배치되면, 한 눈에 보기에 서로 관련 없는 다른 문자의 시각적 인상을 준다. 이를 더 정확하게 표현하면 일부 합자가 독립형 글리프와 유사하게 보일 수 있다는 것이다. 예를 들어, fi 합자(fi)는 일부 글꼴에서 A와 비슷하게 보일 수 있다. 이러한 혼동 가능성은 때때로 합자 사용에 반대하는 주장의 근거가 된다.[1]

4. 움라우트와 트레마

초창기 기계식 타자기 시대에는 움라우트트레마가 (백스페이스와 덮어쓰기 기술을 사용하여) 동일한 키로 입력되었으며, 이는 이중 작은따옴표에도 사용되었다.[1] 그러나 움라우트는 원래 두 개의 짧은 수직선(두 개의 점이 아님)으로 시작되었다(주터린체 참조).[1] 덧붙여, 알바니아어에서 문자 E 위에 있는 두 개의 점은 분음 기호로 묘사되지만, 분음 기호의 기능을 수행하지는 않는다.[1]

5. 일본어에서의 호모글리프

일본어에서는 한자·가타카나 간 및 각 문자 종류 내에 여러 호모글리프가 존재한다. 예를 들어, JPRS가 호모그래프 공격과 관련하여 제출한 의견서에서는 다음과 같은 예시가 언급되었다[13]

가타카나한자설명
가타카나 "카"와 한자 "力(힘 력)"
가타카나 "오"와 한자 "才(재주 재)"
가타카나 "로"와 한자 "口(입 구)"
가타카나 "하"와 한자 "八(여덟 팔)"
가타카나 "토"와 한자 "卜(점 복)"
가타카나 "에"와 한자 "工(장인 공)"
가타카나 "니"와 한자 "二(두 이)"



마지막 행에서 가타카나 "エ"(에)는 한자 "工"(공)과 호모글리프 관계이며, 가타카나 "ニ"(니)는 한자 "二"(두 이)와 호모글리프 관계이다.

6. 유니코드와 호모글리프

유니코드는 "혼동 가능한 문자"라고 알려진 많은 호모글리프 문자에 대한 코드 포인트를 가지고 있다.[1] 예를 들어, 많은 글꼴에서 그리스 문자 'Α', 키릴 문자 'А' 및 라틴 문자 'A'는 시각적으로 동일하며, 라틴 문자 'a'와 키릴 문자 'а'도 마찬가지이다. 이는 다양한 상황에서 보안 위험을 나타내며, 국제화 도메인 이름(IDN)과 관련하여 특별한 주의를 기울였다.[8]

이론적으로 문자를 호모글리프로 대체하여 도메인 이름을 의도적으로 스푸핑할 수 있다. 따라서 첫 번째 도메인 이름과 쉽게 구별할 수 없는 두 번째 도메인 이름을 생성하여 피싱에 악용할 수 있다(''IDN 동음이의어 공격'' 참조). 예를 들어 'í'(급성 악센트)와 'i'(점), É(E-acute)와 Ė(E dot above), È(E-grave), Í(대문자 I에 급성 악센트)와 ĺ(소문자 L에 급성 악센트)와 같이 동일한 스크립트 내에도 많은 유사 호모글리프가 있다. 중국어에서는 많은 중국어 간체자가 해당 중국어 번체자의 호모글리프이다.

호모글리프 혼동의 위험을 최소화하기 위해 TLD 등록소 및 웹 브라우저 설계자는 노력을 기울이고 있다. 일반적으로 여러 언어의 문자 집합을 혼합한 이름을 금지함으로써 이를 달성한다(toys-Я-us.org에서 Я 키릴 문자를 사용하면 유효하지 않지만, wíkipedia.org와 wikipedia.org는 여전히 다른 웹사이트로 존재한다). 캐나다의 .ca 등록소는 한 단계 더 나아가 분음 부호만 다른 이름을 동일한 소유자와 동일한 등록 기관을 갖도록 요구한다.[9] 중국어 문자의 처리는 다양하다. .org.info에서는 한 변형을 등록하면 다른 변형은 다른 사람에게 사용할 수 없게 되지만, .biz에서는 동일한 이름의 번체와 간체 버전을 동일한 도메인 네임 서버를 가리키는 두 개의 도메인 번들로 제공한다.

관련 문서는 개발자 웹사이트와 ICANN에서 제공하는 IDN 포럼[10]에서 찾을 수 있다.

7. 정규화

다양한 종류의 동형 문자는 '이중 정규화'라는 과정을 통해 탐지할 수 있다.[4] 이중 정규화의 첫 단계는 관찰자에게 동일하게 보이는 문자, 즉 동형 문자 집합을 식별하는 것이다. 여기서 동형 문자 집합을 나타내는 단일 토큰이 지정되는데, 이 토큰을 캐논이라고 한다. 다음 단계는 정규화 과정을 통해 텍스트의 각 문자를 해당 캐논으로 변환하는 것이다. 두 텍스트의 캐논이 같지만 원래 텍스트가 다르면, 텍스트에 동형 문자가 존재하는 것이다.[12]

8. 호모글리프 방지

사용자가 호모글리프 공격과 관련된 위험을 인지하도록 교육하여 URL을 클릭하기 전에 꼼꼼히 검사하도록 권장하는 것이 중요하다.[7] 특히 도메인 이름에서 호모글리프 변형을 검색할 수 있는 고급 보안 솔루션을 사용하면 잠재적 위협을 자동 감지하고 예방할 수 있다. 또한, 엄격한 도메인 이름 모니터링 및 등록 정책을 구현하면 호모글리프 관련 위험을 신속하게 식별하고 무력화하는 데 도움이 될 수 있다.

도메인 이름 레지스트리웹 브라우저 설계에 호모글리프 혼동의 위험을 최소화하기 위한 노력이 기울여지고 있다. 일반적으로, 이는 여러 언어의 문자 집합을 혼합한 이름을 금지함으로써 달성된다. 캐나다.ca 레지스트리는 한 걸음 더 나아가, 분음 부호가 다른 도메인 이름은 동일한 소유자가 동일한 레지스트라에 등록해야 한다는 규정을 두고 있다.[14] 한자에서의 간체자와 번체자의 취급은 다양하다. .org.info에서는 한쪽을 등록하면 다른 쪽은 아무도 사용할 수 없지만, .biz에서는 간체자와 번체자 두 종류의 도메인을 도메인 번들로 처리하여 둘 다 같은 DNS 서버를 가리키도록 한다.

참조

[1] 웹사이트 UTR #36: Unicode Security Considerations https://www.unicode.[...]
[2] 웹사이트 A writer's guide to diacritics and special characters https://www.textwiza[...] 2020-10-07
[3] 문서
[4] 학회자료 2012 e Crime Researchers Summit
[5] 문서
[6] 서적 The Routledge Handbook of the English Writing System Taylor & Francis 2024-01-24
[7] 웹사이트 https://governance.d[...] 2024-02-12
[8] 웹사이트 UTR #36: Unicode Security Considerations http://unicode.org/r[...]
[9] 웹사이트 Register a .CA in French! http://www.cira.ca/w[...] 2013-03-29
[10] 웹사이트 ICANN Email Archives: [idn-guidelines] http://forum.icann.o[...]
[11] 웹사이트 UTR #36: Unicode Security Considerations https://www.unicode.[...] 2020-05-10
[12] 학회자료 Dual canonicalization: An answer to the homograph attack
[13] 웹사이트 JPRSがICANNに対し、「リファレンス用セカンドレベルに対する日本語ラベル生成ルール」に関する意見書を提出 https://jprs.co.jp/t[...] JPRS 2017-06-16
[14] 웹사이트 Archived copy http://www.cira.ca/w[...] 2013-03-29
[15] 웹사이트 ICANN Email Archives: [idn-guidelines] http://forum.icann.o[...] 2020-05-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com