İçeriğe atla
Nymchat'e geri dön

Bilgi tabanı Kaputun altında

Yapıyı doğrulama

Açık kaynak yalnızca çalıştırdığınız kodun daha önce çalıştırdığınız kod olması durumunda yardımcı olur. yayınlandı. Nymchat deterministik olarak inşa edilmiştir, böylece bunu içeriden kendiniz kontrol edebilirsiniz. uygulamadan veya bir terminalden.

Tekrarlanabilir yapılar

Uygulamayı oluşturmak bir yayar build-manifest.json kaynak taahhüdünü içeren bir Sunulan her HTML, JavaScript ve CSS varlığının SHA-256 karması ve tek bir bundleHash tüm varlık kümesinin üzerinde.

Çıktı yalnızca kaynak içeriğe bağlıdır; kaydedilen derleme süresi bile yapının çalıştırıldığı an yerine taahhüt zaman damgası - yani aynı şeyi yeniden inşa eden herkes taahhüt baytla aynı dosyaları alır ve aynı bundleHash.

Bir GitHub Eylemi daha sonra her bir işlemi bağımsız olarak yeniden oluşturur ve derleme kaynağını imzalar hash ve manifest için tasdikler var, dolayısıyla bir imzayı bağlayan imzalı bir kayıt var bundleHash dışında başka bir şey tarafından üretilen, depodaki bir taahhüde dağıtım.

Hakkında iletişim kutusunun kontrol ettiği şeyler

Hakkında başlıkta kontrolü tarayıcınızda canlı olarak çalıştırır.

Sürümü, yapı bütünlüğünü ve garanti kanarya durumunu gösteren Nymchat Hakkında iletişim kutusu.
Hakkında iletişim kutusu: sürüm, yapı bütünlüğü, garanti kanaryası ve geliştiriciye doğrudan hat.

Sayfanın gerçekte çalıştırdığı her varlığı yeniden getirir, Web Crypto API ile karma hale getirir ve manifestoyla karşılaştırır. Sonra - ve önemli olan da bu - yeniden hesaplar bundleHash karmalardan BT sadece hesaplandı, şuradan değil Bildirgenin iddia ettiği her şey ve bunu deponun imzalı onaylarında arar GitHub API'si aracılığıyla.

Bir dağıtımın kendisini onaylamasını engelleyen şey budur: değiştirilmiş dosyaların birlikte sunulması yeniden hesaplanan karmanın hiçbir onayı olmadığından eşleşen bir bildirim hala başarısız oluyor.

DurumAraç
&kontrol etmek; Doğrulanmış resmi uygulama (n/n)Her varlık eşleşir, yeniden hesaplanan paket karması depo tarafından onaylanır, Ve sayfa resmi alan adından sunulmaktadır.
⚠ Doğrulanmış yapı · resmi uygulama değilKod orijinal ve onaylanmıştır ancak bu, başka bir alanın yansımasıdır. Bir ayna, doğrulama başarısız olmadan bu uyarıyı kaldıramaz.
✗ UyumsuzlukBir varlık, manifestonun söylediklerine uymaz.
✗ Resmi olmayan yapıYeniden hesaplanan paket karmasının depodan herhangi bir onayı yoktur; kendi kendine oluşturulmuş bir bildirimdir.
⚠ Kaynağına ulaşılamıyorGitHub API'sine ulaşılamadığı için doğrulama her iki şekilde de kontrol edilemedi.

Kendiniz doğrulamak

Hakkında iletişim kutusu adlarını yeniden oluşturun ve karşılaştırın:

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

Yazdırılan karma, hem Hakkında iletişim kutusundaki hem de söz konusu taahhütteki karma değerle eşleşmelidir. derleme-kanıt çalıştırma özeti. İmzayı doğrudan GitHub CLI ile de kontrol edebilirsiniz:

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

Android ve iOS uygulamaları

Yukarıdaki kontrol bir web uygulaması kontrolüdür ve nedeni açıkça belirtilmeye değer: yerel bir uygulama aynı şeyi kendine yapamaz. Telefonunuzda çalışan makine kodu değil, derlenmiş makine kodudur. depodaki kaynaktır ve uygulamanın cihazda hesaplayabileceği hiçbir şey kaynakla ilgili değildir. diğer.

