트윗 안에 텍스트 숨기기
Hiding Text Inside a Tweet by Edwin Wagha
이 영상은 겉으로 보기에는 평범하고 무해한 문장 안에 육안으로 식별 불가능한 비밀 메시지를 숨기는 텍스트 스테가노그래피(Steganography) 기술과 그 원리를 다룹니다.
-
텍스트 스테가노그래피의 개념과 한계
- 이미지 스테가노그래피는 픽셀의 색상 값을 1%만 바꿔도 인간이 알아차리지 못함.
- 오디오 스테가노그래피는 음파 안에 비밀을 숨길 수 있음.
- 반면 텍스트는 글자 자체가 고정된 형태를 가지므로 폰트를 바꾸거나 하지 않는 이상 미세하게 변형하여 데이터를 숨길 공간이 없어 보임.
- 이 문제를 해결하기 위해 화면에 보이는 형상이 아닌 배경 시스템인 유니코드(Unicode) 라이브러리를 활용함.
-
유니코드와 보이지 않는 문자(Zero-width characters)
- 컴퓨터에게 텍스트는 모양이 아니라 고유 ID 번호가 부여된 조회 테이블임.
- 유니코드 라이브러리 깊숙한 곳에는 시각적 형태나 너비가 없는 '너비 제로 문자'들이 존재함.
- 이 문자들은 본래 서식 지정, 줄 바꿈 제어, 문자 결합 등 기능을 위해 설계되었음.
-
실험에 사용된 세 가지 서식 도구와 역할 부여
- 너비 제로 공백(Zero Width Space): 웹 디자인에서 긴 URL이나 단어를 끊어줄 수 있는 '보이지 않는 천공' 역할을 함. 본 실험에서는 이진수 '0'의 값으로 지정함.
- 너비 제로 비접합자(Zero Width Non-Joiner): F와 I처럼 자연스럽게 붙는 글자들을 미적으로 분리할 때 사용되는 '보이지 않는 유리벽'임. 본 실험에서는 이진수 '1'의 값으로 지정함.
- 너비 제로 접합자(Zero Width Joiner): 남성 이모지와 컴퓨터 이모지를 합쳐 기술자 이모지를 만드는 '디지털 접착제' 역할을 함. 데이터 스트림의 시작과 끝을 알리는 '플래그(Flag)'로 지정함.
-
메시지 은닉 과정 및 기술적 메커니즘
- 파이썬 프로그램을 작성하여 과정을 자동화함.
- 'Secret'이라는 비밀 단어를 원시 이진 데이터(Raw binary data)로 변환함.
- 변환된 0과 1의 스트림을 앞서 정의한 보이지 않는 유니코드 문자들로 치환함.
- 치환된 투명 문자 스트림을 평범한 문장 중간에 삽입함.
- 삽입된 문자는 너비가 0이므로 주변 글자들이 밀려나지 않고 그대로 겹쳐지며 시각적 틈이 발생하지 않음.
-
디지털 흔적과 물리적 제약
- 이미지 스테가노그래피와 마찬가지로 파일 속성에서 디지털 이상 징후가 발견됨.
- 표준 글자 하나는 8비트(8개의 0과 1)로 구성되므로, 비트당 문자 하나를 대응시키면 8:1의 비율이 형성됨.
- 단 6글자인 'Secret'을 숨기기 위해 48개의 보이지 않는 문자를 본문에 주입해야 함.
- 실제 트윗(Tweet)에 짧은 숨겨진 단락을 게시하려 시도했을 때, 육안으로는 빈 상자처럼 보이지만 플랫폼 시스템은 이를 수천 자의 문자로 인식하여 게시를 거부함.
-
결론 및 시사점
- 인간에게 텍스트는 읽기 위한 정적인 결과물이지만, 기계에게 텍스트는 유동적인 코드와 서식 지침의 바다임.
- 보이지 않는 메커니즘을 가로챔으로써 인간의 감각이 침투할 수 없는 디지털 환경의 층위가 존재함을 증명함.
- 가장 안전한 은신처는 어두운 그림자가 아니라, 누구나 보고 있지만 결코 의심하지 않는 '텅 빈 공간' 바로 그 자체임.
토픽:
프로그래밍