Cara mengecek bahwa relay tidak menukar model Anda
Pada jalur Wokey yang meneruskan respons apa adanya, sebuah respons dapat membawa bukti bertanda tangan yang diterbitkan AWS Nitro Enclave atas byte mentah yang dikembalikan upstream resmi. Anda memeriksanya di komputer sendiri dengan verifier open source, tanpa perlu memercayai Wokey.
Isi respons saja tidak membuktikan apa-apa
Relay bisa menulis apa saja di field model pada JSON-nya, dan kualitas jawaban hanyalah penilaian subjektif. Untuk menunjukkan bahwa sebuah respons persis sama dengan yang dikembalikan upstream resmi, Anda memerlukan tanda tangan yang tidak bisa dipalsukan relay dan bisa Anda periksa secara independen.
Bagaimana bukti dibuat
Jalur keluar resmi berjalan di dalam AWS Nitro Enclave, sebuah trusted execution environment yang terisolasi. Untuk setiap request, enclave:
- 1mengakhiri koneksi TLS ke upstream resmi di dalam enclave dan memvalidasi sertifikat upstream dengan bundel CA yang dibangun ke dalam image;
- 2mengalirkan respons kembali kepada Anda sambil menghitung hash-nya, tanpa menampung seluruh isi respons;
- 3menandatangani sebuah pernyataan dengan kunci Ed25519 yang dibuat saat boot dan tidak pernah meninggalkan enclave. Pernyataan itu memuat host upstream, path, metode, status, content type, serta SHA-256 dari isi request dan isi respons;
- 4melampirkan atestasi AWS Nitro yang mengikat kunci publik penanda tangan dan nilai pengukuran image enclave (PCR0) ke sertifikat root AWS Nitro.
Apa yang bisa Anda periksa secara lokal
- atestasi terhubung berantai ke sertifikat root Nitro yang Anda tetapkan sendiri dari dokumentasi AWS;
- PCR0 cocok dengan nilai yang dipublikasikan di repositori open source, yang bisa Anda reproduksi dengan membangunnya sendiri, sehingga enclave memang menjalankan kode sumber publik itu;
- byte yang Anda terima menghasilkan hash yang sama dengan response_body_sha256 di pernyataan, sehingga relay tidak mengubah satu byte pun;
- host upstream di pernyataan adalah host resmi, misalnya api.anthropic.com untuk request Claude. Field model di respons adalah bagian dari byte mentah bertanda tangan yang dikembalikan upstream resmi.
Respons mana yang membawa bukti
Syarat: aktifkan “Verifikasi resmi” untuk API key di halaman API.
| Request | Cara bukti dikirim |
|---|---|
| Anthropic Messages streaming (/v1/messages, stream: true) | SSE upstream diteruskan apa adanya, diikuti event: tee.proof di akhir |
| OpenAI Responses streaming (/v1/responses, rute Codex resmi) | SSE upstream diteruskan apa adanya, diikuti event: tee.proof di akhir |
| Messages / Responses non-streaming | Kirim header x-wokey-tee-proof-mode: multipart untuk mendapatkan multipart/mixed: bagian pertama adalah byte mentah upstream (SSE upstream untuk Responses), bagian kedua adalah bukti |
Respons mana yang tidak membawa bukti
- Respons yang dikonversi atau diserialisasi ulang oleh Wokey demi kompatibilitas format, seperti memanggil Claude melalui Chat Completions. Menandatangani byte yang sudah diubah akan menyesatkan, sehingga respons seperti ini tidak pernah membawa bukti.
- Pembuatan dan pengeditan gambar, termasuk Studio, selalu tidak melewati enclave dan tidak menghasilkan bukti.
- Ketika enclave sedang tidak tersedia untuk sementara, request beralih ke jalur keluar resmi tanpa enclave, dan respons itu tidak punya bukti.
- Jika Anda meminta bukti multipart pada rute yang tidak bisa meneruskan respons apa adanya, Wokey mengembalikan HTTP 422 tee_proof_multipart_requires_raw_passthrough, bukan bukti palsu.
Aturannya hanya satu: anggap setiap respons tanpa tee.proof sebagai belum terbukti.
Apa yang tidak ditunjukkan bukti
- Bukti ini membuktikan integritas, bukan kerahasiaan. Relay Wokey tetap menangani plaintext saat meneruskan (tidak disimpan). Jika Anda membutuhkan operator yang sama sekali tidak bisa membaca trafik Anda, mekanisme ini tidak mencakupnya.
- Hash isi request mencakup isi yang benar-benar dikirim ke upstream. Ketika gateway menulis ulang request (misalnya request Responses dilengkapi beberapa field), hash itu tidak akan cocok dengan isi asli di sisi Anda, sehingga bukti untuk Responses saat ini hanya membuktikan respons.
- Di antara request yang identik byte demi byte, seperti percobaan ulang, verifier tidak bisa membedakan respons lama yang diputar ulang.
- Akar kepercayaannya adalah AWS, yang menandatangani atestasi Nitro.
Coba verifikasi sendiri
- 1
Aktifkan verifikasi untuk sebuah key
Buat API key di halaman API dan aktifkan “Verifikasi resmi”.
- 2
Simpan satu respons streaming
Kirim request Messages streaming dan simpan seluruh respons ke file apa adanya dengan curl -o. File itu seharusnya diakhiri event: tee.proof. Di Windows, gunakan curl.exe -o, bukan pengalihan > di PowerShell atau menyimpan ulang di Notepad, karena keduanya mengubah akhir baris atau encoding.
Simpan satu respons streamingcurl -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
Periksa dengan verifier open source
Ganti <PCR0> dengan PCR0 kanonis yang dipublikasikan di README repositori, lalu jalankan verifier. Anda juga bisa menempel isi file ke verifier browser; semua pemeriksaan berjalan secara lokal.
Periksa dengan verifier open sourcegit 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>