Android bir sonraki en iyi şeyi yapabilir. Kurulu .apk uygulamanın okuyabileceği bir dosyadır ve karma ve yayınlanan her sürümün karması zaten halka açıktır: Zapstore APK'nın SHA-256'sını ve imzalama sertifikasının SHA-256'sını taşıyan bir Nostr etkinliğine imza atar. Yani android Hakkında iletişim kutusu, çalıştığı APK'yı karma hale getirir, imzalanmış olanları getirir olaylar, yalnızca geliştiricinin anahtarı tarafından imzalananları tutar ve karşılaştırır. İkisini gösteriyor karmaları da kontrol edebilirsiniz, böylece cihazdaki kontrolü tekrarlayabilirsiniz: yayınlanan APK'yı indirin, çalıştırın sha256sum üzerinde ve aynı olaya kendiniz bakın.

Google Play'den yüklenen bir uygulama bu şekilde kontrol edilemezGoogle kendi anahtarı ile her yüklemeyi yeniden imzalar ve her cihaz için ayrı bir APK oluşturur, böylece telefonunuzda düşen dosya geliştiricinin ürettiği dosya değildir ve hash'i yayınlanabilecek hiçbir şeyle eşleşmez. Uygulama bir Play yüklemeyi tanır ve bir başarısızlık bildirmek yerine bunu söyler.

iOS hiçbir şekilde kontrol edilemiyor. Apple her indirme işlemini şifreler ve yeniden imzalar Yani iPhone'unuzda hesaplanan karma, iPhone'unuza özeldir ve hiçbir şeyle eşleşmez her yerde yayınlanır. Hakkında iletişim kutusu güven verici bir ifade göstermek yerine bunu açıkça söylüyor hiçbir şey ifade etmeyen durum. Apple donanımında doğrulayabileceğiniz bir Nymchat istiyorsanız web'i kullanın Çalıştırdığı her dosyayı kontrol eden uygulama.

Bunların hiçbiri neyi kanıtlamıyor?

Bir uygulamanın kendi kendine yaptığı kontrol, uygulamanın dürüst olduğunu kanıtlayamaz; onu kim değiştirdiyse değiştirsin çeki de kaldırabilir. Bunun kanıtladığı şey olağan bir durumdur: Aldığınız kopya yüklü olan, yayınlanan kopyadır. Buna sahip olmaya değer çünkü değerler Karşılaştırmalar herkese açıktır, dolayısıyla sizin dışınızda biri bunları kontrol edebilir ve aynı fikirde olmayabilir.

Emri kanaryası

Garanti kanaryası, geliştiricinin sabit bir programda yayınlanan bir beyanıdır. Olumsuz ifşa etmeleri yasak olan gizli bir hükümet emri aldılar - bir Ulusal Güvenlik Mektubu, bir FISA emri. Geliştirici bu konuda sessiz kalmaya zorlanabilir Böyle bir emir vardır ama yalan söylemeye zorlanamaz, dolayısıyla kanaryanın bayatlaması ya da ortadan kaybolması kendisi sinyaldir.

İçinde yaşıyor canary.json havuzun kökünde bulunur ve doğrudan getirilir GitHub'dan olduğundan geçmişi, konuşlandırılan sitenin söylediklerinden bağımsız olarak denetlenebilir. Hakkında iletişim kutusu bunu renk kodlarıyla kodlar:

RenkAraç
Yeşil - her şey açıkİmzalı, geçerli ve imza, geliştiricinin anahtarıyla eşleşir. Gizli bir emir alınmadı.
Sarı - gecikmiş veya her şey net değilBelirtilen tarihe kadar yenilenmemiş veya allClear bayrak sahtedir. Susturulmuş bir emir göz ardı edilemez.
Kırmızı — geçersiz imza veya gittiİmza, geliştiricinin anahtarıyla eşleşmiyor veya dosya tamamen kaldırılmış. Bunu ciddi bir uyarı olarak değerlendirin.

Tazelik çapası

İmzalı kanarya, imza anında en son Bitcoin blok yüksekliğini ve hash değerini gömer. Bu karma, blok var olmadan önce bilinemezdi, bu da kanaryanın imzalanmış sonrasında aylar öncesinden toplu olarak önceden imzalanmak yerine belirli bir zamanda. Hakkında iletişim kutusu, bağlantıyı kontrol edebilmeniz için bir blok gezginine bağlar.