Μετάβαση στο περιεχόμενο
Επιστροφή στο Nymchat

Βάση γνώσεων Κάτω από την κουκούλα

Επαλήθευση της κατασκευής

Ο ανοιχτός κώδικας βοηθά μόνο εάν ο κώδικας που εκτελείτε είναι ο κώδικας που ήταν δημοσιευμένο. Το Nymchat έχει κατασκευαστεί ντετερμινιστικά, ώστε να μπορείτε να το ελέγξετε μόνοι σας, μέσα από το εφαρμογή ή από ένα τερματικό.

Αναπαραγώγιμες κατασκευές

Η κατασκευή της εφαρμογής εκπέμπει α build-manifest.json που περιέχει την δέσμευση πηγής, α SHA-256 κατακερματισμός κάθε στοιχείου HTML, JavaScript και CSS που εμφανίζεται και ένα μεμονωμένο bundleHash σε όλο αυτό το σύνολο περιουσιακών στοιχείων.

Η έξοδος εξαρτάται μόνο από το περιεχόμενο της πηγής — ακόμη και ο καταγεγραμμένος χρόνος κατασκευής είναι ο τη χρονική σήμανση της δέσμευσης και όχι τη στιγμή που κυκλοφόρησε η έκδοση — οπότε όποιος ξαναφτιάχνει το ίδιο commit παίρνει αρχεία ίδια με byte και τα ίδια bundleHash.

Στη συνέχεια, μια δράση GitHub αναδομεί κάθε δέσμευση ανεξάρτητα και υπογράφει την προέλευση κατασκευής βεβαιώσεις για τον κατακερματισμό και το δηλωτικό, επομένως υπάρχει μια υπογεγραμμένη εγγραφή που δένει α bundleHash σε μια δέσμευση στο αποθετήριο, που παράγεται από κάτι διαφορετικό από το ανάπτυξη.

Τι ελέγχει το παράθυρο διαλόγου About

Για στην κεφαλίδα εκτελείται ο έλεγχος ζωντανά, στο πρόγραμμα περιήγησής σας.

Το παράθυρο διαλόγου Nymchat About, που δείχνει την έκδοση, την ακεραιότητα του build και εγγυάται την κατάσταση καναρινιού.
Το παράθυρο διαλόγου Πληροφορίες: έκδοση, ακεραιότητα κατασκευής, καναρίνι εγγύησης και απευθείας γραμμή στον προγραμματιστή.

Παίρνει εκ νέου κάθε στοιχείο που εκτελεί η σελίδα, το κατακερματίζει με το Web Crypto API και συγκρίνει με το προφανές. Τότε - και αυτό είναι το κομμάτι που έχει σημασία - αυτό επανυπολογίζει το bundleHash από τα χασίς το απλά υπολογίζεται, όχι από οτιδήποτε ισχυρίζεται το δηλωτικό και το αναζητά στις υπογεγραμμένες βεβαιώσεις του αποθετηρίου μέσω του GitHub API.

Αυτό είναι που εμποδίζει μια ανάπτυξη να εγγυηθεί για τον εαυτό της: την εξυπηρέτηση τροποποιημένων αρχείων μαζί με μια δήλωση αντιστοίχισης εξακολουθεί να αποτυγχάνει, επειδή ο κατακερματισμός που υπολογίστηκε εκ νέου δεν έχει βεβαίωση.

