ข้ามไปที่เนื้อหา
กลับมาที่ Nymchat

ฐานความรู้ ภายใต้ประทุน

การตรวจสอบการสร้าง

โอเพ่นซอร์สจะช่วยได้ก็ต่อเมื่อโค้ดที่คุณใช้งานอยู่นั้นเป็นโค้ดเดิมเท่านั้น เผยแพร่แล้ว Nymchat ถูกสร้างขึ้นตามที่กำหนด ดังนั้นคุณสามารถตรวจสอบได้ด้วยตัวเองจากภายใน แอพหรือจากเทอร์มินัล

งานสร้างที่ทำซ้ำได้

การสร้างแอปจะปล่อย build-manifest.json ที่มีแหล่งที่มากระทำ แฮช SHA-256 ของเนื้อหา HTML, JavaScript และ CSS ที่แสดงทั้งหมด และรายการเดียว bundleHash เหนือชุดเนื้อหาทั้งหมดนั้น

ผลลัพธ์จะขึ้นอยู่กับเนื้อหาต้นฉบับเท่านั้น แม้แต่เวลาในการสร้างที่บันทึกไว้ก็ยังเป็น การประทับเวลาของคอมมิตแทนที่จะเป็นช่วงเวลาที่บิลด์รัน - ดังนั้นใครก็ตามที่สร้างสิ่งเดียวกันขึ้นมาใหม่ คอมมิตได้รับไฟล์ไบต์เหมือนกันและเหมือนกัน bundleHash.

จากนั้น GitHub Action จะสร้างแต่ละคอมมิตขึ้นใหม่โดยแยกจากกันและลงนามในหลักฐานการ build การรับรองแฮชและรายการ ดังนั้นจึงมีบันทึกที่ลงนามผูกก bundleHash ไปยังการคอมมิตในพื้นที่เก็บข้อมูลซึ่งผลิตโดยสิ่งอื่นที่ไม่ใช่ การใช้งาน

สิ่งที่กล่องโต้ตอบเกี่ยวกับตรวจสอบ

เกี่ยวกับ ในส่วนหัวจะเรียกใช้การตรวจสอบสดในเบราว์เซอร์ของคุณ

กล่องโต้ตอบเกี่ยวกับ Nymchat แสดงเวอร์ชัน ความสมบูรณ์ของการสร้าง และรับประกันสถานะคานารี
กล่องโต้ตอบเกี่ยวกับ: เวอร์ชัน ความสมบูรณ์ของการสร้าง รับประกันคานารี และสายตรงถึงนักพัฒนา

โดยดึงเนื้อหาแต่ละรายการที่เพจกำลังทำงานอยู่อีกครั้ง แฮชด้วย Web Crypto API และ เปรียบเทียบกับรายการ จากนั้น — และนี่คือส่วนที่สำคัญ — มัน คำนวณใหม่ bundleHash จากแฮช มัน แค่คำนวณ ไม่ใช่จาก สิ่งใดก็ตามที่มีการอ้างสิทธิ์อย่างชัดแจ้งและค้นหาสิ่งนั้นในเอกสารรับรองที่ลงนามของที่เก็บ ผ่าน GitHub API

นั่นคือสิ่งที่หยุดการปรับใช้จากการรับรองตัวเอง: ให้บริการไฟล์ที่แก้ไขร่วมกับ รายการการจับคู่ยังคงล้มเหลว เนื่องจากแฮชที่คำนวณใหม่ไม่มีการรับรอง

สถานะวิธี
&ตรวจสอบ; แอปอย่างเป็นทางการที่ได้รับการยืนยันแล้ว (n/n)ทุกเนื้อหาที่ตรงกัน แฮชบันเดิลที่คำนวณใหม่จะได้รับการรับรองโดยที่เก็บ และ หน้านี้ให้บริการจากโดเมนอย่างเป็นทางการ
build บิลด์ที่ยืนยันแล้ว · ไม่ใช่แอปอย่างเป็นทางการรหัสนี้เป็นของแท้และได้รับการรับรอง แต่นี่คือมิเรอร์ในโดเมนอื่น มิเรอร์ไม่สามารถลบคำเตือนนี้ได้หากไม่ผ่านการตรวจสอบ
✗ ไม่ตรงกันเนื้อหาไม่ได้แฮชกับสิ่งที่รายการระบุไว้
✗ โครงสร้างอย่างไม่เป็นทางการแฮชบันเดิลที่คำนวณใหม่ไม่มีการรับรองจากพื้นที่เก็บข้อมูล ซึ่งเป็นรายการที่สร้างขึ้นเอง
⚠ ไม่สามารถหาที่มาได้ไม่สามารถเข้าถึง GitHub API ได้ ดังนั้นจึงไม่สามารถตรวจสอบการรับรองด้วยวิธีใดวิธีหนึ่งได้

