눈으로는 같아 보이는데 컴퓨터는 다르다고 하는 문자들
개발하다 보면 한 번쯤은 겪어봤을 거예요. 코드가 분명 맞는데 동작하지 않아서 한참을 디버깅했더니, 알고 보니 변수명에 들어간 문자가 영어 'a'가 아니라 키릴 문자 'а'였던 거죠. 사람 눈에는 완전히 똑같이 보이는데 컴퓨터는 전혀 다른 문자로 인식해요. 이런 걸 호모글리프(homoglyph) 라고 부르는데요, 유니코드에는 이런 시각적으로 유사한 문자 쌍이 수천 개나 있어요.
'Charcuterie'는 이 문제를 정면으로 다루는 웹 기반 도구예요. 유니코드 문자를 입력하면 시각적으로 비슷하게 생긴 다른 문자들을 찾아주고, 각 문자의 코드포인트와 소속 스크립트까지 한눈에 보여줘요.
이게 왜 보안 문제가 되냐면
호모글리프가 단순히 코딩할 때 불편한 정도로 끝나면 좋겠지만, 실제로는 심각한 보안 위협이 될 수 있어요. 가장 유명한 사례가 IDN 호모그래프 공격(Internationalized Domain Name homograph attack)이에요. 예를 들어 "apple.com"이라고 보이는 도메인이 사실은 키릴 문자 'а'와 'р'을 섞어서 만든 완전히 다른 도메인일 수 있거든요. 브라우저 주소창에서도 구분이 거의 불가능해서, 피싱 사이트로 유도하기 딱 좋은 거죠.
소스코드 수준에서도 위험해요. 2021년에 Cambridge 대학 연구진이 발표한 "Trojan Source" 공격이 대표적인데, 유니코드의 양방향 제어 문자(BiDi control characters)를 이용해서 코드 리뷰어 눈에는 정상으로 보이지만 실제로는 다른 로직이 실행되는 코드를 만들 수 있다는 걸 보여줬어요. 호모글리프도 비슷한 맥락에서 악용될 수 있고요.
Charcuterie 같은 도구가 의미 있는 이유가 바로 여기에 있어요. 의심스러운 문자를 빠르게 검사하고, 실제로 어떤 유니코드 코드포인트인지 확인할 수 있으니까요.
어떻게 동작하는지
Charcuterie는 유니코드 문자 간의 시각적 유사도를 데이터베이스로 관리해요. 유니코드 컨소시엄에서 제공하는 confusables.txt 데이터를 기반으로 하는데, 이 파일에는 어떤 문자가 어떤 문자와 혼동될 수 있는지가 매핑되어 있어요. 예를 들어 라틴 대문자 'O'(U+004F)와 그리스 대문자 오미크론 'Ο'(U+039F), 키릴 대문자 'О'(U+041E)는 글꼴에 따라 픽셀 단위로 동일하게 렌더링될 수 있거든요.
웹 인터페이스에서 문자를 입력하거나 텍스트를 붙여넣으면, 각 문자에 대해 유사 문자 목록을 보여주고 유니코드 블록, 스크립트 이름, 코드포인트 넘버를 함께 표시해요. 개발자가 "이 문자가 정말 내가 의도한 문자가 맞나?"를 빠르게 확인할 수 있는 거죠.
실무에서 어떻게 활용할 수 있을까
가장 직접적으로는 코드 리뷰에서 활용할 수 있어요. 외부 기여자의 PR에서 변수명이나 문자열에 비 ASCII 문자가 섞여 있는지 확인하는 용도죠. 많은 린터(linter)가 이미 비 ASCII 문자를 감지하는 규칙을 가지고 있지만, 실제로 어떤 문자인지 시각적으로 비교하고 싶을 때 Charcuterie가 유용해요.
국제화(i18n) 작업을 할 때도 도움이 돼요. 다국어 입력을 받는 서비스를 만들 때, 사용자가 입력한 텍스트에서 호모글리프를 정규화(normalize)해야 하는 경우가 있거든요. 예를 들어 사용자 이름 중복 검사를 할 때, 라틴 문자와 키릴 문자를 혼용한 이름을 같은 이름으로 처리해야 피싱이나 사칭을 막을 수 있어요. 이런 정규화 규칙을 만들 때 참고 자료로 쓸 수 있죠.
비슷한 도구로는 Unicode 컨소시엄의 공식 confusables 차트가 있고, 보안 쪽에서는 IDN 체커 같은 것들이 있어요. Charcuterie는 이런 것들을 좀 더 인터랙티브하고 시각적으로 탐색하기 쉽게 만든 거라고 보면 돼요.
한줄 정리
유니코드 호모글리프는 디버깅의 악몽이자 보안 위협인데, Charcuterie는 이 문제를 시각적으로 빠르게 확인할 수 있게 해주는 깔끔한 도구예요.
혹시 호모글리프 때문에 고생했던 경험 있으신가요? 특히 한글이나 한자권 문자에서 겪은 사례가 있다면 궁금해요!
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공