Doğrulanabilir yanıtlar

Relay’in modelinizi değiştirmediğini nasıl kontrol edersiniz

Wokey’nin olduğu gibi ileten yollarında bir yanıt, resmi upstream’in döndürdüğü ham baytlar üzerinden bir AWS Nitro Enclave tarafından düzenlenen imzalı bir kanıt taşıyabilir. Bu kanıtı, Wokey’ye güvenmeniz gerekmeden, kendi bilgisayarınızda açık kaynak bir doğrulayıcıyla kontrol edersiniz.

Yanıtın içeriği tek başına hiçbir şeyi kanıtlamaz

Bir relay, JSON’undaki model alanına istediğini yazabilir; yanıt kalitesi de öznel bir değerlendirmedir. Bir yanıtın resmi upstream’in döndürdüğüyle birebir aynı olduğunu göstermek için relay’in taklit edemeyeceği ve sizin bağımsız olarak kontrol edebileceğiniz bir imza gerekir.

Kanıt nasıl üretilir

Resmi çıkış, yalıtılmış bir güvenilir yürütme ortamı olan AWS Nitro Enclave içinde çalışır. Enclave her istek için:

  1. 1resmi upstream ile TLS bağlantısını enclave içinde sonlandırır ve upstream sertifikasını imaja gömülü CA paketiyle doğrular;
  2. 2yanıtı size akış hâlinde iletirken hash’ini hesaplar, gövdenin tamamını arabelleğe almaz;
  3. 3açılışta üretilen ve enclave’den hiç çıkmayan bir Ed25519 anahtarıyla bir beyanı imzalar. Beyanda upstream host’u, yol, yöntem, durum kodu, içerik türü ile istek gövdesinin ve yanıt gövdesinin SHA-256 değerleri yer alır;
  4. 4imzalama açık anahtarını ve enclave imaj ölçümünü (PCR0) AWS Nitro kök sertifikasına bağlayan bir AWS Nitro attestation’ı ekler.

Yerelde neleri kontrol edebilirsiniz

  • attestation zinciri, AWS dokümantasyonundan kendiniz sabitlediğiniz Nitro kök sertifikasına ulaşıyor;
  • PCR0, açık kaynak deposunda yayımlanan ve kendiniz derleyerek yeniden üretebileceğiniz değerle eşleşiyor; yani enclave o herkese açık kaynak kodu çalıştırıyor;
  • aldığınız baytların hash’i beyandaki response_body_sha256 ile aynı; yani relay tek bir baytı bile değiştirmedi;
  • beyandaki upstream host’u resmi bir host, örneğin Claude istekleri için api.anthropic.com. Yanıttaki model alanı, resmi upstream’in döndürdüğü imzalı ham baytların bir parçasıdır.

Hangi yanıtlar kanıt taşır

Koşul: API sayfasında API anahtarı için “Resmi doğrulama” seçeneğini açın.

İstekKanıt nasıl iletilir
Anthropic Messages streaming (/v1/messages, stream: true)Upstream SSE olduğu gibi iletilir, sonuna bir event: tee.proof eklenir
OpenAI Responses streaming (/v1/responses, resmi Codex rotaları)Upstream SSE olduğu gibi iletilir, sonuna bir event: tee.proof eklenir
Streaming olmayan Messages / Responsesx-wokey-tee-proof-mode: multipart başlığını gönderin, multipart/mixed alın: birinci bölüm upstream’in ham baytlarıdır (Responses için upstream SSE), ikinci bölüm kanıttır

Hangi yanıtlar kanıt taşımaz

  • Wokey’nin biçim uyumluluğu için dönüştürdüğü veya yeniden serileştirdiği yanıtlar; örneğin Claude’u Chat Completions üzerinden çağırmak. Değiştirilmiş baytları imzalamak yanıltıcı olurdu; bu yüzden bu yanıtlar hiçbir zaman kanıt taşımaz.
  • Studio dahil görsel üretimi ve görsel düzenleme her zaman enclave dışından geçer ve kanıt üretmez.
  • Enclave geçici olarak kullanılamadığında istek, enclave’siz resmi çıkışa düşer ve o yanıtın kanıtı olmaz.
  • Yanıtı olduğu gibi iletemeyen bir rotada multipart kanıt isterseniz Wokey sahte bir kanıt yerine HTTP 422 tee_proof_multipart_requires_raw_passthrough döndürür.

Tek bir kural yeter: tee.proof içermeyen her yanıtı kanıtlanmamış sayın.

Kanıt neyi göstermez

  • Bütünlüğü kanıtlar, gizliliği değil. Wokey relay’i iletim sırasında düz metni yine işler (saklanmaz). Operatörün trafiğinizi hiç okuyamamasına ihtiyacınız varsa bu mekanizma bunu kapsamaz.
  • İstek gövdesi hash’i, upstream’e gerçekten gönderilen gövdeyi kapsar. Gateway bir isteği yeniden yazdığında (örneğin Responses isteklerinde bazı alanlar tamamlanır) hash, yereldeki özgün gövdenizle eşleşmez; bu yüzden Responses kanıtları şimdilik yalnızca yanıtı kanıtlar.
  • Yeniden denemeler gibi bayt bayt aynı istekler arasında doğrulayıcı, eski bir yanıtın yeniden oynatıldığını ayırt edemez.
  • Güven kökü AWS’dir; Nitro attestation’ını AWS imzalar.

Kendiniz bir kez doğrulayın

  1. 1

    Bir anahtar için doğrulamayı açın

    API sayfasında bir API anahtarı oluşturun ve “Resmi doğrulama” seçeneğini açın.

  2. 2

    Bir streaming yanıtı kaydedin

    Streaming bir Messages isteği gönderin ve yanıtın tamamını curl -o ile olduğu gibi bir dosyaya kaydedin. Dosya event: tee.proof ile bitmelidir. Windows’ta PowerShell’in > yönlendirmesi veya Not Defteri’nde yeniden kaydetme yerine curl.exe -o kullanın; bunlar satır sonlarını veya kodlamayı değiştirir.

    Bir streaming yanıtı kaydedin
    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
  3. 3

    Açık kaynak doğrulayıcıyla kontrol edin

    <PCR0> yerine deponun README dosyasında yayımlanan kanonik PCR0 değerini yazın, ardından doğrulayıcıyı çalıştırın. Dosyayı tarayıcı doğrulayıcısına da yapıştırabilirsiniz; tüm kontroller yerelde çalışır.

    Açık kaynak doğrulayıcıyla kontrol edin
    git clone https://github.com/focuxdot/proof-of-observation
    cd proof-of-observation/verifier
    npm install
    npx tsx tee-verify-stream.ts ../../captured-response --pcr0 <PCR0>