nethical6/conversation-steganography
Use LLMs to hide messages inside normal looking conversations
Conversation Stenography – AI 기반 스테가노그래픽 채팅
무엇인가요 – Go로 작성된 명령줄 도구로, WhatsApp, Telegram, Signal, iMessage, 이메일, Instagram DM 등 일반적인 메시징 앱을 통해 두 사람이 비밀 메시지를 교환할 수 있습니다. 비밀 텍스트는 먼저 AES-SIV로 암호화된 후, 로컬에서 실행되는 LLM(예: Llama 3.2, GPT-2)이 카버 메시지를 생성하여 일반적인 대화처럼 보이게 합니다. 수신자는 동일한 프로그램을 실행하여 LLM의 토큰 선택에서 숨겨진 바이트를 추출하고, 공유된 키로 복호화하여 원래의 비밀 메시지를 복구합니다.
왜 중요한가요 – 캐리어 텍스트는 일반적인 채팅과 구분할 수 없기 때문에, 암호화된 페이로드를 스캔하는 수동 감시는 이 대화를 쉽게 탐지하지 못합니다. 모든 암호화 작업과 모델 추론은 사용자 기기에서 수행되며, 데이터는 클라우드로 전송되지 않습니다.
주요 기능 (README에 설명됨)
| 기능 | 세부 사항 |
|---|---|
| 엔드투엔드 암호화 | AES-SIV(인증 암호화)가 기밀성과 무결성을 보호합니다. |
| 메시지 체이닝 | 각 메시지는 이전 메시지를 인증하여 위조, 삭제, 재정렬을 탐지합니다. |
| 로컬 AI 모델 | 기기에서 카버 텍스트를 생성합니다 (Apple Silicon에서는 MLX, 기타 플랫폼에서는 PyTorch + Transformers). |
| 크로스플랫폼 캐리어 | 생성된 카버 텍스트는 어떤 메시징 앱에도 복사 가능하며, 도구는 앱에 직접 통합되지 않습니다. |
| 시뮬레이션 모드 | ./conversation-stenography simulate로 한 대의 기기에서 두 명의 가상 참여자가 테스트용으로 채팅할 수 있습니다. |
| 사용자 정의 가능한 모델 | Llama 3.2 (1B, 3B), Llama 3.1 8B, GPT-2 (base & medium)를 지원합니다. |
| CLI 명령어 | /paste, /send, /show, /status, /help, /quit 외에도 설정, 대화 목록, 스크립트 기반 체인 전송/수신을 위한 상위 명령어가 있습니다. |
| 환경 변수 오버라이드 | 비밀 문구, 모델 경로, 런타임 등은 환경 변수로 제공 가능하여 자동화에 활용할 수 있습니다. |
작동 방식 (README의 고수준 흐름)
- 비밀 → AES-SIV 암호화 – 평문은 공유된 비밀 문구에서 유도된 키로 암호화됩니다 (PBKDF2-HMAC-SHA-256, 600k 라운드).
- 암호화된 바이트 → LLM 토큰 선택 – 암호화된 바이트 스트림을 로컬 LLM에 입력하면, 이 바이너리 표현이 해당 바이트를 인코딩하는 토큰을 선택합니다. 결과 토큰 시퀀스는 자연스러운 영어로 렌더링되어 카버 텍스트가 됩니다.
- 카버 텍스트 → 메시징 앱 – 사용자는 카버 텍스트를 복사하여 어떤 일반적인 채팅 앱에도 붙여넣습니다.
- 카버 텍스트 → LLM 복호화 – 수신자는 수신한 카버 텍스트에 대해 동일한 모델을 실행하여 숨겨진 토큰 인코딩 바이트를 추출하고, 공유된 키로 복호화하여 원래의 비밀 메시지를 회복합니다.
- 메시지 체이닝 – 각 단계에서 대화 ID, 발신자 이름, 메시지 인덱스, 이전 모든 메시지의 해시를 서명하므로, 순서가 바뀌거나 수정된 메시지는 탐지됩니다.
시작하기 (README의 빠른 시작 단계)
- 클론 및 빌드
git clone https://github.com/nethical6/conversation-stenography.git cd conversation-stenography go build -o conversation-stenography ./cmd/conversation-stenography - 설치 마법사 실행 (
./conversation-stenography) – 모델을 선택하고 마법사가 모델을 다운로드하며 로컬 설정 파일을 생성합니다. - 로컬 테스트 (
./conversation-stenography simulate사용, 선택 사항). - 실제 채팅 시작 –
./conversation-stenography를 실행하고, 대화 이름, 사용자 이름, 공유 비밀 문구를 입력합니다. - 전송 – 비밀 메시지를 입력하면 도구가 생성된 카버 텍스트를 출력하여 복사합니다.
- 수신 –
/paste <sender>를 사용하여 수신한 카버 텍스트를 붙여넣습니다. 도구가 복호화하여 숨겨진 메시지를 표시합니다.
일반적인 사용 사례
- 두 사람이 직접 만나 비밀 문구와 대화 이름을 합의합니다.
- 둘 다 도구를 설치하고 설치 마법사를 실행하며, 동일한 LLM을 선택합니다.
- 둘은 기존 메시징 플랫폼을 통해 카버 텍스트를 교환하며, 플랫폼에 실제 페이로드를 노출하지 않습니다.
제한 사항 및 주의사항 (작성자가 언급함)
- 개념 증명 – 이미 LLM 기반 스테가노그래피 탐지 기술이 존재하며, 이 도구는 고도의 적대자에 대해 검증되지 않았습니다.
- 정확한 복사 필요 – 자동 수정, 스마트 따옴표, 포맷 변경은 복호화를 실패하게 합니다.
- 모델 일치 필요 – 양측 모두 정확히 동일한 모델 버전과 설정을 실행해야 하며, 그렇지 않으면 복호화 실패합니다.
- 로컬 리소스 요구 – 3B 파라미터 LLM을 실행하려면 최신 Apple Silicon Mac(MLX) 또는 Torch 백엔드용 강력한 GPU가 필요합니다.
- 법적/윤리적 면책 조항 – 리포지토리는 교육적 목적만을 강조하며, 악용은 금지됩니다.
라이선스
리포지토리는 LICENSE 파일을 포함하고 있으며 (README에 구체적인 SPDX 식별자는 기재되지 않음), 프로젝트는 해당 파일에 정의된 조건에 따라 오픈소스입니다.
결론
Conversation Stenography는 현대적인 LLM 추론과 고전적인 AES-SIV 암호화를 결합하여 일반적인 채팅 텍스트 안에 메시지를 숨기는 진정한 오픈소스 구현입니다. 연구자와 프라이버시를 중시하는 사용자를 위한 자체 포함형, 로컬에서 실행 가능한 스테가노그래픽 채널을 제공하지만, 알려진 실용적 및 보안적 제약을 가진 개념 증명에 머물러 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트