상용 LLM API에서 암호화된 추론 트레이스 훔치기 (Stealing Reasoning Traces)
Stealing Reasoning Traces from Proprietary LLM APIs
TL;DR Highlight
암호화된 추론 블록을 약한 모델에 넣었더니 평문으로 복원되고 키·PII가 새어 나왔다
Who Should Read
Claude·GPT·Gemini의 thinking 블록을 포함한 에이전트 로그를 저장·공유하거나 깃허브에 올리는 백엔드·에이전트 개발자
Core Mechanics
- 암호화 추론 블록은 모델 간에 호환된다
- Anthropic·OpenAI·Google은 추론(CoT)을 암호화 블록으로 클라이언트에 돌려주고, 다음 요청 때 다시 받는다.
- 이 블록이 다른 세션·다른 사용자·같은 회사의 다른 모델에서도 그대로 통한다.
- 그래서 방어가 약한 작은 모델이 복호화기 역할을 하게 된다.
- Haiku에 붙이면 Opus 생각이 평문으로 나온다
- Opus 4.8의 thinking signature를 Haiku 4.5에 넣고 "그대로 옮겨 적어라"고 하면 원문 추론이 출력된다.
- 큰 모델을 직접 탈옥할 필요가 없다.
- Haiku는 고정 프롬프트 하나로 충분했고, GPT-5.6 Luna는 템플릿 변경과 best-of-n이 필요했다.
- 공개한 에이전트 로그에서 비밀이 샌다
- 공개 로그 속 암호화 블록은 사용자가 읽을 수 없어서 마스킹이 불가능하다.
- 에이전트에게 "세션 정리해줘"라고 시키면 숨은 추론에서 민감값을 다시 되뇌는 경우가 있었다.
- 일부 PII는 화면에 보이는 대화에 아예 없던 값이었다.
- 추론 채널로 유해 정보가 새어 나온다
- 최종 답은 거절하거나 무해한데 추론 안에는 유해 내용이 있을 수 있다.
- Opus 4.8의 추론을 복호화하니 보이는 답에 없던 정보가 나왔다.
Evidence
- 공개 트레이스 대규모 복호화
- GitHub·Hugging Face의 에이전트 궤적 6,708개에서 추론 블록 315,320개를 복원했다.
- 그중 0.3%(1,028개)에 프라이버시 유출이 있었고, 세션 단위로는 4.9%(328개)가 유출했다.
- 복구된 민감 정보 규모
- PII 아티팩트 367개와 자격증명 182개를 복구했다.
- 실제 사용자 세션만 보면 API 키 62개, 비밀번호 33개, 개인 이메일 30개였다.
- 보이는 대화에 없던 값
- 실제 사용자 세션에서 복구한 704개 아티팩트 중 64개는 보이는 채팅 기록에 전혀 없었다.
- 비용과 정확도 지표
- Haiku 4.5 가격 기준 12k 토큰 입출력의 트레이스 1만 개를 복호화하는 비용은 약 $720이다.
- Codeforces 120문제에서 API 보고 사고 토큰 수와 복원 토큰 수가 대부분 가깝게 일치했다.
- 논문 전체 실험에는 API 크레딧 약 $30,000을 썼다.
How to Apply
- 로그·트레이스에서 thinking 블록 지우기
- 에이전트 세션 로그를 깃허브·HF·팀 공유 공간에 올리기 전에 signature·encrypted_content·thinkingSignature 필드를 제거하라.
- 평문 마스킹만으로는 부족하니 오늘 저장소를 grep으로 훑어라.
- 이미 공개한 로그 점검하기
- 공개 저장소·데이터셋에 서명 필드가 남은 로그가 있으면 내리고, 그 안에 노출됐을 수 있는 키를 폐기·교체하라.
- 추론 블록을 비밀 저장소로 쓰지 않기
- 사용자 PII나 키를 모델 컨텍스트에 넣는 에이전트는 필요한 값만 넣고, 세션 "정리" 요청 때 값을 되풀이하게 하지 마라.
- 공유받은 세션 재개 전에 서명 블록 제거하기
- 남이 올린 에이전트 로그를 이어서 실행할 때는 추론 블록을 빼고 재개하라.
- 숨은 인젝션을 막기 위한 것이다.
Try It
# Claude Code 또는 터미널에 붙여넣기 (논문 방어책의 간이 버전: 로그 내 추론 서명 필드 탐지)
# 아래 명령을 로그 폴더에서 실행
grep -rlE '"(signature|thinkingSignature|encrypted_content)"' ./logs
# 공개 전 제거 예시 (jq)
# jq 'walk(if type=="object" then del(.signature, .thinkingSignature, .encrypted_content) else . end)' in.json > out.json
# 이어서 해 볼 것: 제거 후 다시 grep해서 결과가 비는지 확인하고, 기존 공개분에 키가 있었다면 교체Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓
Related Resources
Original Abstract (Expand)
Leading large language model providers now conceal their models' step-by-step reasoning, or chain-of-thought, to protect intellectual property and limit information leakage. Rather than storing these traces server-side, providers return them to the client as blocks of encrypted text, which the client passes back with each subsequent request. Building on prior research, we identify an architectural vulnerability: these encrypted blocks are fully compatible and interchangeable across different sessions, users, and models within a provider's ecosystem. We exploit this compatibility to develop a scalable decryption jailbreak. By injecting an encrypted reasoning trace from a given model into a weaker, and less safeguarded model from the same provider, we force it to decode and output the trace verbatim in plaintext, without ever jailbreaking the more capable model directly. This vulnerability enables four distinct attack vectors. First, it circumvents anti-distillation mechanisms, allowing adversaries to extract a proprietary model's reasoning, as we demonstrate across Anthropic, OpenAI, and Google. Second, it allows for large-scale private data extraction. Developers frequently share session logs publicly, unaware of contents of the encrypted blocks. By decoding 315,320 reasoning blocks scraped from public repositories, we recovered 367 Personally Identifiable Information (PII) artifacts and 182 credentials. Third, it inadvertently reveals hazardous information hidden within the reasoning process, even in cases where the model's final, visible output safely rejects a malicious request. Fourth, attackers can leverage this flaw to execute invisible prompt injections, embedding malicious payloads entirely within encrypted blocks to poison public agentic rollouts. Following responsible disclosure, we propose concrete cryptographic and system-level mitigations to secure client-side reasoning.