Lewati ke konten
Kembali ke Nymchat

Basis pengetahuan Di bawah tenda

Memverifikasi build

Open source hanya membantu jika kode yang Anda jalankan adalah kode yang tadinya diterbitkan. Nymchat dibuat secara deterministik sehingga Anda dapat memeriksanya sendiri, dari dalam aplikasi atau dari terminal.

Bangunan yang dapat direproduksi

Membangun aplikasi menghasilkan a build-manifest.json berisi komit sumber, a Hash SHA-256 dari setiap aset HTML, JavaScript, dan CSS yang disajikan, dan satu bundleHash atas seluruh kumpulan aset itu.

Outputnya hanya bergantung pada konten sumber — bahkan waktu pembuatan yang tercatat pun demikian stempel waktu komit, bukan saat pembangunan dijalankan - jadi siapa pun yang membangunnya kembali akan melakukan hal yang sama commit mendapat file yang identik dengan byte dan hal yang sama bundleHash.

Tindakan GitHub kemudian membangun kembali setiap komitmen secara independen dan menandatangani asal pembangunan pengesahan untuk hash dan manifes, sehingga ada catatan bertanda tangan yang mengikat a bundleHash ke komit di repositori, dihasilkan oleh sesuatu selain penyebaran.

Apa yang diperiksa oleh dialog Tentang

Tentang di header jalankan pemeriksaan langsung, di browser Anda.

Dialog Nymchat Tentang, menampilkan versi, membangun integritas, dan menjamin status canary.
Dialog Tentang: versi, integritas build, waran canary, dan sambungan langsung ke pengembang.

Ini mengambil ulang setiap aset yang sebenarnya dijalankan halaman tersebut, melakukan hash dengan Web Crypto API, dan dibandingkan dengan manifes. Lalu - dan inilah bagian yang penting - itu menghitung ulang bundleHash dari hash dia hanya dihitung, bukan dari apa pun yang diklaim oleh manifes, dan mencarinya di pengesahan yang ditandatangani repositori melalui API GitHub.

Hal inilah yang menghentikan penerapan untuk menjamin dirinya sendiri: menyajikan file yang dimodifikasi bersama-sama manifes yang cocok masih gagal, karena hash yang dihitung ulang tidak memiliki pengesahan.

StatusCara
&memeriksa; Aplikasi resmi terverifikasi (n/n)Setiap aset cocok, hash bundel yang dihitung ulang dibuktikan oleh repositori, Dan halaman disajikan dari domain resmi.
⚠ Versi terverifikasi · bukan aplikasi resmiKode ini asli dan dibuktikan, tetapi ini adalah cerminan di domain lain. Mirror tidak dapat menghapus peringatan ini tanpa gagal dalam verifikasi.
✗ KetidakcocokanAset tidak sesuai dengan apa yang dinyatakan dalam manifes.
✗ Bangunan tidak resmiHash bundel yang dihitung ulang tidak memiliki pengesahan dari repositori — manifes yang dibuat sendiri.
⚠ Asalnya tidak terjangkauGitHub API tidak dapat dijangkau, sehingga pengesahan tidak dapat diperiksa.

Memverifikasinya sendiri

Bangun kembali komit nama dialog Tentang dan bandingkan:

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>"

Hash yang dicetak harus cocok dengan yang ada di dialog Tentang dan yang ada di komit itu ringkasan proses build-asalnya. Anda juga dapat memeriksa tanda tangan secara langsung dengan GitHub CLI:

gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM

Burung kenari waran

Warrant canary adalah pernyataan, yang diterbitkan pada jadwal tetap, yang dimiliki oleh pengembang bukan menerima perintah rahasia pemerintah yang dilarang untuk diungkapkan — a Surat Keamanan Nasional, perintah FISA. Pengembang mungkin terpaksa tetap bungkam perintah seperti itu, namun tidak bisa dipaksa untuk berbohong, sehingga burung kenari menjadi basi atau hilang itu sendiri sinyalnya.

Ia tinggal di canary.json di root repositori dan diambil secara langsung dari GitHub, sehingga riwayatnya dapat diaudit secara independen, apa pun yang dikatakan situs yang diterapkan. Dialog Tentang memberi kode warna pada itu:

WarnaCara
Hijau — semuanya jelasDitandatangani, terkini, dan tanda tangan cocok dengan kunci pengembang. Tidak ada perintah rahasia yang diterima.
Kuning — terlambat, atau tidak semuanya jelasItu tidak disegarkan pada tanggal yang disebutkan, atau tanggalnya allClear bendera salah. Perintah yang dibungkam tidak dapat dikesampingkan.
Merah — tanda tangan tidak sah, atau hilangTanda tangan tidak cocok dengan kunci pengembang, atau file telah dihapus seluruhnya. Perlakukan ini sebagai peringatan serius.

Jangkar kesegaran

Canary yang ditandatangani menyematkan tinggi blok dan hash Bitcoin terbaru pada saat penandatanganan. Hash itu tidak mungkin diketahui sebelum blok itu ada, yang membuktikan bahwa kenari itu ada ditandatangani setelah pada titik waktu tertentu, bukannya ditandatangani sebelumnya dalam jumlah besar beberapa bulan sebelumnya. Dialog Tentang menghubungkan jangkar ke penjelajah blok sehingga Anda dapat memeriksanya.