Claude 시그니처 복원 서버와 프로토콜 재현 데모
Open Reasoning 데모의 서버 측 구현을 재현하여 모델이 봉인한 signature를 수집하고 디코딩·재생해 숨겨진 체인오브코드를 복원하는 도구와 분석을 제공한다.
TL;DR
이 리포지터리는 Open Reasoning 데모의 서버 측 동작을 독립적으로 재현해 모델이 반환하는 봉인된 추론(signature)의 와이어 포맷과 재생 절차를 실험 가능한 형태로 제공한다. signature는 base64로 인코딩된 protobuf 봉투 안에 AEAD로 암호화된 추론을 포함하고 바인딩된 모델명을 헤더에 담는 구조로 분석되었으며 tools/decode_signature.py와 ANALYSIS.md에서 상세한 필드 구조와 엔트로피·복원 실험 결과가 제시되어 있다. 서버는 harvesting에서 signature를 추출해 서버 측 세션과 로그에 보관하고 재생 시에는 바인딩된 모델을 사용해 AEAD 인증 검사를 통과시킴으로써 봉인된 추론을 복원하며 이 구현은 로컬 실험과 보안 진단에 유용하지만 메모리 기반 세션과 확률적 elicitation 특성 때문에 대규모 프로덕션 배포에는 추가적인 스토어와 신뢰성 조치가 요구됩니다.
주요 기능
- 수집 기능은 upstream에 확장된 thinking 요청을 보내고 응답의 thinking 블록에서 block["signature"]를 추출하여 서버 세션과 로그에 저장하는 흐름을 구현한다. 이 과정에서 원시 시그니처는 브라우저에 노출되지 않으며 has_signature 불리언만 클라이언트에 반환됩니다. 로그에는 events.jsonl, raw 응답, signatures 폴더가 포함되어 호출 단위 비용 계산과 감사가 가능하도록 구성되어 있습니다.
- 재생 기능은 서버가 세션에 보관한 signature를 assistant.thinking 블록으로 재삽입하고 새로운 사용자 프롬프트로 모델에게 이전의 비공개 추론을 재출력하도록 요청하는 흐름을 제공한다. 재생은 브라우저에서 직접 signature를 제출하는 BYOK 경로와 세션 인덱스만 전달하는 경로를 모두 지원합니다. 재생 시 서버는 signature 헤더에서 바인딩된 모델명을 확인해 AEAD 인증 검사를 통과시키는 일치 모델로 요청을 보냅니다.
- 디코딩 도구는 tools/decode_signature.py로 signature의 base64-인코딩된 protobuf 봉투를 디코딩하고 내부 필드와 바인딩된 모델명을 추출할 수 있다. ANALYSIS.md에는 디코딩된 와이어 포맷, 엔트로피 측정치, harvest/replay 실험 결과와 특수 문자 복원 사례가 수록되어 있습니다. 이 도구는 서명 포맷을 수동으로 검사하고 연구 목적으로 재현하는 데 사용됩니다.
- 데모 통합은 static/index.html 프론트엔드와 server.py Flask 백엔드를 포함해 로컬에서 즉시 인터랙티브한 Prove It Yourself와 Live Conversation 워크플로를 실행할 수 있도록 구성되어 있다. 서버는 /api/* 계약을 구현해 상태, 과금, unseal 등을 처리하며 README의 Quick start 명령으로 바로 기동됩니다. 단일 프로세스는 세션과 할당량을 메모리에 유지하므로 프로덕션에는 공유 스토어로의 전환이 필요합니다.
어떻게 동작하는가
전체 흐름은 두 종류의 provider 호출으로 구성되며 첫 번째 호출(Harvest)은 공급자에 확장된 thinking을 요청해 응답의 thinking 블록 안에 봉인된 signature를 받아 서버에 저장하는 방식이다. 두 번째 호출(Replay)은 저장된 signature를 assistant.thinking 블록으로 재삽입하고 모델에게 이전의 비공개 추론을 복기하도록 요청해 서버 측에서 AEAD 복호화와 모델 바인딩 검증을 거쳐 원문을 노출하도록 유도한다. signature는 base64로 인코딩된 protobuf 봉투 안에 AEAD로 암호화된 추론을 포함하고 있으며 tools/decode_signature.py는 해당 봉투에서 바인딩된 모델명을 추출해 일치하는 모델로 재생하도록 한다.
해결 문제
이 저장소는 공급자가 평문으로 공개하지 않는 모델의 내부 추론을 어떻게 봉인(signature)하고 이동시키는지 복원 가능한 서버 측 구현을 제공해 연구자와 보안 분석가가 해당 메커니즘을 직접 재현할 수 있도록 한다. 원본 Open Reasoning 데모가 데모와 예시만 공개한 반면, 이 리포지터리는 signature 와이어 포맷 디코딩, 엔트로피 분석, 비밀 복원 실험 등 재현 가능한 증거를 함께 제공한다. 또한 서버와 프론트엔드를 통합해 수집(harvest)과 재생(replay) 경로를 실제로 실행하고 로그를 통해 비용과 호출 기록을 확인할 수 있게 한다.
차별점
- 원본 프로젝트가 데모와 예시만 공개한 반면 이 레포지터리는 서비스 측의 복원 구현을 독립적으로 역공학해 공개한 점이 차별화 요소다. ANALYSIS.md에 base64 protobuf 봉투 구조와 AEAD 결합 방식, 엔트로피 측정과 실험 재현 결과가 상세히 수록되어 있어 단순 데모 이상의 증거 기반 분석을 제공한다. 서버 코드와 디코더 도구가 함께 제공되어 연구자가 동일한 실험을 로컬에서 재현할 수 있다.
- 서버는 원시 signature를 클라이언트에 노출하지 않도록 설계되어 보안 관점의 위험 표면을 줄인 구현을 채택했다. Harvest 시에는 has_signature 불리언만 클라이언트에 공개하고 실제 signature는 세션과 logs/signatures/에만 보관한다. 이 설계로 브라우저 단에서의 직접 악용 가능성을 낮추면서도 재생은 서버 내부에서 일관된 AEAD 인증 검사를 거쳐 수행되도록 보장한다.
- tools/decode_signature.py로 봉투의 와이어 포맷과 바인딩된 모델명을 직접 추출하는 기능을 제공해 서명 구조에 대한 정량적 분석과 수동 검사가 가능하다. ANALYSIS.md의 실험 결과에는 특수 문자와 다바이트 문자가 성공적으로 복원된 사례가 포함되어 있어 디코더의 실용성을 입증한다. 이 점은 단순 시연용 파이프라인보다 재현성과 진단 도구 제공 측면에서 우위를 점한다.
사용 사례
- 공급자의 thinking 블록이 어떻게 내부 추론을 봉인하고 전달하는지 보안적으로 조사할 때 사용할 수 있다. 연구자는 로컬에서 harvest와 replay 절차를 실행해 signature의 와이어 포맷과 AEAD 결합을 확인할 수 있으며 디코더로 바인딩된 모델명을 추출해 검증 실험을 수행할 수 있다. 이 과정은 모델 공급자가 의도치 않게 내부 추론을 외부로 노출했는지 판단하는 증거 수집에 유용하다.
- 학술적·공개 리서치 목적으로 모델의 추론 노출 메커니즘을 재현하고 엔트로피·복원 성공률을 계량화할 때 활용할 수 있다. ANALYSIS.md에 수록된 엔트로피 측정과 harvest/replay 실험을 바탕으로 추가 실험을 설계하거나 다른 모델·엔드포인트에서 유사성을 비교할 수 있다. 결과는 모델 설계적 취약점 평가와 책임 있는 공개에 필요한 기술적 근거로 사용될 수 있다.
- 개발자가 Anthropic 호환 엔드포인트와의 상호작용 중 thinking 블록 취급 방식을 테스트하거나 데모 인터페이스를 통해 BYOK(Bring Your Own Key) 방식의 복원 흐름을 프로토타이핑할 때 도움이 된다. 제공된 Flask 서버와 정적 프론트엔드는 빠른 시제품 검증 환경을 제공하며 로그와 비용 계산 기능으로 호출 비용을 모니터링할 수 있다. 단일 프로세스 메모리 세션 구현은 소규모 실험에 적합하고 대규모 배포에는 공유 스토어 전환이 필요하다.
시작하기
저장소 루트에서 가상환경을 만들고 의존성을 설치한 뒤 server.py를 실행하면 로컬 http://localhost:8000에서 데모가 기동합니다. 구체 명령 예시는 README의 Quick start에 포함되어 있으며 .env.example을 복사해 UPSTREAM_KEY와 MODEL을 설정해야 실제 upstream과 통신이 가능합니다. 환경에 따라 ensurepip/venv가 없으면 pip install --user 방식으로 의존성을 설치할 수 있습니다.
요구사항
- Python 런타임과 가상환경(venv)이 필요하며 requirements.txt의 파이썬 패키지들이 설치되어야 합니다.
- UPSTREAM_BASE, UPSTREAM_KEY, MODEL 등 환경변수를 설정해 Anthropic Messages API 또는 호환 엔드포인트에 접근할 수 있어야 합니다.
- 데모는 단일 프로세스에서 세션과 할당량을 메모리에 유지하도록 구현되어 있어 프로덕션 사용 시에는 공유 스토어로 세션·쿼터 저장소를 전환해야 합니다.
133
Stars
130
Forks
+211
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.