COME FUNZIONA LA VERIFICA

Verificato nel tuo browser.
Sigillato per l’enclave.

Cosa controlla il tuo browser, cosa vede il nostro relay e per cosa ti fidi ancora di noi.

Non ancora valutato in modo indipendente

  • Enclave verificata prima

    Come lo sappiamo

    Prima del tuo primo messaggio, il verificatore open source di Tinfoil controlla nel tuo browser il report firmato dal chip. Un report che non si verifica blocca tutto.

    Scopri come
  • Sigillato nella tua scheda

    Come lo sappiamo

    Ogni richiesta è cifrata con EHBP (HPKE, AES-256-GCM) per la chiave indicata dall’attestazione, prima di partire.

    Scopri come
  • Il relay vede byte

    Come lo sappiamo

    Il nostro relay controlla il tuo account e la tua quota e passa il testo cifrato agli host di Tinfoil. Vede dimensioni, orari e il tuo account, e non conserva copie.

    Scopri come
  • Una ricevuta per risposta

    Come lo sappiamo

    Il tuo browser verifica l’enclave del modello che ha risposto, dove il suo hardware lo consente, e conserva ciò che ha trovato con la risposta.

    Scopri come

Chi potrebbe guardare, e cosa lo ferma.

  1. La rete

    Rischio residuo: Basso
    Ottiene
    Byte sigillati, dimensioni, orari
    Fermato da
    HTTPS, poi la sigillatura per l’enclave
    Resta aperto
    Dimensioni e tempi del traffico
  2. Il nostro relay

    Rischio residuo: Medio
    Ottiene
    Il tuo account, IP, dimensioni, modello
    Fermato da
    Sigillato nella tua scheda; non può aprirlo
    Resta aperto
    I metadati che vede
  3. L’host cloud

    Rischio residuo: Medio
    Ottiene
    Memoria dell’enclave cifrata
    Fermato da
    AMD SEV-SNP o Intel TDX, con attestazione
    Resta aperto
    Difetti hardware; le dichiarazioni di Tinfoil
  4. Un’enclave falsa

    Rischio residuo: Basso
    Ottiene
    Niente: la tua scheda la rifiuta
    Fermato da
    Attestazione, verificata nel tuo browser
    Resta aperto
    Codice verificato non è codice revisionato
  5. Codice del sito modificato

    Rischio residuo: Medio
    Ottiene
    Ciò che scrivi, prima della sigillatura
    Fermato da
    Manifest, firma, la tua build
    Resta aperto
    Una pagina non può garantire del tutto per sé stessa
  6. L’API per sviluppatori

    Rischio residuo: Alto
    Ottiene
    La tua richiesta, in memoria
    Fermato da
    Niente archiviazione né log, per nostra policy
    Resta aperto
    Ti fidi del nostro gateway

DENTRO UN SERVER

Dove inizia l’enclave, e dove finisce.

Scorri per smontare un server GPU: cosa sta dentro il confine dell’enclave e cosa resta fuori.

  1. Dissipatore integratoIl coperchio metallico sopra i chip della GPU.
  2. Die della GPUDove viene eseguito il modello. Secondo la documentazione di Tinfoil, le sue GPU NVIDIA (H100, H200 e B200) funzionano in modalità di confidential computing.
  3. Memoria ad alta larghezza di bandaContiene i pesi del modello, e la tua richiesta mentre viene elaborata la risposta.
  4. Macchina virtuale confidenzialeSul processore del server (AMD SEV-SNP o Intel TDX): il router di Tinfoil e il server del modello, in una memoria che l’host non può leggere. Il suo chip firma il report che il tuo browser controlla.
  5. Il confine dell’enclaveCiò da cui l’hardware tiene fuori l’host, e ciò che l’attestazione descrive. La tua richiesta viene aperta solo al suo interno.
  6. L’hostLa scheda, il suo hypervisor e i driver, e chiunque la gestisca: fuori dal confine. Trasporta byte sigillati in entrata e in uscita.

Un’illustrazione del tipo di macchina che usa Tinfoil, non l’immagine di una macchina specifica. Il registro firmato delle release di Tinfoil indica CPU, memoria e GPU di ogni enclave; il pannello Verificato dello spazio di lavoro le mostra.

Leggi il testo completoNascondi il testo completoCirca 12 minuti, sei diagrammi

In breve

