Wiki de ZooBC
Integraciones

Comprobar un archivo descargado

Una billetera falsa puede parecer y comportarse exactamente igual que la auténtica hasta el momento en que envía tu frase de recuperación a otro sitio. Así que comprueba el archivo en sí, no el sitio web del que lo obtuviste. ZooBC registra en la cadena las huellas de sus versiones, y cualquiera puede comparar con ellas la huella de un archivo, en un navegador o desde una terminal.

Huellas en la cadena

La huella es el hash SHA-256 del archivo. Si cambias un solo byte del archivo, el hash cambia por completo, así que un hash que coincide significa exactamente el mismo archivo.

La cadena guarda hashes en dos lugares:

  • El registro de versiones. La autoridad de versiones, una cuenta nombrada en el génesis de la cadena, registra cada versión con su cadena de versión y un hash de manifiesto de 32 bytes, y puede revocarla más adelante. También se listan archivos sueltos: la billetera, el explorador y los archivos de direcciones tienen cada uno su propio hash, y la entrada de un paquete es el SHA-256 de su archivo SHA256SUMS. Dos tercios de las plazas registradas también pueden vetar una versión, y sustituir a la autoridad tras una semana de votos (versiones y actualizaciones).
  • Los mensajes de las transacciones. Cualquier transacción puede llevar un hash en su mensaje, y ese hash puede buscarse.

Como estos registros forman parte de la cadena, todos los nodos dan la misma respuesta sobre ellos.

La página /verify

Cada pasarela sirve una página en /verify. Suelta un archivo en ella y la página:

  1. calcula el hash SHA-256 dentro de tu navegador; el archivo nunca se sube;
  2. busca el hash en la lista de versiones (/api/v1/release/list) y en los mensajes de las transacciones (/api/v1/search/transactions?q= seguido del hash);
  3. indica uno de tres estados: en la cadena cuando el hash está registrado en la cadena; anclaje pendiente cuando el archivo debería tener respaldo en la cadena pero su hash no está registrado, así que solo la pasarela responde de él; revocado cuando la autoridad de versiones lo ha retirado.

Al cargarse, la página también lee la autoridad de versiones actual (/api/v1/release/authority) y te avisa cuando hay un cambio de autoridad pendiente. Un archivo revocado es uno que se retiró; bórralo.

El archivo se convierte con SHA-256 en un hash dentro del navegador, nunca se sube, y el hash se busca en el registro de versiones o en una transacción que lo lleve; o compruébalo tú mismo con sha256sum y la lista de versiones
El archivo se convierte con SHA-256 en un hash dentro del navegador, nunca se sube, y el hash se busca en el registro de versiones o en una transacción que lo lleve; o compruébalo tú mismo con sha256sum y la lista de versiones

Sin el sitio web

Ni siquiera tienes que confiar en la página. Calcula tú mismo el hash y pide a cualquier nodo, incluido uno que ejecutes tú, la lista de versiones:

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

Si el hash que calculaste figura en una versión que no ha sido revocada, tienes el archivo publicado. Para un paquete, comprueba el hash de su archivo SHA256SUMS con la lista y después ejecuta sha256sum -c SHA256SUMS junto a los archivos del paquete. Todos los nodos responden a partir de la misma cadena, así que no hay que confiar en ningún sitio web concreto.

Lo que publica la pasarela

Cada pasarela publica un manifiesto de verificación con el hash del archivo de la billetera y el hash de su archivo zip. El zip se construye de forma reproducible: los mismos archivos dan siempre el mismo archivo comprimido y, por tanto, el mismo hash, lo que permite a cualquiera reconstruirlo y comparar.

Lo que no demuestra nada

  • Un candado (HTTPS) solo demuestra a qué sitio web llegaste, no lo que hace el archivo.
  • El tamaño del archivo es fácil de copiar.
  • Un saldo que parece correcto no dice nada sobre adónde va a ir después tu frase de recuperación.

Solo el hash, comparado con la cadena, te dice que el archivo es el que se publicó.

Véase también