![[심층분석] AI 눈에는 가짜가, 사람 눈에는 진짜가 보이는 폰트 — 착시로 AI를 속이는 Decoy Font](/newsimg/OafNb1BQyhceYXkF.webp)
AI가 뭐든 읽어가는 시대, 역발상이 나왔어요
요즘 AI한테 스크린샷 한 장 던져주면 안에 있는 글자를 다 읽어주죠. 손글씨 메모도, 흐릿한 영수증도, 비스듬히 찍힌 간판도 척척 읽어내요. 편리하긴 한데, 뒤집어 생각하면 좀 무서운 얘기이기도 해요. 내가 온라인에 올린 글, 이미지 속 텍스트까지 전부 AI 학습 데이터로 긁혀 들어가고 있다는 뜻이거든요.
그래서 요즘 '기계는 못 읽고 사람만 읽는 콘텐츠'를 만들려는 시도가 하나둘 나오고 있는데요. 그림 쪽에서는 AI 학습을 방해하는 노이즈를 입히는 Glaze나 Nightshade 같은 도구가 이미 유명하죠. 이번에 소개할 Decoy Font는 그 아이디어를 '글자' 자체에 적용한 프로젝트예요. 이름 그대로 '미끼(Decoy) 폰트'인데, 이 폰트로 쓴 글을 AI에게 보여주면 AI는 엉뚱한 미끼 글자를 읽고, 사람은 진짜 메시지를 읽게 돼요. 실제로 GPT 계열이나 Gemini의 최신 추론 모델들도 이 폰트로 쓴 이미지 앞에서는 진짜 메시지를 읽어내지 못했다고 해요.
원리: 100년 묵은 착시를 폰트에 심었어요
핵심 아이디어는 의외로 오래된 착시 기법이에요. 멀리서 보면 마릴린 먼로인데 가까이서 보면 아인슈타인으로 보이는 유명한 사진, 한 번쯤 보셨을 거예요. 이걸 '하이브리드 이미지'라고 부르는데, Decoy Font는 바로 이 원리를 글자 하나하나에 적용한 거예요.
하이브리드 이미지가 뭐냐면, 한 장의 그림에 서로 다른 '공간 주파수' 정보를 겹쳐 넣는 기법이에요. 공간 주파수라는 말이 어렵게 들리는데, 쉽게 말하면 이래요.
- 고주파 성분: 가늘고 또렷한 선, 세밀한 디테일. 가까이서 봐야 보이는 정보예요.
- 저주파 성분: 크고 뭉툭한 덩어리, 흐릿한 윤곽. 멀리서 봐도 살아남는 정보예요.
- 전경(미끼): 가는 윤곽선으로 또렷하게 그린 가짜 글자 → 고주파
- 배경(진짜): 흐릿하게 뭉갠 덩어리 형태의 진짜 글자 → 저주파
사람 눈은 재미있게도 가까이서 볼 때는 고주파, 그러니까 디테일에 집중하고, 멀리서 보거나 눈을 찡그리면 고주파가 날아가고 저주파 덩어리만 남아요. 눈을 찡그리는 게 일종의 '블러 필터'를 거는 셈이거든요.
Decoy Font는 이 성질을 이용해서 글자 한 칸에 두 글자를 겹쳐 그려요.
더 재미있는 건 이게 웹 데모로 끝나지 않고 실제로 설치해서 쓸 수 있는 TTF 폰트 파일로 나왔다는 점이에요. 오픈소스 폰트인 DejaVu Sans Mono의 글자 형태를 기반으로 만들어졌고, 개인·상업 프로젝트 모두 무료로 쓸 수 있어요. 메모장에 이 폰트를 설치해서 글을 쓰고 스크린샷을 찍으면, 그 스크린샷을 받은 AI는 사람 눈에는 꽤 명확해 보이는 내용조차 제대로 읽지 못해요.
냉정하게 보면: 어디까지 통하고, 어디서 막힐까
아이디어는 정말 기발한데, 실무자 입장에서는 한계도 같이 짚어봐야 해요.
첫째, 텍스트 데이터 자체는 그대로예요. 이건 폰트, 그러니까 글자를 '그리는 방법'만 바꾼 거라서 문서에 저장된 텍스트는 진짜 글자 그대로거든요. 실제로 Decoy Font로 쓴 문장을 복사해서 붙여넣으면 원문이 멀쩡하게 나와요. 그래서 HTML을 직접 파싱해 가는 일반적인 웹 스크래퍼한테는 아무런 방어가 안 돼요. 이 폰트가 효과를 발휘하는 건 오직 '이미지로 렌더링된 걸 OCR이나 비전 모델이 읽는 경로'뿐이에요. 'AI 스크래핑 방어'라는 표현을 그대로 받아들이기보다는, 정확히는 '이미지 기반 판독 방해'라고 이해하는 게 맞아요.
둘째, 전처리 한 번이면 뚫릴 수 있어요. 원리를 뒤집어 보면 약점도 보이는데요. AI가 이미지를 축소하거나 블러를 한 번 걸고 읽으면, 사람이 눈을 찡그리는 것과 똑같은 효과가 나서 오히려 진짜 메시지가 드러나요. 컴퓨터 비전에서는 원본과 여러 단계의 축소본을 함께 분석하는 '이미지 피라미드' 같은 멀티스케일 처리가 아주 흔한 기법이라, 모델이나 서비스 쪽에서 이런 처리를 기본으로 넣는 순간 이 방어는 무력화돼요. 이미지 보호 도구들이 모델 업데이트 때마다 다시 뚫리고 다시 막는 싸움을 반복하는 것처럼, 이쪽도 창과 방패의 경쟁이 될 수밖에 없어요.
셋째, 접근성 문제도 있어요. 사람이라고 다 편하게 읽는 건 아니거든요. 저시력 사용자나 화면을 가까이서 봐야 하는 분들에게는 미끼 글자가 더 잘 보여서 오히려 혼란스러울 수 있고, 화면 낭독기(스크린 리더)는 텍스트를 그대로 읽으니 괜찮지만 이미지로 공유된 순간부터는 그마저도 막혀요. '사람만 읽게 한다'는 목표가 '일부 사람도 못 읽게 한다'로 번질 수 있다는 거죠.
그럼에도 이 프로젝트가 흥미로운 건 CAPTCHA와의 대비 때문이에요. CAPTCHA는 '사람은 읽고 기계는 못 읽는 글자'를 만들려던 20년 된 시도인데, 이제는 AI가 사람보다 CAPTCHA를 더 잘 풀어버리는 지경이 됐잖아요. Decoy Font는 같은 목표를 전혀 다른 각도에서 다시 공략해요. 글자를 일부러 훼손하는 대신, AI가 '디테일에 지나치게 집착한다'는 지각 방식의 차이 자체를 파고든 거죠. 인간과 기계의 시각이 어디서 갈라지는지를 보여주는 살아있는 실험인 셈이에요.
한국 개발자에게: 그래서 뭘 해볼 수 있을까
먼저 분명히 해둘게요. 이걸 진지한 보안 수단으로 쓰면 안 돼요. 정말 지켜야 할 정보라면 답은 암호화지, 착시가 될 수는 없거든요. 대신 이런 포인트들이 있어요.
1. 가벼운 프라이버시 레이어로 써보기 어차피 이미지로만 돌아다닐 콘텐츠라면 얘기가 달라져요. 예를 들어 SNS에 올리는 이벤트 초대장 이미지, 커뮤니티 인증샷 속 문구처럼 '사람에게만 전하고 싶은' 가벼운 메시지에 쓰면, 자동 수집 봇의 1차 판독은 걸러낼 수 있어요. TTF를 설치하고 폰트만 바꾸면 되니 도입 비용은 사실상 0이에요.
2. 내 서비스의 OCR 파이프라인 강건성 테스트로 쓰기 OCR이나 문서 판독 기능이 들어간 서비스를 만들고 있다면, Decoy Font로 만든 이미지를 테스트 케이스로 넣어보세요. 우리 파이프라인이 이런 적대적 입력에 얼마나 흔들리는지 바로 드러나거든요. 방어하는 입장이라면 입력 이미지를 원본과 축소본 두 가지 스케일로 함께 모델에 넣는 것만으로도 이런 트릭 대부분을 잡아낼 수 있어요.
3. 컴퓨터 비전 기초를 배우는 최고의 교재로 삼기 이 프로젝트는 학습 소재로도 훌륭해요. 이런 순서를 추천해요. 먼저 공간 주파수와 푸리에 변환의 개념을 감으로 익히고, 그다음 OpenCV의 가우시안 블러로 저주파를, 원본에서 블러를 뺀 값으로 고주파를 뽑아서 나만의 하이브리드 이미지를 직접 만들어보는 거예요. 코드 스무 줄이면 아인슈타인-먼로 사진을 재현할 수 있어요. 여기까지 오면 적대적 예제(adversarial example), 그러니까 사람 눈에는 멀쩡한데 AI만 오작동하게 만드는 입력이라는 더 큰 연구 분야로 자연스럽게 이어져요.
마무리하며
Decoy Font가 보여주는 건 결국 'AI의 눈과 사람의 눈은 아직 다르게 본다'는 사실이에요. 이 틈새는 모델들이 멀티스케일로 세상을 보기 시작하면 좁혀지겠지만, 그때는 또 다른 지각의 틈을 파고드는 시도가 나올 거예요. 인간만을 위한 정보 채널을 확보하려는 이 흐름은 AI 시대의 프라이버시 논의와 함께 계속 커질 수밖에 없다고 봐요.
여러분이라면 이 폰트를 어디에 써보고 싶으세요? 반대로, 여러분이 운영하는 서비스에 이런 이미지가 들어온다면 지금 파이프라인은 견뎌낼 수 있을까요? 댓글로 의견 나눠주세요.
🔗 출처: Hacker News