Undergrove esegue modelli a pesi aperti dentro enclave hardware gestite da Tinfoil. Una parte di ciò che questo significa la verifica il tuo browser da sé; una parte è una dichiarazione di Tinfoil; e una parte dipende da noi. Ecco quale è quale.

Il tuo browser verifica

  • Che l’enclave sia hardware autentico che esegue il codice pubblicato da Tinfoil.
  • Che ogni richiesta sia sigillata per la chiave di quell’enclave prima di lasciare la tua scheda.
  • Per la ricevuta di ogni risposta, l’enclave del modello che ha risposto, dove il suo hardware lo consente.

Tinfoil dichiara

  • Di non poter accedere alle sue enclave, e che nulla al loro interno persiste tra un riavvio e l’altro.
  • Che le sue GPU supportate funzionano in modalità di confidential computing.

Ti fidi di noi per

  • Il codice che questo sito invia al tuo browser, che puoi confrontare con la build.
  • Cosa fa il relay con ciò che può vedere: dimensioni, orari e il tuo account.
  • Il gateway dell’API per sviluppatori, che legge le richieste in memoria.

Niente di tutto questo è ancora stato valutato in modo indipendente.

01 · Attestazione

Il chip garantisce per il codice.

Un’enclave hardware è una parte di un server in cui il suo stesso host non può guardare: il processore cifra la memoria dell’enclave e ne tiene fuori il software dell’host. Da sola, sarebbe solo una promessa. Ciò che la rende verificabile è l’attestazione. Quando l’enclave si avvia, il processore misura il codice che ha caricato e firma un report di quella misurazione con una chiave garantita dal produttore del chip. Il report indica anche la chiave pubblica con cui l’enclave decifrerà.

Prima del tuo primo messaggio, lo spazio di lavoro scarica quel report per l’enclave del router di Tinfoil, tramite il nostro server, ed esegue su di esso il verificatore open source di Tinfoil nel tuo browser. Scaricarlo tramite noi non cambia nulla: non possiamo falsificare la firma del chip, e un report che non supera la verifica blocca tutto.

L’enclave di TinfoilReport dell’hardwareIl processore misura il codice con cui l’enclave è stata avviata e ne firma un report, che indica la chiave pubblica dell’enclave, con una chiave garantita dal produttore del chip.
GitHub e SigstoreRelease pubblicataTinfoil compila il suo codice open source pubblicamente e registra la misurazione di ogni release nel registro di trasparenza pubblico di Sigstore.
Il tuo browserIl verificatore open source di TinfoilControlla la firma del report con le chiavi del produttore del chip, controlla il record di build firmato della release e confronta le due misurazioni.

Corrispondono: le richieste vengono sigillate per la chiave indicata nel report.

Qualcosa non va: non viene inviato nulla, e lo spazio di lavoro spiega perché.

Figura 1. Il tuo browser confronta due cose che può controllare senza fidarsi di noi: il report firmato dal chip sul codice in esecuzione nell’enclave e la release che Tinfoil ha pubblicato per quel codice. Sigilla qualcosa solo se corrispondono.

I controlli del verificatore, in ordine

  1. Trova la release che Tinfoil ha pubblicato per questo codice.
  2. Controlla il report di attestazione hardware dell’enclave con le chiavi di firma del produttore del chip.
  3. Controlla il record di build firmato della release (Sigstore, da GitHub).
  4. Confronta: il codice misurato nell’enclave deve essere esattamente quella release.
  5. Controlla che la chiave di cifratura sia quella indicata nell’attestazione dell’enclave.

Un report verificato viene riutilizzato per un massimo di dieci minuti, in questa scheda o in un’altra scheda di questo sito, e solo se è esattamente lo stesso, in base al suo SHA-256. Lo spazio di lavoro mostra ogni controllo sotto Verificato, e la pagina sull’architettura mostra il codice che lo esegue.

02 · Sigillatura

Solo l’enclave può aprirlo.

Con l’enclave verificata, ogni richiesta live viene sigillata nella tua scheda prima di uscirne. Il suo corpo viene cifrato con EHBP, il protocollo di Tinfoil per cifrare i corpi HTTP, per la chiave indicata dall’attestazione. EHBP usa HPKE, uno standard per cifrare per la chiave pubblica di qualcuno: la tua scheda crea una nuova coppia di chiavi per la richiesta, la combina con la chiave dell’enclave in un segreto condiviso e cifra con AES-256-GCM.

