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.
Halaman ini diterjemahkan mesin untuk kemudahan. Versi asal bahasa Inggeris ialah versi yang digunakan.
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.
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.
| Status | Bermakna |
|---|---|
| &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 rasmi | Kod ini tulen dan disahkan, tetapi ini adalah cermin pada domain lain. Cermin tidak boleh mengalih keluar amaran ini tanpa gagal pengesahan. |
| ✗ Tidak padan | Aset tidak mencincang apa yang dinyatakan oleh manifes. |
| ✗ Binaan tidak rasmi | Cincang bundle yang dikira semula tidak mempunyai pengesahan daripada repositori - manifes yang dibuat sendiri. |
| ⚠ Asal tidak dapat dicapai | API 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.
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:
| warna | Bermakna |
|---|---|
| hijau - semua jelas | Ditandatangani, semasa dan tandatangan sepadan dengan kunci pembangun. Tiada pesanan rahsia diterima. |
| kuning — tertunggak, atau tidak semuanya jelas | Ia tidak dimuat semula mengikut tarikh yang dinyatakan, atau tarikhnya allClear bendera adalah palsu. Perintah yang disenyapkan tidak boleh diketepikan. |
| merah — tandatangan tidak sah, atau hilang | Tandatangan 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.