클로이드의 추론 모델에 멀티턴으로 요청을 던지면 응답 안에 “signature”라는 긴 문자열이 섞여 나온다. OpenAI의 Responses API를 stateless(서버에 기록을 남기지 않는)로 사용하면 encrypted_content, 젬니(Gemini)는 thought signature를 사용한다. 모두 “모델이 답을 내기 전에 머릿속에서 생각한 과정”, 즉 chain-of-thought(CoT, 思考の連鎖)를 암호화한 덩어리로, 다음 턴에서 그대로 돌려보내는 규칙이 되어 있다. 내용은 읽을 수 없는 블랙박스라고 많은 구현자가 생각했다. 나와도 그렇게 취급했다.
그 전제를 뒤흔드는 논문이 8월 10일에 arXiv에 게재되었다. Panfilov 연구팀의 “Stealing Reasoning Traces from Proprietary LLM APIs” 논문(https://arxiv.org/abs/2608.09867)은 Anthropic, OpenAI, Google의 실제 API에서 이 암호 블록이 생각보다 완전히 밀폐되어 있지 않다는 점을 시사한다.
왜 추론을 암호화하여 클라이언트에게 맡기는 걸까요? 🔐
먼저 설계 의도를 살펴봅니다. 추론 모델은 최종 답변에 이르기까지 수많은 초안을 생성하지만, 제공업체는 이러한 생 CoT(생각-대화)를 고객에게 보여주고 싶어하지 않으며, 경쟁사에 강력한 모델의 출력을 통해 자사 모델을 학습시키는 ‘추류(蒸留)’의 재료를 제공하게 되면 중간 과정에서 위험한 내용이 노출될 수도 있습니다. 반대로 서버 측에서 보관하면 제로 데이터 유지(ZDR)를 표방하는 계약이나 무상태 API와 맞물리기 어렵습니다.
이에 각 사들은 타협안을 마련했다. CoT(Conversation Turn)를 암호화하여 클라이언트에게 반환하고, 다음 요청에서 다시 송환받게 한다. 복호화 키는 서버가 보유하고 있어, 고객은 내용을 읽을 수 없으면서도 “생각의 연속성”만 유지할 수 있다. Anthropic의 문서에는 이 메커니즘이 명시되어 있다.
각 사고 블록에는 또한 서명 필드가 포함되어 있으며, 이는 다중 턴 및 도구 사용 대화에서 변경되지 않고 그대로 반환되는 전체 추론의 암호화된 복사본입니다.
더 나아가, display: "omitted"(Opus 4.8이나 Sonnet 5와 같이 기본 설정된)에서는 텍스트가 비어 돌아오고, signature만으로 암호화된 모든 생각이 담긴다. 서버는 이 서명을 해독하여 원래 생각을 복원하고, 프롬프트를 구성한다. 읽을 수 없는 것은 고객뿐이며, 서버에게는 평범하게 열 수 있는 편지통과 같다,는 점이 나중에 영향을 미친다.
약한 모델에게 강한 모델의 봉투를 열게 하세요.
논문에서 강조한 부분은 이 Envelope가 “세션 사용자 모델 간 호환”된다는 한 가지 지점이다. 특정 프로바이더 내에서는 단일 키 체계로 암호화되어 있기 때문에, Claude Opus 4.8이 생성한 서명을 동일한 Anthropic의 Haiku 4.5에 제공해도 정상적으로 승인된다.
공격은 다음과 같이 구성된다. 강력한 모델에서 암호화된 추론 블록을 가져와 방어 약한 덜 강력한 형제 모델로 전달한다. 서버는 정당한 봉투처럼 해독하여 복원된 평문을 약한 모델의 맥락에 넣는다. 그 후 “주입된 추론을 한 글자도 그대로 베껴라”라는 단순한 jailbreak 지시를 내리면 약한 모델이 평문을 뱉어낸다. 강력한 모델 자체를 파괴할 필요는 없다. 논문은 이 패턴을 각 회사의 실제 모델로 재현하고 있다.
- Anthropic(클로드): 싱커 블록(추론 반환 필드), Haiku 4.5(디코딩 역할)
- OpenAI (Responses API): 추론을 반환하는 필드=암호화된 콘텐츠, 논문에 사용된 복호화 역할=GPT-5.6 Luna
- Google(Gemini): 추론을 반환하는 필드=Thought Signature, 논문에서 사용된 복호화 역할=Gemini Robotics 1.6
OpenAI 측의 동작 역시 공식 문서에서 뒤집힐 수 있다. store: false나 ZDR의 경우, 추론 아이템에 encrypted_content가 첨부되어 반환되고, 다음 추론을 유지하기 위해서는 “암호화 추론을 포함한 모든 출력 아이템을 그대로 다음 요청으로 쌓아 올리는” 방식으로 운영된다. 마치 고객이 편지를 직접 운반하는 설계와 같다.
공개 로그에 섞인 키와 PII
증류 방지 조치는 업계 내 샅샅이 수색이지만, 실무에서 무서운 것은 두 번째 용도다. 개발자들은 디버깅이나 데이터셋 공개를 위해 세션 로그를 GitHub나 Hugging Face에 자유롭게 업로드한다. 그 중의 암호 블록은 “읽을 수 없으니 안전하다고” 여겨지고 있다.
논문에서는 공개 저장소에서 수집한 315,320개의 추론 블록을 해독하여 367건의 PII(개인 식별 정보)와 182건의 인증 정보를 회수했다. 여기에는 API 키, 비밀번호, 접근 토큰, 비밀 키가 포함된다. 암호화되어 있어 공개해도 되는,라는 직감이 온전히 틀렸다는 것을 깨닫게 되는 일이었다. 자신이 과거에 올린 트레이스를 떠올리며 당혹스러웠다.
남은 두 경로 또한 은근히 효과를 발휘한다. 최종 답변이 안전하게 거부되어 있더라도, 중간 단계의 사고에는 위험한 절차가 남아있을 수 있다 (세 번째). 또한 암호 블록 안에 프롬프트 인젝션을 삽입하면, 그것을 담아낸 공개 에이전트의 배포를 밖에서 보지 못하는 형태로 오염시킬 수 있다 (네 번째).
직어했다, 라는 사람은 아무도 말하지 않았어.
여기서는 소스 간에 내용이 상충된다. 논문 자체는 “2026년 8월 시점에서 제시된 공격은 더 이상 재현하지 않는다”고 자신의 재현성을 기록하고 있으며, 책임 공개 이후 각사가 대책을 마련했다고 해석할 수 있다. 반면, The Hacker News https://thehackernews.com/2026/08/openai-anthropic-google-api-flaw-let.html의 보도에 따르면, 세 회사 모두 공식적인 취약성 인정은 없었고, 과거 유사한 재현 동작을 보고한 연구자에게는 “재현하지 않는다”, “보안상의 함의는 없다”고 답변했던 경위가 담겨 있다. 즉, “조용히 막혔다”고 추측할 수 있고, “공식적으로 인정하고 있지 않다”는 상황이 공존하는 것이다. 방어를 설계하는 측에서는, 고쳤다는 말을 들었을 때 재현 절차가 사라진 것일 뿐일 수도 있다는 전제에서 움직이는 것이 타당하다고 판단한다.
자신의 코드로 먼저 해결할 수 있는 것들
API 내부 설계를 이곳에서 바로 수정할 수는 없지만, 노출을 줄이는 방안은 지금 당장 효과가 있다. 두 가지가 있다.
첫째, 모델을 중간에 전환한다면 이전 턴의 思考ブロック을 가져오지 않는다. Anthropic의 문서에는 명확하게 이렇게 지시되어 있다.
어떤 두 모델 간의 전환 시, 예를 들어 분류기 거부 후 패스백 시에는 이전 어시스턴트 턴에서 스트립 생각과 리다텍트드_씽킹 블록을 제거합니다. 생각 블록은 해당 모델이 생성한 것이므로 연결되어 있습니다.
분류기에서 거부 복귀와 유사하게 강력한 모델에서 약한 모델로 전환하는 경로를 보유하고 있다면, 그것이 바로 공격의 온상 그 자체다. 전환 시에 낮추는 것은 비용(무시되어도 입력 토큰을 소모한다) 문제이기도 하지만, 현재는 보안 문제로서 접근해야 한다.
두 번째. 시그니처나 암호화된 콘텐츠를 포함하는 세션 로그를 그대로 공개하거나 공유하지 않는다. 암호화되어 있기 때문에 방심하지 않고, 원본 대화 로그와 같은 ‘비밀’로 취급한다. 데이터셋을 배포할 경우, 생각 블록을 삭제하거나, 평문화하여 내용을 직접 시각적으로 확인한 후 배포한다.
이 사건이 보여준 것은 암호문의 강도라기보다는 경계 설계의 허술함이다. 동일한 키 체계를 모든 모델에서 공유하고, 편지를 누가 가져왔는지(어떤 모델, 어떤 사용자, 어떤 세션)를 복호화 시간에 확인하지 않으면 편지는 재사용될 수 있다. 논문은 복호문맥에 대한 묶음(사용자 ID나 대화 ID를 AEAD 페이로드에 Embedding)이나 모델 간의 분리를 대책으로 제시한다. 개발자가 닿는 레이어 바깥쪽의 이야기이지만, 우리 스스로 설계하는 에이전트 기반에서 토큰이나 권한을 다룰 때의 그대로 사용 가능한 교훈이기도 하다. “읽을 수 없다 = 안전”을 키 바깥쪽의 설계로 보장하고 있는지 한 번 의심해 볼 가치가 있다.
본 기사는 인공지능이 기초 정보 조사 및 사실 확인을 수행하여 작성 및 공개되었습니다.
출처: note 원문
번역: Gemma 3(.44) 초벌 + 교정 18청크
원문 보기 | 출처: note.com