Phản hồi có thể xác minh

Cách kiểm tra relay có tráo mô hình của bạn không

Trên các đường chuyển tiếp nguyên trạng của Wokey, phản hồi có thể kèm một bằng chứng có chữ ký do AWS Nitro Enclave cấp trên các byte gốc mà upstream chính thức trả về. Bạn tự kiểm tra trên máy của mình bằng trình xác minh mã nguồn mở, không cần tin Wokey.

Chỉ nội dung phản hồi thì không chứng minh được gì

Relay có thể ghi bất cứ thứ gì vào trường model trong JSON, còn chất lượng câu trả lời chỉ là đánh giá chủ quan. Để chứng minh một phản hồi đúng y như upstream chính thức trả về, bạn cần một chữ ký mà relay không thể giả mạo và bạn có thể tự kiểm tra độc lập.

Bằng chứng được tạo ra như thế nào

Lối ra chính thức chạy bên trong AWS Nitro Enclave, một môi trường thực thi tin cậy được cô lập. Với mỗi yêu cầu, enclave sẽ:

  1. 1kết thúc kết nối TLS đến upstream chính thức ngay trong enclave và xác thực chứng chỉ upstream bằng bộ CA được đóng gói sẵn trong image;
  2. 2stream phản hồi về cho bạn đồng thời tính hash, không lưu đệm toàn bộ nội dung;
  3. 3ký một bản khai bằng khóa Ed25519 được tạo khi khởi động và không bao giờ rời khỏi enclave. Bản khai liệt kê host upstream, đường dẫn, phương thức, mã trạng thái, content type, cùng SHA-256 của nội dung yêu cầu và nội dung phản hồi;
  4. 4đính kèm AWS Nitro attestation, gắn khóa công khai dùng để ký và giá trị đo của image enclave (PCR0) với chứng chỉ gốc AWS Nitro.

Những gì bạn có thể kiểm tra trên máy

  • attestation nối chuỗi đến chứng chỉ gốc Nitro mà bạn đã cố định từ tài liệu của AWS;
  • PCR0 khớp với giá trị được công bố trong kho mã nguồn mở, mà bạn có thể tự build để tái tạo, nên enclave đang chạy đúng mã nguồn công khai đó;
  • hash của các byte bạn nhận được khớp với response_body_sha256 trong bản khai, nên relay không thay đổi dù chỉ một byte;
  • host upstream trong bản khai là host chính thức, ví dụ api.anthropic.com với yêu cầu Claude. Trường model trong phản hồi nằm trong các byte gốc đã ký do upstream chính thức trả về.

Phản hồi nào có kèm bằng chứng

Điều kiện: bật "Xác minh chính thức" cho khóa API trên trang API.

Yêu cầuCách gửi bằng chứng
Anthropic Messages streaming (/v1/messages, stream: true)SSE từ upstream được chuyển tiếp nguyên trạng, kèm một event: tee.proof ở cuối
OpenAI Responses streaming (/v1/responses, các route Codex chính thức)SSE từ upstream được chuyển tiếp nguyên trạng, kèm một event: tee.proof ở cuối
Messages / Responses không streamingGửi header x-wokey-tee-proof-mode: multipart để nhận multipart/mixed: phần một là các byte gốc từ upstream (với Responses là SSE từ upstream), phần hai là bằng chứng

Phản hồi nào không có bằng chứng

  • Các phản hồi Wokey chuyển đổi hoặc tuần tự hóa lại để tương thích định dạng, ví dụ gọi Claude qua Chat Completions. Ký lên các byte đã bị sửa sẽ gây hiểu lầm, nên các phản hồi này không bao giờ kèm bằng chứng.
  • Tạo ảnh và chỉnh sửa ảnh, kể cả Studio, luôn đi vòng qua enclave và không tạo bằng chứng.
  • Khi enclave tạm thời không khả dụng, yêu cầu chuyển sang lối ra chính thức không qua enclave, và phản hồi đó không có bằng chứng.
  • Nếu bạn yêu cầu bằng chứng multipart trên một route không thể chuyển tiếp phản hồi nguyên trạng, Wokey trả về HTTP 422 tee_proof_multipart_requires_raw_passthrough thay vì một bằng chứng giả.

Chỉ cần một quy tắc: phản hồi nào không có tee.proof thì xem là chưa được chứng minh.

Những gì bằng chứng không cho thấy

  • Nó chứng minh tính toàn vẹn, không chứng minh tính bảo mật. Relay của Wokey vẫn xử lý văn bản gốc khi truyền (không lưu lại). Nếu bạn cần nhà vận hành hoàn toàn không đọc được lưu lượng, cơ chế này không đáp ứng.
  • Hash nội dung yêu cầu ứng với nội dung thực sự gửi lên upstream. Khi gateway viết lại yêu cầu (ví dụ yêu cầu Responses được điền thêm một số trường), nó sẽ không khớp với nội dung gốc trên máy bạn, nên bằng chứng Responses hiện chỉ chứng minh phản hồi.
  • Giữa các yêu cầu giống nhau từng byte, như khi thử lại, trình xác minh không phân biệt được một phản hồi cũ bị phát lại.
  • Gốc tin cậy là AWS, bên ký Nitro attestation.

Tự xác minh một lần

  1. 1

    Bật xác minh cho khóa

    Tạo khóa API trên trang API và bật "Xác minh chính thức".

  2. 2

    Lưu một phản hồi streaming

    Gửi một yêu cầu Messages streaming và lưu nguyên trạng toàn bộ phản hồi vào tệp bằng curl -o. Cuối tệp phải có event: tee.proof. Trên Windows, hãy dùng curl.exe -o thay vì chuyển hướng > của PowerShell hoặc lưu lại bằng Notepad, vì chúng làm thay đổi ký tự xuống dòng hoặc mã hóa.

    Lưu một phản hồi streaming
    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

    Kiểm tra bằng trình xác minh mã nguồn mở

    Thay <PCR0> bằng PCR0 chuẩn được công bố trong README của kho mã, rồi chạy trình xác minh. Bạn cũng có thể dán nội dung tệp vào trình xác minh trên trình duyệt; mọi bước kiểm tra đều chạy cục bộ.

    Kiểm tra bằng trình xác minh mã nguồn mở
    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>