ΚατάστασηΜέσα
&έλεγχος; Επαληθευμένη επίσημη εφαρμογή (n/n)Κάθε στοιχείο ταιριάζει, ο κατακερματισμός του πακέτου που υπολογίστηκε εκ νέου πιστοποιείται από το χώρο αποθήκευσης, και η σελίδα προβάλλεται από τον επίσημο τομέα.
⚠ Επαληθευμένη κατασκευή · όχι η επίσημη εφαρμογήΟ κωδικός είναι γνήσιος και πιστοποιημένος, αλλά είναι ένας καθρέφτης σε άλλο τομέα. Ένας καθρέφτης δεν μπορεί να αφαιρέσει αυτήν την προειδοποίηση χωρίς να αποτύχει η επαλήθευση.
✗ ΑναντιστοιχίαΈνα στοιχείο δεν κατακερματίζεται με αυτό που λέει η δήλωση.
✗ Ανεπίσημη κατασκευήΟ κατακερματισμός του εκ νέου υπολογισμένου πακέτου δεν έχει καμία βεβαίωση από το αποθετήριο — ένα αυτοδημιούργητο μανιφέστο.
⚠ Η προέλευση δεν είναι προσβάσιμηΔεν ήταν δυνατή η πρόσβαση στο GitHub API, επομένως δεν ήταν δυνατός ο έλεγχος της βεβαίωσης με κανέναν τρόπο.

Επιβεβαιώστε το μόνοι σας

Δημιουργήστε ξανά τα ονόματα διαλόγου commit και συγκρίνετε:

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

Ο εκτυπωμένος κατακερματισμός θα πρέπει να ταιριάζει τόσο με αυτόν στο παράθυρο διαλόγου Πληροφορίες όσο και με αυτόν σε αυτήν την δέσμευση σύνοψη εκτέλεσης κατασκευής-προέλευσης. Μπορείτε επίσης να ελέγξετε την υπογραφή απευθείας με το GitHub CLI:

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

Το ένταλμα καναρίνι

Ένα καναρίνι με ένταλμα είναι μια δήλωση, που δημοσιεύεται σε σταθερό χρονοδιάγραμμα, που έχει ο προγραμματιστής δεν έλαβαν μυστική κυβερνητική εντολή που απαγορεύεται να αποκαλύψουν — α Επιστολή Εθνικής Ασφάλειας, εντολή FISA. Ο προγραμματιστής μπορεί να υποχρεωθεί να μείνει σιωπηλός μια τέτοια διαταγή, αλλά δεν μπορεί να εξαναγκαστεί να πει ψέματα, οπότε το καναρίνι είναι μπαγιάτικο ή εξαφανισμένο το ίδιο το σήμα.

Ζει μέσα canary.json στη ρίζα του αποθετηρίου και λαμβάνεται απευθείας από το GitHub, επομένως το ιστορικό του μπορεί να ελεγχθεί ανεξάρτητα από ό,τι λέει ο αναπτυγμένος ιστότοπος. Το παράθυρο διαλόγου About το χρωματίζει:

ΧρώμαΜέσα
Πράσινος — όλα ξεκάθαραΗ υπογραφή, η τρέχουσα και η υπογραφή αντιστοιχεί στο κλειδί του προγραμματιστή. Δεν έχει ληφθεί μυστική εντολή.
Κίτρινος — εκπρόθεσμα, ή όχι όλα ξεκάθαραΔεν ανανεώθηκε από την ημερομηνία που δηλώθηκε ή από την ημερομηνία allClear η σημαία είναι ψευδής. Δεν μπορεί να αποκλειστεί μια σίγαση εντολής.
Κόκκινος — άκυρη υπογραφή, ή έφυγεΗ υπογραφή δεν ταιριάζει με το κλειδί του προγραμματιστή ή το αρχείο έχει αφαιρεθεί εντελώς. Αντιμετωπίστε αυτό ως σοβαρή προειδοποίηση.

Η άγκυρα φρεσκάδας

Το υπογεγραμμένο καναρίνι ενσωματώνει το πιο πρόσφατο ύψος μπλοκ Bitcoin και κατακερματισμό τη στιγμή της υπογραφής. Αυτό το hash δεν θα μπορούσε να ήταν γνωστό πριν από την ύπαρξη του μπλοκ, κάτι που αποδεικνύει ότι το καναρίνι ήταν υπογεγραμμένος μετά ένα συγκεκριμένο χρονικό σημείο και όχι προ-υπογεγραμμένο μαζικά μήνες νωρίτερα. Το παράθυρο διαλόγου Πληροφορίες συνδέει την άγκυρα με έναν εξερευνητή μπλοκ, ώστε να μπορείτε να το ελέγξετε.