Saltar al contenido
Volver a Nymchat

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.

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.

El cuadro de diálogo Acerca de de Nymchat, que muestra la versión, la integridad de la compilación y el estado canario de la garantía.
El cuadro de diálogo Acerca de: versión, integridad de compilación, garantía canaria y una línea directa con el desarrollador.

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.

EstadoMedio
&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 oficialEl 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 coincidenciaUn activo no se ajusta a lo que dice el manifiesto.
✗ Construcción no oficialEl hash del paquete recalculado no tiene ninguna certificación del repositorio: es un manifiesto elaborado por usted mismo.
⚠ Procedencia inalcanzableNo 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:

ColorMedio
Verde — todo claroFirmado, actual y la firma coincide con la clave del desarrollador. No se ha recibido ninguna orden secreta.
Amarillo — vencido o no todo claroNo 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 desaparecidaLa 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.