무료 도구 · 로컬 실행

relay가 공식 응답을 돌려줬는지 검증하기

증명이 포함된 API 응답을 아래 검증기에 붙여넣으세요. 브라우저에서 서명을 확인하고, 응답이 어느 공식 업스트림 호스트에서 왔는지와 relay가 응답을 바꿨는지 알려 줍니다. 데이터는 컴퓨터 밖으로 나가지 않습니다.

  • 브라우저 안에서만 처리
  • 오픈 소스 검증기
  • 무료, 가입 불필요

3단계로 응답 검증하기

  1. 1

    키 검증 켜기

    API 페이지에서 해당 키의 "공식 검증"을 켜세요. 그대로 전달되는 Claude Messages와 GPT Responses 응답에만 증명이 포함됩니다.

  2. 2

    응답 전체 저장하기

    스트리밍 요청을 보내고 curl -o로 응답 바이트를 그대로 파일에 기록하세요. 마지막은 event: tee.proof여야 합니다. 비스트리밍 요청에는 x-wokey-tee-proof-mode: multipart 헤더를 추가하고 multipart 응답 전체를 저장하세요. Windows에서는 PowerShell의 > 리디렉션이나 메모장 다시 저장 대신 curl.exe -o를 사용하세요. 이 방법들은 줄바꿈이나 인코딩을 바꿉니다.

  3. 3

    검증기에 붙여넣기

    응답 전체를 아래 검증기에 붙여넣거나 끌어다 놓고 검증을 시작하세요. 검증은 이 페이지의 브라우저 안에서 실행되며 네트워크 요청을 보내지 않습니다.

응답 전체 저장하기
curl -sN https://api.wokey.ai/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":256,"stream":true,"messages":[{"role":"user","content":"Hello"}]}' \
  -o captured-response
Proof-of-Observation 브라우저 검증기

위 검증기는 오픈 소스 저장소에서 GitHub Pages로 직접 게시되며 Wokey 서버를 거치지 않습니다. 따라서 Wokey가 항상 "통과"라고 표시하는 검증기로 바꿔치기할 수 없습니다. 페이지를 저장해 오프라인으로 열 수도 있습니다.

검증기는 Enclave 이미지의 측정값인 PCR0를 확인하도록 요청합니다. 응답과 함께 오는 값이 아니라, 누구나 소스에서 재현할 수 있도록 오픈 소스 저장소에 공개된 값을 사용하세요.

결과 읽는 법

모든 검사 통과
attestation이 AWS Nitro 루트 인증서까지 연결되고, PCR0가 공개 값과 일치하며, 서명이 유효하고, 응답 바이트가 서명된 해시와 일치합니다. 표시된 업스트림 호스트(예: api.anthropic.com)가 응답의 출처이며 relay는 응답을 바꾸지 않았습니다.
증명은 유효하지만 응답 본문 없음
tee.proof 이벤트만 붙여넣었습니다. 증명이 실제 Enclave에서 서명되었음은 확인되지만, 본문이 없으면 해시를 다시 계산할 수 없어 보신 내용이 바뀌지 않았다는 것은 보여 줄 수 없습니다. 응답 전체를 붙여넣으세요.
PCR0 불일치
attestation은 진짜지만 Enclave가 감사된 이미지를 실행하고 있지 않습니다. 이 응답은 증명되지 않은 것으로 취급하세요.
서명 또는 해시 검사 실패
증명이나 응답이 변경되었거나, 저장 또는 복사 중에 바이트가 바뀌었습니다(예: 인코딩 변환). curl -o로 원본 응답을 다시 저장하세요. 그래도 실패하면 신뢰하지 마세요. 저장 도구가 줄바꿈을 CRLF로 바꾸었거나 파일을 UTF-16으로 저장한 경우 검증기가 원래대로 되돌리고 그 사실을 알려 줍니다. 결과는 여전히 서명된 해시로 결정됩니다.
tee.proof 없음
증명되지 않은 응답입니다. 키에 검증이 켜져 있지 않거나, 요청이 형식 변환을 거쳤거나, 당시 Enclave를 사용할 수 없었을 수 있습니다. 증명되지 않은 것으로 취급하세요.

다른 relay 확인 방법: 각 방법으로 알 수 있는 것과 알 수 없는 것