ยืนยันด้วยตัวเอง

สร้างคอมมิตชื่อไดอะล็อกเกี่ยวกับใหม่และเปรียบเทียบ:

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

แฮชที่พิมพ์ควรตรงกันทั้งอันในกล่องโต้ตอบเกี่ยวกับและอันในคอมมิตนั้น สรุปการรัน build-provenance คุณยังสามารถตรวจสอบลายเซ็นได้โดยตรงด้วย GitHub CLI:

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

แอป Android และ iOS

การตรวจสอบข้างต้นเป็นการตรวจสอบเว็บแอป และเหตุผลที่ควรระบุอย่างชัดเจนก็คือแอปเนทีฟ ไม่สามารถทำสิ่งเดียวกันกับตัวมันเองได้ สิ่งที่ทำงานบนโทรศัพท์ของคุณคือรหัสเครื่องที่คอมไพล์ ไม่ใช่ แหล่งที่มาในพื้นที่เก็บข้อมูล และไม่มีสิ่งใดที่แอปสามารถคำนวณบนอุปกรณ์เกี่ยวข้องกับสิ่งใดได้ อื่น ๆ

Android สามารถทำสิ่งที่ดีที่สุดรองลงมาได้ ที่ติดตั้ง .apk เป็นไฟล์ที่แอปสามารถอ่านได้ และแฮช และแฮชของทุกการเผยแพร่ที่เผยแพร่นั้นเป็นแบบสาธารณะแล้ว: การเผยแพร่ไปยัง Zapstore ลงนามในเหตุการณ์ Nostr ซึ่งมี SHA-256 ของ APK และ SHA-256 ของใบรับรองการลงนาม ดังนั้น หุ่นยนต์ เกี่ยวกับ กล่องโต้ตอบแฮช APK ที่มันใช้งานอยู่ ดึงข้อมูลเหล่านั้นที่ลงนาม เหตุการณ์ เก็บเฉพาะเหตุการณ์ที่ลงนามโดยคีย์ของนักพัฒนาและเปรียบเทียบ มันแสดงให้เห็นทั้งสองคน แฮชเช่นกัน เพื่อให้คุณสามารถทำซ้ำการตรวจสอบอุปกรณ์: ดาวน์โหลด APK ที่เผยแพร่แล้วเรียกใช้ sha256sum และดูเหตุการณ์เดียวกันด้วยตัวคุณเอง

ไม่สามารถตรวจสอบแอปที่ติดตั้งจาก Google Play ด้วยวิธีนี้ได้, และนั่นไม่ใช่สัญญาณว่าไม่มีอะไรผิด Google ลงนามทุกอัปโหลดด้วยคีย์ของตัวเองและสร้าง APK แบบแยกต่างหากสําหรับอุปกรณ์แต่ละอุปกรณ์ดังนั้นสิ่งที่ตกอยู่ในโทรศัพท์ของคุณไม่ใช่ไฟล์ที่ผู้พัฒนาผลิตและ hash ของมันไม่ตรงกับอะไรที่สามารถเผยแพร่ แอปพลิเคชันตระหนักถึงการติดตั้ง Play และกล่าวว่าแทนที่จะรายงานความล้มเหลว ในการตรวจสอบการสร้างตัวเองติดตั้ง APK ที่เผยแพร่โดยตรง