La nuova metà pubblica viaggia accanto al testo cifrato, come chiave incapsulata. Solo la chiave privata dell’enclave, che non lascia mai l’enclave, può trasformarla di nuovo nel segreto. La risposta torna allo stesso modo, in frame sigillati che la tua scheda apre man mano che arrivano.

La tua schedaUna nuova coppia di chiavi per ogni richiestaCombinata con la chiave pubblica verificata dell’enclave, produce un segreto che nessun altro può ricavare.
Testo cifrato + chiave incapsulata
Relay di UndergroveLo inoltraNon ha alcuna chiave che lo apra.
Gli stessi byte
L’enclave di TinfoilLo apreCon la chiave privata che non lascia mai l’enclave.
Figura 2. EHBP sigilla il corpo di ogni richiesta con HPKE: X25519, HKDF-SHA256 e AES-256-GCM. Anche la risposta torna in streaming sigillata, e si apre solo nella tua scheda. Sigilla tu stesso un messaggio e osserva ogni passaggio.

03 · Il relay

Byte che non può leggere.

Le richieste sigillate vanno al nostro relay, una funzione su Vercel, invece che direttamente a Tinfoil. Controlla chi sta chiedendo e che rientri nella sua quota, e applica alla richiesta la chiave Tinfoil di Undergrove, così non ti serve un account su Tinfoil. Rifiuta tutto ciò che non è indirizzato a uno degli host di Tinfoil o non contiene una chiave incapsulata.

Non può contare le tue parole, quindi stima il costo di ogni richiesta dalla dimensione del testo cifrato, per eccesso. Non conserva alcuna copia, e i suoi log contengono solo nomi delle route, codici di stato e tempi.

All’esterno: ciò che vede il relay

  • Il tuo account e il tuo indirizzo IP (tramite Vercel, il nostro provider di hosting)
  • Dimensioni, ora e percorso di ogni richiesta
  • Quale modello ha risposto, da un header impostato da Tinfoil
  • Se sono state usate la ricerca web o le immagini, come dichiara il tuo browser, per poterle addebitare

Sigillato all’interno: non può leggerlo

  • I tuoi messaggi e file
  • Le risposte
  • Le tue istruzioni e note di memoria
Figura 3. Il relay rifiuta tutto ciò che non è sigillato per uno degli host di Tinfoil, inserisce la nostra chiave Tinfoil e inoltra i byte. Addebita in base alle dimensioni perché non può contare le parole. Guarda una richiesta come l’ha vista il relay.

04 · Ricevute

Due enclave, e una ricevuta per ogni risposta.

L’enclave del router che il tuo browser ha verificato non esegue il modello. Apre la tua richiesta e la passa all’enclave in cui il modello gira con le sue GPU, che il router verifica da sé, secondo il suo codice pubblicato, e indica in un’intestazione della risposta.

Poi il tuo browser verifica anche quell’enclave, con lo stesso verificatore, rispetto al repository che il router di Tinfoil fissa per quel modello. Ciò che trova viene conservato con la risposta come ricevuta: l’enclave, il codice misurato al suo interno, la release a cui corrispondeva e la chiave per cui è stata sigillata la richiesta. Una ricevuta è un registro del tuo browser, non firmato da noi né da Tinfoil; l’attestazione su cui si basa è firmata da AMD e GitHub, quindi chiunque può verificarla di nuovo.

Enclave 1Il router di TinfoilVerificato prima dell’invio. Apre la richiesta.
Da enclave a enclave
Enclave 2Il modello e le sue GPUIndicato nell’header tinfoil-enclave.
Controllato di nuovo
Il tuo browserLa ricevuta della rispostaConservata con la risposta: l’enclave, il codice misurato, la release e la chiave.
Verificato
Hardware autentico, che esegue una release pubblicata del repository che il router di Tinfoil associa al modello.
Non controllato
Hardware che il verificatore nel browser non sa ancora leggere: legge i report AMD SEV-SNP, quindi un’enclave su Intel TDX viene registrata come non controllata.
Non confermato
Il controllo è stato eseguito e un passaggio non è riuscito, ad esempio un’enclave già su una release più recente di quella a cui la associa il servizio di Tinfoil.
Figura 4. Il router di Tinfoil verifica direttamente l’enclave del modello, in base al suo codice pubblicato, e la indica in un header della risposta. Il tuo browser controlla di nuovo quell’enclave per la ricevuta della risposta. L’header non è coperto dalla cifratura, quindi questo dimostra che l’enclave indicata è autentica, non che questa richiesta sia arrivata lì; quel passaggio si basa sul codice pubblicato del router.