업스트림 서명이 없으면 간접적인 검사만 가능합니다. 명백한 문제는 드러나지만, 최선의 결과도 "의심스러운 점을 찾지 못함"일 뿐 "공식으로 확인됨"은 될 수 없습니다. 일반적인 방법과 그 한계는 다음과 같습니다.

토큰 수하는 법: 같은 고정 프롬프트를 공식 API와 relay의 같은 모델에 보내고 usage의 input_tokens를 비교합니다.알 수 있음: 다른 벤더의 모델로 바꿔치기: 벤더마다 토크나이저가 달라 수치가 확연히 어긋납니다.알 수 없음: 같은 벤더의 모델은 토크나이저를 공유하는 경우가 많아 같은 계열의 더 저렴한 모델로 바꾸면 알아챌 수 없습니다. 공식 기준값도 필요합니다.
프롬프트 캐싱하는 법: 모델의 최소 캐시 길이보다 긴 같은 접두부를 두 번 보냅니다. 두 번째 응답에 cache_read_input_tokens가 표시되고 캐시 읽기 요금으로 청구되는지 확인합니다.알 수 있음: 백엔드가 공식 업스트림이 아니거나, relay가 캐싱을 깨뜨리면서도 정가를 청구하는 경우.알 수 없음: 캐시 적중은 백엔드가 캐싱을 지원한다는 것만 보여 줄 뿐 어떤 모델인지는 알려 주지 않습니다.
긴 컨텍스트하는 법: 공칭 컨텍스트 한도에 가까운 텍스트를 보내되 중간에 핵심 정보 하나를 숨기고, 마지막에 그것을 질문합니다.알 수 있음: 컨텍스트가 더 작은 모델의 사칭, 또는 relay가 몰래 기록을 잘라 내는 경우.알 수 없음: 정답을 맞혀도 모델 버전은 증명되지 않으며, 이 검사가 토큰 비용이 가장 큽니다.
프로토콜 세부 사항하는 법: 스트리밍 이벤트 순서(message_start부터 message_stop까지), 메시지 id 형식, 헤더, 오류 형식을 공식 문서와 비교합니다.알 수 있음: 다른 모델의 출력을 Claude 형식으로 억지로 감싼 조잡한 래퍼.알 수 없음: 이 필드들은 모두 쉽게 위조할 수 있어, 정교한 래퍼라면 똑같이 맞출 수 있습니다.

의존하면 안 되는 방법

  • 모델에게 "너는 누구야", "지식 기준일이 언제야"라고 묻기: 공식 모델도 자주 틀리게 답하며, relay는 시스템 프롬프트로 어떤 모델이든 Claude라고 말하게 할 수 있습니다.
  • 답변 품질이나 속도를 느낌으로 판단하기: 프롬프트, 부하, 무작위성에 따라 차이가 너무 큽니다. 참고용으로만 보세요.

아무 relay나 원클릭으로 검사하는 도구가 없는 이유

  • 검사하려면 해당 relay용 API 키로 요청을 보내야 합니다. 이를 저희 서버를 통해 보내면 다른 서비스의 키를 저희에게 맡기는 셈이 되며, 저희는 그런 키를 보관하고 싶지 않습니다.
  • 브라우저에서 relay를 직접 호출하면 대부분의 relay가 교차 출처 요청을 허용하지 않아 실패합니다.
  • 위 검사로는 "의심스러움" 또는 "발견된 문제 없음"만 말할 수 있습니다. 이를 점수로 포장하면 권위 있어 보이지만 오해를 부릅니다.

Relay 자가 점검 체크리스트

relay를 고르기 전이나 지금 쓰는 relay가 의심스러울 때 다음 순서로 확인하세요.

  • 응답에 오프라인으로 검증할 수 있는 업스트림 증명이 있나요? 있다면 서명된 업스트림 호스트가 공식 호스트인가요? 예: Claude는 api.anthropic.com
  • 고정 프롬프트의 input_tokens가 공식 API와 일치하나요?
  • 긴 접두부를 반복한 뒤 응답에 캐시 읽기가 표시되고 캐시 요금으로 청구되나요?
  • 공칭 한도에 가까운 컨텍스트가 잘리지 않고 처리되나요?
  • relay가 업스트림 출처와 요청 내용 기록·저장 여부를 공개하고 있나요?
  • 검증할 수 없는 relay에는 비밀 정보, 고객 데이터 등 민감한 내용을 보내지 마세요.