iOS ไม่สามารถตรวจสอบได้เลย Apple เข้ารหัสและลงนามการดาวน์โหลดแต่ละครั้งอีกครั้ง ทีละรายการ ดังนั้นแฮชที่คำนวณบน iPhone ของคุณจึงไม่ซ้ำกับ iPhone ของคุณและไม่ตรงกันเลย เผยแพร่ได้ทุกที่ กล่องโต้ตอบเกี่ยวกับบอกสิ่งนี้อย่างชัดเจนแทนที่จะแสดงความมั่นใจ สถานะที่ไม่มีความหมายอะไรเลย หากคุณต้องการ Nymchat คุณสามารถตรวจสอบได้บนฮาร์ดแวร์ของ Apple ให้ใช้เว็บ แอพซึ่งจะตรวจสอบทุกไฟล์ที่กำลังทำงานอยู่

สิ่งนี้ไม่มีอะไรพิสูจน์ได้

การตรวจสอบว่าแอปทำงานด้วยตัวมันเองไม่สามารถพิสูจน์ได้ว่าแอปนั้นซื่อสัตย์ ใครก็ตามที่เป็นผู้แก้ไขแอปนั้น สามารถลบเช็คได้เช่นกัน สิ่งที่พิสูจน์ได้คือกรณีธรรมดา: ว่าการลอกเลียนแบบคุณ ติดตั้งแล้วคือสำเนาที่เผยแพร่ ที่มีคุณค่าเพราะคุณค่าของมัน การเปรียบเทียบเป็นแบบสาธารณะ ดังนั้นบุคคลอื่นที่ไม่ใช่คุณสามารถตรวจสอบได้และไม่เห็นด้วย

หมายนกคีรีบูน

Canary ของหมายจับคือคำแถลงที่เผยแพร่ตามกำหนดเวลาที่นักพัฒนาซอฟต์แวร์มี ไม่ ได้รับคำสั่งลับจากทางราชการซึ่งห้ามมิให้เปิดเผย — ก จดหมายความมั่นคงแห่งชาติ ซึ่งเป็นคำสั่งของ FISA นักพัฒนาซอฟต์แวร์สามารถถูกบังคับให้นิ่งเฉยได้ คำสั่งเช่นนั้นแต่มิอาจบังคับให้โกหกได้ นกคีรีบูนจึงเหม็นอับหรือดับไป เองเป็นสัญญาณ

มันอาศัยอยู่ใน canary.json ที่รูทของที่เก็บและถูกดึงข้อมูลโดยตรง จาก GitHub ดังนั้นประวัติจึงสามารถตรวจสอบได้โดยอิสระจากสิ่งที่ไซต์ที่ปรับใช้ระบุไว้ กล่องโต้ตอบเกี่ยวกับรหัสสี:

สีวิธี
สีเขียว — ทุกอย่างชัดเจนลงนาม เป็นปัจจุบัน และลายเซ็นตรงกับรหัสของนักพัฒนา ไม่ได้รับคำสั่งลับใดๆ
สีเหลือง — เกินกำหนดหรือไม่ชัดเจนทั้งหมดไม่ได้รับการรีเฟรชตามวันที่ที่ระบุไว้หรือ allClear ธงเป็นเท็จ ไม่สามารถตัดคำสั่งที่ถูกปิดปากออกได้
สีแดง — ลายเซ็นไม่ถูกต้องหรือหายไปลายเซ็นไม่ตรงกับคีย์ของนักพัฒนา หรือไฟล์ถูกลบออกทั้งหมด ถือเป็นการเตือนที่ร้ายแรง

สมอความสด

นกขมิ้นที่ลงนามจะฝังความสูงและแฮชของบล็อก Bitcoin ล่าสุดในขณะที่ลงนาม ไม่สามารถทราบแฮชดังกล่าวได้ก่อนที่จะมีบล็อก ซึ่งพิสูจน์ได้ว่ามีนกคีรีบูนอยู่ ลงนาม หลังจาก ในช่วงเวลาที่เฉพาะเจาะจง แทนที่จะลงนามล่วงหน้าเป็นจำนวนมากหลายเดือนก่อนหน้านี้ กล่องโต้ตอบเกี่ยวกับจะเชื่อมโยงจุดยึดกับตัวสำรวจบล็อก เพื่อให้คุณสามารถตรวจสอบได้