05 · L’API per sviluppatori

Un percorso diverso, detto chiaramente.

Il codice che chiama l’API per sviluppatori invia la richiesta via HTTPS al nostro gateway, che la legge: per controllarla, applicare i limiti ed eseguire gli strumenti. La legge in memoria e non la memorizza né la registra mai. Poi il gateway fa ciò che il tuo browser fa nello spazio di lavoro: verifica l’enclave con l’SDK di Tinfoil e sigilla la richiesta per quell’enclave.

Quindi su questo percorso ci affidi la richiesta mentre il gateway la gestisce. Ciò che puoi ancora verificare è l’enclave: ogni risposta della route di Tinfoil contiene intestazioni che indicano il bundle di attestazione verificato dal gateway, perché tu possa verificarlo di nuovo. La documentazione per sviluppatori spiega come.

Spazio di lavoro
Il tuo browserVerifica, poi sigilla
RelayNon può leggerlo
EnclaveLo apre
API per sviluppatori
Il tuo serverInvia tramite HTTPS
Il nostro gatewayLa legge in memoria per controllarla; non la conserva né la registra mai
EnclaveVerificato prima dal gateway
Figura 5. Due strade verso le stesse enclave. Nello spazio di lavoro sigilla il tuo browser; tramite l’API lo fa il nostro gateway, dopo aver letto la richiesta in memoria per controllarla. Ogni risposta dell’API dalle enclave di Tinfoil indica il bundle di attestazione verificato dal gateway, che GET /v1/attestation?sha256= ti restituisce per controllarlo di nuovo.

06 · Questa pagina

Verificare il codice che verifica.

Tutto quanto descritto sopra gira in codice che questo sito invia al tuo browser, quindi anche quel codice conta. Ogni build scrive un manifest: lo SHA-256 di ogni file servito dal sito, e il commit da cui è stata compilata.

Una pagina non può garantire del tutto per sé stessa: un controllo eseguito nella pagina è onesto solo quanto la pagina. Il controllo più solido non ci coinvolge affatto: ricompila tu stesso il commit nell’ambiente bloccato e confronta i manifest.

La buildUn manifestLo SHA-256 di ogni file servito dal sito, e il commit da cui proviene.
Pubblicato con il sito
Il tuo browserCalcola l’hash di ciò che ha caricatoOgni file diverso viene indicato.
Oppure, sul tuo computer
ChiunqueRicompila il commitE confronta i due manifest.
Figura 6. Verifica questa pagina calcola l’hash dei file caricati dal tuo browser e li confronta con il manifest della build e del suo commit. Ricompilare quel commit nell’ambiente fissato (npm run rebuild:site) dovrebbe produrre lo stesso manifest, byte per byte; chiunque può farlo e confrontare, senza chiederci nulla.

07 · Limiti

Cosa questo non dimostra.

  • Le dichiarazioni di Tinfoil restano di Tinfoil. Che non possa accedere alle sue enclave, che nulla al loro interno persista tra un riavvio e l’altro e che le sue GPU funzionino in modalità di confidential computing è ciò che afferma Tinfoil. Il tuo browser verifica che l’hardware sia autentico ed esegua il codice pubblicato.
  • L’hardware fa parte di ciò di cui ti fidi. La protezione vale quanto i processori, il loro firmware e le chiavi dei produttori dei chip, e in passato sono già state pubblicate vulnerabilità delle enclave hardware.
  • Un passaggio si basa sul codice pubblicato. Che la tua richiesta sia passata dal router all’enclave del modello si basa sul codice pubblicato del router. Il tuo browser può verificare l’enclave del modello solo su AMD SEV-SNP; su Intel TDX risulta come non verificata.
  • Il relay vede l’esterno. Il tuo account, il tuo indirizzo IP, le dimensioni, gli orari e quale modello ha risposto.
  • Pubblicato non significa revisionato. Il verificatore mostra quale codice viene eseguito, non che il codice sia privo di difetti.
  • Nessuna valutazione indipendente, per ora. Finora nessun revisore ha esaminato questo design o il suo codice.

Per sapere chi potrebbe vedere cosa, osservatore per osservatore, leggi il modello di minaccia.

08 · Approfondisci

Guarda ogni parte in funzione.