증명이 보여 주는 것과 보여 주지 않는 것

보여 주는 것

  • 응답이 어느 공식 업스트림 호스트에서 왔는지.
  • 응답 바이트가 model 필드를 포함해 업스트림이 반환한 것과 정확히 같으며 relay가 아무것도 바꾸지 않았다는 것.
  • Enclave가 공개 소스로 빌드한 이미지를 실행한다는 것(PCR0 재현 가능).

보여 주지 않는 것

  • 기밀성: relay는 전달하는 동안 여전히 평문을 다룹니다.
  • 증명이 없는 응답(형식 변환된 요청, 이미지 생성 등).
  • 바이트 단위로 동일한 요청 사이에서 이전 응답이 재전송(replay)되는 경우.
증명 방식 자세히 보기

자주 묻는 질문

붙여넣은 응답이 어딘가에 업로드되나요?

아니요. 검증기는 프런트엔드 전용 페이지로, 브라우저에 내장된 WebCrypto로 서명을 확인하며 네트워크 요청을 보내지 않습니다. 브라우저 개발자 도구의 네트워크 탭에서 확인하거나, 검증기를 저장해 오프라인으로 사용할 수 있습니다.

AI API relay는 합법인가요?

사용자와 relay가 운영되는 지역의 법률, 그리고 업스트림 제공업체의 이용 약관에 따라 달라지며, 이는 지역과 제공업체마다 다릅니다. 이 페이지는 법률 자문이 아닙니다. 사용하기 전에 업스트림 약관과 현지 규정을 확인하세요. 민감하거나 규제 대상인 데이터라면 더욱 그렇습니다. 이 도구는 기술적으로 확인할 수 있는 한 가지 질문에만 답합니다: 받은 응답이 공식 업스트림의 원본인가.

relay가 "성능을 떨어뜨린" 모델을 제공하는지 어떻게 알 수 있나요?

relay를 거치면 모델이 나빠진 것처럼 느껴지는 이유는 보통 다음 중 하나입니다: 더 저렴한 모델로 몰래 바꾸기, 대화 기록 잘라 내기, 출력 한도 낮추기, thinking 끄기. 증명된 응답은 첫 번째를 배제합니다. 서명이 업스트림의 원본 바이트를 대상으로 하므로 model 필드는 공식 API에서 온 것입니다. 잘라 내기와 파라미터 변경은 요청 측에서 일어나므로 응답 증명이 다루지 않습니다. 이 경우 위의 긴 컨텍스트 검사와 토큰 수 검사가 도움이 됩니다.

Claude 미러 사이트와 공식 사이트는 무엇이 다른가요?

공식 제품은 claude.ai와 Anthropic API입니다. 미러 사이트는 제3자가 운영하는 채팅 페이지로, 공식 API, 공유 계정 또는 다른 벤더의 모델을 사용할 수 있고 기능과 개인정보 처리방침도 제각각이며, 사용자는 대개 어느 쪽인지 알 수 없습니다. Claude Code나 Cursor 같은 도구에서 API를 사용한다면 API relay의 문제이며 확인 방법은 같습니다: 직접 검증할 수 있는 업스트림 증명을 제공할 수 있는가.

응답에 tee.proof가 없으면 어떻게 하나요?

키에 "공식 검증"이 켜져 있는지, 그리고 그대로 전달되는 경로인 Claude Messages 또는 GPT Responses를 호출하고 있는지 확인하세요. Chat Completions를 통한 Claude처럼 형식 변환된 요청에는 증명이 포함되지 않습니다. Enclave를 일시적으로 사용할 수 없으면 요청이 대체 경로로 처리되며 그 응답에도 증명이 없습니다. 증명이 없는 응답은 모두 증명되지 않은 것으로 취급하세요.

이 도구로 다른 relay도 검증할 수 있나요?

검증기는 Proof-of-Observation 증명이 포함된 응답만 확인합니다. 프로토콜은 오픈 소스이므로 어떤 relay든 구현할 수 있습니다. 구현하지 않은 relay에는 위의 간접 검사만 적용되며, 최선의 결과도 "의심스러운 점을 찾지 못함"입니다.