Wiki di ZooBC
Integrazioni

Verificare un file scaricato

Un wallet falso può apparire e comportarsi esattamente come quello vero fino al momento in cui invia la tua frase di recupero da qualche altra parte. Verifica quindi il file stesso, non il sito da cui l'hai preso. ZooBC registra sulla catena le impronte delle sue release, e chiunque può confrontare con esse l'impronta di un file, in un browser o da un terminale.

Impronte sulla catena

L'impronta è l'hash SHA-256 del file. Cambia un solo byte del file e l'hash cambia completamente, quindi un hash che corrisponde significa esattamente lo stesso file.

La catena conserva gli hash in due posti:

  • Il registro delle release. L'autorità di release, un account indicato nella genesi della catena, registra ogni release con la sua stringa di versione e un hash del manifest di 32 byte, e può revocarla in seguito. Sono elencati anche singoli file: il wallet, l'explorer e i file degli indirizzi hanno ciascuno il proprio hash, e la voce di un pacchetto è lo SHA-256 del suo file SHA256SUMS. Due terzi dei seggi registrati possono anche porre il veto a una release, e sostituire l'autorità dopo una settimana di voti (release e aggiornamenti).
  • I messaggi delle transazioni. Qualsiasi transazione può contenere un hash nel suo messaggio, e l'hash può essere cercato.

Poiché questi record fanno parte della catena, ogni nodo dà la stessa risposta su di essi.

La pagina /verify

Ogni gateway serve una pagina su /verify. Trascinaci sopra un file e la pagina:

  1. calcola l'hash SHA-256 dentro il tuo browser; il file non viene mai caricato;
  2. cerca l'hash nell'elenco delle release (/api/v1/release/list) e nei messaggi delle transazioni (/api/v1/search/transactions?q= seguito dall'hash);
  3. riporta uno di tre stati: on-chain quando l'hash è registrato sulla catena; ancoraggio in attesa quando il file dovrebbe avere il sostegno della catena ma il suo hash non è registrato, quindi ne risponde solo il gateway; revocato quando l'autorità di release lo ha ritirato.

Quando si carica, la pagina legge anche l'autorità di release attuale (/api/v1/release/authority) e ti avvisa quando è in corso un cambio di autorità. Un file revocato è un file ritirato; cancellalo.

Il file viene sottoposto a hash SHA-256 dentro il browser, senza mai essere caricato, e l'hash viene cercato nel registro delle release o in una transazione che lo contiene; oppure verificalo tu stesso con sha256sum e l'elenco delle release
Il file viene sottoposto a hash SHA-256 dentro il browser, senza mai essere caricato, e l'hash viene cercato nel registro delle release o in una transazione che lo contiene; oppure verificalo tu stesso con sha256sum e l'elenco delle release

Senza il sito web

Non devi nemmeno fidarti della pagina. Calcola tu stesso l'hash e chiedi l'elenco delle release a qualsiasi nodo, anche a uno che gestisci tu:

sha256sum wallet.html
GET /api/v1/release/list

Se l'hash che hai calcolato compare per una release non revocata, hai in mano il file rilasciato. Per un pacchetto, confronta l'hash del suo file SHA256SUMS con l'elenco, poi esegui sha256sum -c SHA256SUMS accanto ai file del pacchetto. Ogni nodo risponde dalla stessa catena, quindi non devi fidarti di nessun singolo sito web.

Che cosa pubblica il gateway

Ogni gateway pubblica un manifest di verifica con l'hash del file del wallet e l'hash del suo archivio zip. Lo zip è costruito in modo riproducibile: gli stessi file danno sempre lo stesso archivio, e quindi lo stesso hash, il che permette a chiunque di ricostruirlo e confrontarlo.

Che cosa non dimostra nulla

  • Un lucchetto (HTTPS) dimostra solo quale sito hai raggiunto, non che cosa fa il file.
  • La dimensione del file è facile da copiare.
  • Un saldo che sembra giusto non dice nulla su dove finirà poi la tua frase di recupero.

Solo l'hash, confrontato con la catena, ti dice che il file è quello rilasciato.

Vedi anche