Βάση γνώσεων Κάτω από την κουκούλα
Επαλήθευση της κατασκευής
Ο ανοιχτός κώδικας βοηθά μόνο εάν ο κώδικας που εκτελείτε είναι ο κώδικας που ήταν δημοσιευμένο. Το Nymchat έχει κατασκευαστεί ντετερμινιστικά, ώστε να μπορείτε να το ελέγξετε μόνοι σας, μέσα από το εφαρμογή ή από ένα τερματικό.
Αυτή η σελίδα έχει μεταφραστεί μηχανικά για ευκολία. Το αγγλικό πρωτότυπο είναι η έκδοση που ισχύει.
Αναπαραγώγιμες κατασκευές
Η κατασκευή της εφαρμογής εκπέμπει α build-manifest.json που περιέχει την δέσμευση πηγής, α
SHA-256 κατακερματισμός κάθε στοιχείου HTML, JavaScript και CSS που εμφανίζεται και ένα μεμονωμένο
bundleHash σε όλο αυτό το σύνολο περιουσιακών στοιχείων.
Η έξοδος εξαρτάται μόνο από το περιεχόμενο της πηγής — ακόμη και ο καταγεγραμμένος χρόνος κατασκευής είναι ο
τη χρονική σήμανση της δέσμευσης και όχι τη στιγμή που κυκλοφόρησε η έκδοση — οπότε όποιος ξαναφτιάχνει το ίδιο
commit παίρνει αρχεία ίδια με byte και τα ίδια bundleHash.
Στη συνέχεια, μια δράση GitHub αναδομεί κάθε δέσμευση ανεξάρτητα και υπογράφει την προέλευση κατασκευής
βεβαιώσεις για τον κατακερματισμό και το δηλωτικό, επομένως υπάρχει μια υπογεγραμμένη εγγραφή που δένει α
bundleHash σε μια δέσμευση στο αποθετήριο, που παράγεται από κάτι διαφορετικό από το
ανάπτυξη.
Τι ελέγχει το παράθυρο διαλόγου About
Για στην κεφαλίδα εκτελείται ο έλεγχος ζωντανά, στο πρόγραμμα περιήγησής σας.
Παίρνει εκ νέου κάθε στοιχείο που εκτελεί η σελίδα, το κατακερματίζει με το 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 δεν θα μπορούσε να ήταν γνωστό πριν από την ύπαρξη του μπλοκ, κάτι που αποδεικνύει ότι το καναρίνι ήταν υπογεγραμμένος μετά ένα συγκεκριμένο χρονικό σημείο και όχι προ-υπογεγραμμένο μαζικά μήνες νωρίτερα. Το παράθυρο διαλόγου Πληροφορίες συνδέει την άγκυρα με έναν εξερευνητή μπλοκ, ώστε να μπορείτε να το ελέγξετε.