base de conocimientos Debajo del capó
Verificando la construcción
El código abierto sólo ayuda si el código que está ejecutando es el código que se publicado. Nymchat está construido de forma determinista para que puedas comprobarlo tú mismo, desde dentro del app o desde un terminal.
Esta página está traducida automáticamente para mayor comodidad. La versión original en inglés es la que se aplica.
Construcciones reproducibles
La construcción de la aplicación emite un build-manifest.json que contiene la confirmación de origen, un
Hash SHA-256 de cada activo HTML, JavaScript y CSS servido, y un único
bundleHash sobre todo ese conjunto de activos.
El resultado depende únicamente del contenido de origen; incluso el tiempo de compilación registrado es el
marca de tiempo de la confirmación en lugar del momento en que se ejecutó la compilación, por lo que cualquiera que reconstruya la misma
commit obtiene archivos de bytes idénticos y lo mismo bundleHash.
Luego, una acción de GitHub reconstruye cada confirmación de forma independiente y firma la procedencia de la compilación.
certificaciones para el hash y el manifiesto, por lo que hay un registro firmado que vincula un
bundleHash a una confirmación en el repositorio, producida por algo que no sea el
despliegue.
Lo que comprueba el cuadro de diálogo Acerca de
Acerca de en el encabezado ejecuta la verificación en vivo, en su navegador.
Vuelve a buscar cada activo que la página realmente está ejecutando, lo codifica con Web Crypto API y
se compara con el manifiesto. Entonces (y ésta es la parte que importa)
recalcula el bundleHash de los hashes él recién calculado, no de
cualquier cosa que reclame el manifiesto, y lo busca en las certificaciones firmadas del repositorio
a través de la API de GitHub.
Eso es lo que impide que una implementación responda por sí misma: servir archivos modificados junto con un manifiesto coincidente aún falla porque el hash recalculado no tiene certificación.
| Estado | Medio |
|---|---|
| &controlar; Aplicación oficial verificada (n/n) | Cada activo coincide, el repositorio certifica el hash del paquete recalculado, y la página es servida desde el dominio oficial. |
| ⚠ Compilación verificada · no es la aplicación oficial | El código es genuino y está certificado, pero es un espejo en otro dominio. Un espejo no puede eliminar esta advertencia sin fallar la verificación. |
| ✗ Falta de coincidencia | Un activo no se ajusta a lo que dice el manifiesto. |
| ✗ Construcción no oficial | El hash del paquete recalculado no tiene ninguna certificación del repositorio: es un manifiesto elaborado por usted mismo. |
| ⚠ Procedencia inalcanzable | No se pudo acceder a la API de GitHub, por lo que no se pudo verificar la certificación de ninguna manera. |
Verificándolo usted mismo
Reconstruya la confirmación de los nombres del cuadro de diálogo Acerca de y compare:
git clone https://github.com/Spl0itable/NYM
cd NYM
git checkout <commit shown in the About dialog>
npm ci
npm run build # prints "Build hash: <bundleHash>"
El hash impreso debe coincidir tanto con el del cuadro de diálogo Acerca de como con el de esa confirmación. resumen de ejecución de procedencia de compilación. También puedes verificar la firma directamente con la CLI de GitHub:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
el canario orden
Un warrant canary es una declaración, publicada en un cronograma fijo, de que el desarrollador ha no recibieron una orden secreta del gobierno que tienen prohibido revelar: una Carta de Seguridad Nacional, una orden FISA. El promotor puede verse obligado a guardar silencio sobre tal orden, pero no se le puede obligar a mentir, por lo que el canario se vuelve obsoleto o desaparece. en sí la señal.
vive en canary.json en la raíz del repositorio y se recupera directamente
de GitHub, por lo que su historial se puede auditar independientemente de lo que diga el sitio implementado.
El cuadro de diálogo Acerca de lo codifica con colores:
| Color | Medio |
|---|---|
| Verde — todo claro | Firmado, actual y la firma coincide con la clave del desarrollador. No se ha recibido ninguna orden secreta. |
| Amarillo — vencido o no todo claro | No fue actualizado en la fecha indicada, ni en su allClear La bandera es falsa. No se puede descartar una orden silenciada. |
| Rojo - firma no válida o desaparecida | La firma no coincide con la clave del desarrollador o el archivo se ha eliminado por completo. Trate esto como una advertencia seria. |
El ancla de frescura
El canario firmado incorpora la última altura del bloque de Bitcoin y el hash en el momento de la firma. Ese hash no podría haberse conocido antes de que existiera el bloque, lo que demuestra que el canario era firmado después en un momento específico en lugar de firmarse previamente en masa meses antes. El cuadro de diálogo Acerca de vincula el ancla a un explorador de bloques para que pueda verificarlo.