Base de conhecimento Sob o capô
Verificando a compilação
O código aberto só ajuda se o código que você está executando for o código que foi publicado. O Nymchat é construído de forma determinística para que você mesmo possa verificar isso, de dentro do aplicativo ou de um terminal.
Esta página foi traduzida automaticamente por conveniência. O original em inglês é a versão aplicável.
Construções reproduzíveis
Construir o aplicativo emite um build-manifest.json contendo o commit de origem, um
Hash SHA-256 de cada ativo HTML, JavaScript e CSS veiculado e um único
bundleHash sobre todo esse conjunto de ativos.
A saída depende apenas do conteúdo de origem — até mesmo o tempo de construção registrado é o
o carimbo de data e hora do commit em vez do momento em que a compilação foi executada - portanto, qualquer pessoa que esteja reconstruindo o mesmo
commit obtém arquivos idênticos em bytes e os mesmos bundleHash.
Uma ação do GitHub então reconstrói cada commit de forma independente e assina a proveniência do build
atestados para o hash e o manifesto, então há um registro assinado vinculando um
bundleHash para um commit no repositório, produzido por algo diferente do
implantação.
O que a caixa de diálogo Sobre verifica
Sobre no cabeçalho executa a verificação ao vivo, no seu navegador.
Ele busca novamente cada ativo que a página está realmente executando, faz o hash com a API Web Crypto e
compara com o manifesto. Então – e esta é a parte que importa – é
recalcula o bundleHash dos hashes isto apenas calculado, não de
qualquer coisa que o manifesto reivindique e procure isso nos atestados assinados do repositório
por meio da API GitHub.
Isso é o que impede uma implantação de garantir a si mesma: servir arquivos modificados junto com um manifesto correspondente ainda falha porque o hash recalculado não tem atestado.
| Status | Significa |
|---|---|
| &verificar; Aplicativo oficial verificado (n/n) | Cada ativo corresponde, o hash do pacote recalculado é atestado pelo repositório, e a página é veiculada a partir do domínio oficial. |
| ⚠ Versão verificada · não é o aplicativo oficial | O código é genuíno e atestado, mas é um espelho de outro domínio. Um espelho não pode remover este aviso sem falhar na verificação. |
| ✗ Incompatibilidade | Um ativo não corresponde ao que o manifesto diz. |
| ✗ Compilação não oficial | O hash do pacote recalculado não tem atestado do repositório – um manifesto feito por ele mesmo. |
| ⚠ Proveniência inacessível | A API do GitHub não pôde ser acessada, portanto o atestado não pôde ser verificado de qualquer maneira. |
Verificando você mesmo
Reconstrua o commit dos nomes da caixa de diálogo Sobre e 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>"
O hash impresso deve corresponder tanto ao da caixa de diálogo Sobre quanto ao do commit resumo da execução de origem de construção. Você também pode verificar a assinatura diretamente com a CLI do GitHub:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
O canário mandado
Um warrant canary é uma declaração, publicada em um cronograma fixo, de que o desenvolvedor não receberam uma ordem secreta do governo que estão proibidos de divulgar - uma Carta de Segurança Nacional, uma ordem da FISA. O desenvolvedor pode ser obrigado a permanecer em silêncio sobre tal ordem, mas não pode ser obrigado a mentir, então o canário que envelhece ou desaparece é em si o sinal.
Ele vive em canary.json na raiz do repositório e é obtido diretamente
do GitHub, portanto, seu histórico pode ser auditado independentemente do que o site implantado diz.
A caixa de diálogo Sobre codifica-o por cores:
| Cor | Significa |
|---|---|
| Verde - tudo claro | Assinado, atual e a assinatura corresponde à chave do desenvolvedor. Nenhuma ordem secreta foi recebida. |
| Amarelo - atrasado ou nem tudo claro | Não foi atualizado até a data declarada ou allClear bandeira é falsa. Uma ordem silenciada não pode ser descartada. |
| Vermelho - assinatura inválida ou desaparecida | A assinatura não corresponde à chave do desenvolvedor ou o arquivo foi totalmente removido. Trate isso como um aviso sério. |
A âncora do frescor
O canário assinado incorpora a altura e o hash mais recentes do bloco Bitcoin no momento da assinatura. Esse hash não poderia ser conhecido antes da existência do bloco, o que prova que o canário era assinado depois um ponto específico no tempo, em vez de pré-assinado em massa meses antes. A caixa de diálogo Sobre vincula a âncora a um explorador de blocos para que você possa verificá-la.