דלג לתוכן
חזרה ל-Nymchat

בסיס ידע מתחת למכסה המנוע

אימות המבנה

קוד פתוח עוזר רק אם הקוד שאתה מריץ הוא הקוד שהיה פורסם. Nymchat בנוי בצורה דטרמיניסטית כך שתוכלו לבדוק זאת בעצמכם, מבפנים אפליקציה או ממסוף.

בנייה ניתנת לשחזור

בניית האפליקציה פולטת א build-manifest.json המכיל את המקור להתחייב, א SHA-256 hash של כל נכס HTML, JavaScript ו-CSS מוגש, ויחיד bundleHash על כל מערך הנכסים הזה.

הפלט תלוי רק בתוכן המקור - אפילו זמן הבנייה המוקלט הוא חותמת הזמן של commit ולא הרגע שבו הבנייה רצה - אז כל מי שבונה מחדש את אותו הדבר commit מקבל קבצים זהים בתים ואותו דבר bundleHash.

לאחר מכן, פעולת GitHub בונה מחדש כל התחייבות באופן עצמאי וחותמת על מקור בנייה אישורים ל-hash ולמניפסט, אז יש רשומה חתומה הקושרת א bundleHash להתחייבות במאגר, שנוצרה על ידי משהו אחר מלבד פריסה.

מה תיבת הדו-שיח 'אודות' בודקת

אוֹדוֹת בכותרת מופעלת הבדיקה חיה, בדפדפן שלך.

תיבת הדו-שיח של Nymchat About, מציגה את הגרסה, בניית שלמות ומצדיקה סטטוס קנרי.
תיבת הדו-שיח אודות: גרסה, שלמות בנייה, צו קנרי וקו ישיר למפתח.

הוא מאחזר מחדש כל נכס שהדף פועל בפועל, מאחזר אותו עם ה-Web Crypto API, וכן משווה מול המניפסט. ואז - וזה החלק שחשוב - זה מחשב מחדש את bundleHash מהאשים זֶה רק מחושב, לא מ כל מה שהמניפסט טוען, ומחפש את זה באישורים החתומים של המאגר דרך ה-API של GitHub.

זה מה שעוצר פריסה מלהבטיח לעצמה: הגשת קבצים ששונו יחד עם מניפסט תואם עדיין נכשל, מכיוון של-hash המחושב מחדש אין אישור.

סטָטוּסאֶמְצָעִי
&לִבדוֹק; אפליקציה רשמית מאומתת (n/n)כל נכס תואם, ה-hash החבילה המחושב מאושר על ידי המאגר, ו הדף מוגש מהדומיין הרשמי.
⚠ מבנה מאומת · לא האפליקציה הרשמיתהקוד מקורי ומאושר, אבל זה מראה על תחום אחר. מראה לא יכולה להסיר את האזהרה הזו בלי אימות נכשל.
✗ אי התאמהנכס אינו מתחבר למה שאומר המניפסט.
✗ מבנה לא רשמיל-hash החבילה המחושב מחדש אין אישור מהמאגר - מניפסט מתוצרת עצמית.
⚠ לא ניתן להגיע למקורלא ניתן היה להגיע לממשק ה-API של GitHub, כך שלא ניתן היה לבדוק את האישור בשני הצדדים.

מאמת את זה בעצמך

בנה מחדש את שמות הדו-שיח 'אודות' והשווה:

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

ה-hash המודפס צריך להתאים גם לזה שבתיבת הדו-שיח About וגם לזה שב-commit זה סיכום ריצת מבנה מקור. אתה יכול גם לבדוק את החתימה ישירות עם GitHub CLI:

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

כנרית הצו

קנרי צו הוא הצהרה, שפורסמה בלוח זמנים קבוע, שיש ליזם לֹא קיבלו צו ממשלתי סודי שאסור להם לחשוף - א מכתב ביטחון לאומי, צו FISA. ניתן לאלץ את היזם לשתוק לגביו פקודה כזו, אבל אי אפשר להכריח אותה לשקר, אז הקנרית הולכת ומעופשת או נעלמת היא עצמו האות.

זה חי ב canary.json בשורש המאגר ומאוחזר ישירות מ-GitHub, כך שההיסטוריה שלו ניתנת לביקורת ללא תלות בכל מה שהאתר הפרוס אומר. תיבת הדו-שיח 'אודות' מקודדת אותו בצבע:

צֶבַעאֶמְצָעִי
יָרוֹק - הכל ברורחתום, עדכני והחתימה תואמת את המפתח של המפתח. לא התקבלה פקודה סודית.
צָהוֹב - באיחור, או שלא הכל ברורזה לא היה רענן לפי התאריך הנקוב שלו, או שלו allClear הדגל שקרי. לא ניתן לשלול פקודה מושתקת.
אָדוֹם - חתימה לא חוקית, או שנעלמההחתימה אינה תואמת את המפתח של המפתח, או שהקובץ הוסר לחלוטין. התייחס לזה כאזהרה רצינית.

עוגן הרעננות

הקנרית החתומה מטביעה את גובה בלוק הביטקוין העדכני ביותר ואת ה-hash ברגע החתימה. לא ניתן היה לדעת את החשיש הזה לפני שהגוש היה קיים, מה שמוכיח שהכנרית הייתה חתום לְאַחַר נקודת זמן ספציפית במקום שנחתמה מראש בכמות גדולה חודשים קודם לכן. תיבת הדו-שיח 'אודות' מקשרת את העוגן לסייר בלוקים כדי שתוכל לבדוק אותו.