Langkau ke kandungan
Kembali ke Nymchat

Pangkalan pengetahuan Di bawah tudung

Mengesahkan binaan

Sumber terbuka hanya membantu jika kod yang anda jalankan ialah kod yang digunakan diterbitkan. Nymchat dibina secara deterministik supaya anda boleh menyemaknya sendiri, dari dalam apl atau daripada terminal.

Binaan yang boleh dihasilkan semula

Membina aplikasi mengeluarkan a build-manifest.json mengandungi komit sumber, a Cincang SHA-256 bagi setiap aset HTML, JavaScript dan CSS yang disajikan, dan satu bundleHash atas keseluruhan set aset itu.

Output hanya bergantung pada kandungan sumber — walaupun masa binaan yang direkodkan ialah cap masa commit dan bukannya saat binaan dijalankan — jadi sesiapa yang membina semula perkara yang sama commit mendapat fail yang sama bait dan sama bundleHash.

Tindakan GitHub kemudian membina semula setiap commit secara bebas dan menandatangani build-provenance pengesahan untuk cincang dan manifes, jadi terdapat rekod yang ditandatangani yang mengikat a bundleHash kepada komit dalam repositori, dihasilkan oleh sesuatu selain daripada penempatan.

Perkara yang disemak oleh dialog Perihal

Tentang dalam pengepala menjalankan semakan secara langsung, dalam penyemak imbas anda.

Dialog Nymchat About, menunjukkan versi, membina integriti dan menjamin status kenari.
Dialog Perihal: versi, bina integriti, waran kenari dan talian terus kepada pembangun.

Ia mengambil semula setiap aset yang halaman sebenarnya sedang dijalankan, mencincangnya dengan Web Crypto API, dan membandingkan dengan nyata. Kemudian - dan ini adalah bahagian yang penting - ia mengira semula bundleHash daripada cincang ia hanya dikira, bukan dari apa sahaja yang dituntut oleh manifes, dan mencarinya dalam pengesahan yang ditandatangani repositori melalui API GitHub.

Itulah yang menghalang penggunaan daripada menjamin dirinya sendiri: menyampaikan fail yang diubah suai bersama-sama dengan manifes yang sepadan masih gagal, kerana cincang yang dikira semula tidak mempunyai pengesahan.

StatusBermakna
&semak; Apl rasmi yang disahkan (n/n)Setiap aset sepadan, cincangan berkas yang dikira semula disahkan oleh repositori, dan halaman dihidangkan daripada domain rasmi.
⚠ Binaan yang disahkan · bukan apl rasmiKod ini tulen dan disahkan, tetapi ini adalah cermin pada domain lain. Cermin tidak boleh mengalih keluar amaran ini tanpa gagal pengesahan.
✗ Tidak padanAset tidak mencincang apa yang dinyatakan oleh manifes.
✗ Binaan tidak rasmiCincang bundle yang dikira semula tidak mempunyai pengesahan daripada repositori - manifes yang dibuat sendiri.
⚠ Asal tidak dapat dicapaiAPI GitHub tidak dapat dicapai, jadi pengesahan tidak boleh disemak sama ada.

Mengesahkan sendiri

Bina semula komit nama dialog Perihal 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>"

Cincang yang dicetak harus sepadan dengan kedua-dua dalam dialog Perihal dan satu dalam komit itu ringkasan run build-provenance. Anda juga boleh menyemak tandatangan secara langsung dengan GitHub CLI:

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

Apl Android dan iOS

Semakan di atas ialah semakan apl web dan sebabnya patut dinyatakan dengan jelas: apl asli tidak boleh melakukan perkara yang sama kepada dirinya sendiri. Perkara yang berjalan pada telefon anda ialah kod mesin yang disusun, bukan kod mesin sumber dalam repositori, dan tiada apa yang boleh dikira oleh aplikasi pada peranti yang berkaitan dengannya lain.

Android boleh melakukan perkara terbaik seterusnya. Yang dipasang .apk ialah fail yang boleh dibaca oleh aplikasi dan cincang, dan cincang setiap keluaran yang diterbitkan sudah pun umum: penerbitan ke Zapstore menandatangani acara Nostr yang membawa SHA-256 APK dan SHA-256 sijil tandatangannya. Jadi Android Tentang dialog mencincang APK yang dijalankan, mengambil yang ditandatangani acara, menyimpan hanya yang ditandatangani oleh kunci pembangun dan membandingkan. Ia menunjukkan kedua-duanya cincang juga, supaya anda boleh mengulangi semak peranti: muat turun APK yang diterbitkan, jalankan sha256sum padanya, dan lihat sendiri acara yang sama.

Apl yang dipasang daripada Google Play tidak boleh disemak dengan cara ini, dan itu bukan tanda apa-apa yang salah. Google menandatangani semula setiap muat naik dengan kunci sendiri dan membina APK berasingan untuk setiap peranti, jadi apa yang mendarat di telefon anda bukan fail yang dihasilkan oleh pengembang dan hashnya tidak sesuai dengan apa-apa yang boleh diterbitkan. Aplikasi mengenali pemasangan Play dan berkata demikian bukannya melaporkan kegagalan.

iOS tidak boleh disemak sama sekali. Apple menyulitkan dan menandatangani semula setiap muat turun secara individu, jadi cincangan yang dikira pada iPhone anda adalah unik untuk iPhone anda dan tidak sepadan diterbitkan di mana-mana sahaja. Dialog Perihal mengatakan ini secara terang-terangan dan bukannya menunjukkan keyakinan status yang tidak bermakna. Jika anda mahukan Nymchat yang anda boleh sahkan pada perkakasan Apple, gunakan web app, yang menyemak setiap fail yang sedang dijalankan.

Apa yang tidak dibuktikan oleh semua ini

Semakan apl berjalan sendiri tidak dapat membuktikan apl itu jujur — sesiapa sahaja yang mengubah suainya boleh mengeluarkan cek itu juga. Apa yang dibuktikan adalah kes biasa: bahawa salinan anda dipasang ialah salinan yang diterbitkan. Itu berbaloi untuk dimiliki kerana menghargainya perbandingan adalah umum, jadi seseorang selain anda boleh menyemaknya dan tidak bersetuju.

kenari waran

Penari waran ialah penyata, diterbitkan pada jadual tetap, yang dimiliki oleh pemaju bukan menerima perintah rahsia kerajaan mereka dilarang untuk mendedahkan - a Surat Keselamatan Negara, perintah FISA. Pembangun boleh dipaksa untuk berdiam diri perintah sedemikian, tetapi tidak boleh dipaksa untuk berbohong, jadi kenari akan basi atau hilang adalah isyarat itu sendiri.

Ia tinggal di canary.json di akar repositori dan diambil secara langsung daripada GitHub, jadi sejarahnya boleh diaudit secara bebas daripada apa sahaja yang dikatakan tapak yang digunakan. Kod warna dialog Perihal itu:

warnaBermakna
hijau - semua jelasDitandatangani, semasa dan tandatangan sepadan dengan kunci pembangun. Tiada pesanan rahsia diterima.
kuning — tertunggak, atau tidak semuanya jelasIa tidak dimuat semula mengikut tarikh yang dinyatakan, atau tarikhnya allClear bendera adalah palsu. Perintah yang disenyapkan tidak boleh diketepikan.
merah — tandatangan tidak sah, atau hilangTandatangan tidak sepadan dengan kunci pembangun, atau fail telah dialih keluar sepenuhnya. Anggap ini sebagai amaran yang serius.

Penambat kesegaran

Kenari yang ditandatangani membenamkan ketinggian dan cincang blok Bitcoin terkini pada saat menandatangani. Hash itu tidak mungkin diketahui sebelum blok itu wujud, yang membuktikan kenari itu ditandatangani selepas titik masa tertentu dan bukannya ditandatangani secara pukal beberapa bulan lebih awal. Dialog Perihal memautkan sauh kepada penjelajah blok supaya anda boleh menyemaknya.