สมมติแอปเดสก์ท็อปดาวน์โหลดได้ทั้งจากหน้าเผยแพร่และมิเรอร์ ชื่อไฟล์กับเลขรุ่นตรงกัน แต่ผู้ใช้ยังต้องรู้ว่าเป็นไฟล์เดียวกันไหม ใครเผยแพร่ มาจากโค้ดและกระบวนการบิลด์ที่คาดหรือไม่ และเหมาะจะรันบนเครื่องนี้ไหม
คำถามเหล่านี้ต้องใช้หลักฐานต่างกัน การเรียกวิธีตรวจทุกอย่างว่า “รับรองความปลอดภัย” สร้างความคาดหวังที่วิธีนั้นทำไม่ได้ และอาจทำให้นักพัฒนามองข้ามช่องว่างในกระบวนการเผยแพร่
เช็กซัมตอบว่าไฟล์ตรงกันหรือไม่
คำนวณแฮชหลังดาวน์โหลดแล้วเทียบค่าที่คาดช่วยยืนยันว่าเนื้อหาไฟล์ตรงกันหรือไม่ เงื่อนไขสำคัญคือค่าที่คาดต้องมาจากช่องทางน่าเชื่อถือ หากทั้งไฟล์และเช็กซัมมาจากหน้าเดียวที่ยังไม่ตรวจ ความตรงกันไม่ได้ยืนยันตัวตนผู้เผยแพร่
ในทางกลับกัน แฮชต่างหมายถึงไฟล์ต่าง แต่ลำพังไม่พิสูจน์เจตนาร้าย บิลด์ต่าง การแพ็กใหม่ หรือดาวน์โหลดผิดล้วนทำให้ต่างได้ หยุดถือว่าไฟล์นั้นเป็นรุ่นที่ตรวจแล้ว และยืนยันแหล่งที่มา แพลตฟอร์มเป้าหมาย กับบันทึกเช็กซัมที่ตรงกันใหม่
ผู้เผยแพร่ควรดูแลชื่อไฟล์ที่ชัด ข้อมูลรุ่น และรายการเช็กซัมไว้ด้วยกัน ผู้ใช้ไม่ควรต้องคัดลอกแฮชจากบทความเก่ามาเทียบตัวติดตั้งของคนละแพลตฟอร์มหรือคนละบิลด์
ลายเซ็นต้องตรวจตัวตนที่คาดด้วย
ลายเซ็นดิจิทัลเชื่อมผู้ลงนามกับข้อมูลที่ลงนาม แต่การตรวจต้องดูด้วยว่าตัวตนนั้นตรงที่คาดไหม เอกสาร Sigstore กำหนดให้ตรวจลายเซ็นร่วมกับเงื่อนไขตัวตนและผู้ออกที่เกี่ยวข้อง ซึ่งแสดงความต่างนี้ เอกสารตรวจ Sigstore
เมื่อเห็น “ลายเซ็นถูกต้อง” ผู้ใช้ควรระบุด้วยว่าหมายถึงผู้เผยแพร่หรือเวิร์กโฟลว์ใด นักพัฒนาควรบอกว่าตัวตนใดลงนามรุ่นทางการได้ ลายเซ็นที่ผ่านคณิตศาสตร์ไม่ควรทำให้เป็นรุ่นทางการโดยอัตโนมัติ
เมื่อเปลี่ยนใบรับรองหรือวิธีลงนาม ผู้เผยแพร่ต้องให้คำอธิบายที่ตรวจได้ด้วย การให้ผู้ใช้เชื่อใบรับรองไม่คุ้นทันทีไม่ใช่ขั้นตอนอัปเดตที่ครบถ้วน
ที่มาบิลด์เชื่อมแพ็กเกจกับกระบวนการผลิต
การรับรองอาร์ติแฟกต์ของ GitHub บันทึกที่มาบิลด์ได้ ช่วยตรวจความสัมพันธ์กับข้อมูลรีโพซิทอรีและเวิร์กโฟลว์ เป็นหลักฐานว่าไฟล์สร้างอย่างไร แต่ยังต้องตรวจอาร์ติแฟกต์จริงและตัวตนที่คาด เอกสารการรับรองอาร์ติแฟกต์ GitHub
ระดับบิลด์ SLSA แยกการมีบันทึกที่มา ที่มาลงนามซึ่งสร้างโดยแพลตฟอร์มโฮสต์ และการปกป้องแพลตฟอร์มบิลด์ที่เข้มขึ้น เมื่ออ้างระดับควรบอกขอบเขตและหลักฐาน ไม่ใช้ตัวเลขเป็นคะแนนครอบคลุมความเสี่ยงซอฟต์แวร์ทุกชนิด ระดับบิลด์ SLSA
| หลักฐาน | ช่วยยืนยันหลัก ๆ | สิ่งที่ยืนยันเองไม่ได้ |
|---|---|---|
| เช็กซัม | ได้เนื้อหาไฟล์ตามคาดหรือไม่ | ตัวตนผู้เผยแพร่หรือพฤติกรรมโปรแกรมที่ปลอดภัย |
| ลายเซ็นดิจิทัล | ใครลงนามข้อมูลใด | ผู้ลงนามผ่านเกณฑ์ความเชื่อถือของคุณหรือไม่ |
| ที่มาบิลด์ | กระบวนการใดสร้างอาร์ติแฟกต์ | โค้ดและส่วนพึ่งพาทั้งหมดไร้ปัญหา |
| บิลด์ที่ทำซ้ำได้ | สร้างอาร์ติแฟกต์เดียวกันภายใต้เงื่อนไขกำหนดได้ไหม | ซอฟต์แวร์ไม่มีช่องโหว่หรือพฤติกรรมไม่เหมาะสม |
หลักฐานเหล่านี้เสริมกันได้ นักพัฒนาควรอธิบายว่าจัดให้อะไรและยังต้องตรวจอะไรแยก
บิลด์ที่ทำซ้ำได้ต้องระบุอินพุตและสภาพแวดล้อม
โครงการ Reproducible Builds นิยามว่าต้องสร้างอาร์ติแฟกต์ที่ระบุตรงกันทุกบิตจากซอร์สโค้ด สภาพแวดล้อม และคำสั่งบิลด์เดียวกัน เป็นเป้าตรวจที่แม่นยำกว่า “คอมไพล์ได้บนเครื่องฉัน” นิยามบิลด์ที่ทำซ้ำได้
เราแนะนำให้เก็บชุดเครื่องมือ ข้อมูลล็อกส่วนพึ่งพา พารามิเตอร์บิลด์ และความสัมพันธ์กับอาร์ติแฟกต์เผยแพร่ ถ้ายังทำซ้ำไม่ได้ ให้บันทึกตามจริงว่าบิลด์ใหม่สำเร็จถึงไหน ไม่ข้ามความต่างแล้วประกาศผ่าน
ขอบเขตรีโพซิทอรีสาธารณะต้องอธิบายด้วย อาจมีซอร์สหลัก หรือส่วนใหญ่เป็นเครื่องมือบิลด์ การตั้งค่า และแพ็กเกจแอปที่สร้างจากต้นน้ำ ผู้ใช้ต้องรู้ว่าส่วนใดตรวจและสร้างใหม่ได้จริง เพื่อประเมินหลักฐานที่มาอย่างสมเหตุสมผล
ลำดับตรวจดาวน์โหลดที่ใช้ได้จริง
- ยืนยันรีโพซิทอรีเผยแพร่จากช่องทางทางการของโครงการ ไม่อาศัยเพียงโฆษณาค้นหาหรือลิงก์ส่งต่อ
- อ่านบันทึกรุ่น ตรวจระบบปฏิบัติการ สถาปัตยกรรมหน่วยประมวลผล และช่องทางรุ่น
- เทียบไฟล์กับเช็กซัมตรงรุ่น หากมีลายเซ็นหรือที่มา ให้ตรวจตัวตนที่คาดและขอบเขตด้วย
- ตรวจสถานะบำรุงรักษาและข้อจำกัดที่ทราบ โดยไม่ถือว่าป้าย “ล่าสุด” แปลว่าเหมาะกับงานจริง
- เมื่อข้อมูลขัดกัน เก็บรุ่นและชื่อไฟล์แล้วขอคำชี้แจงผ่านช่องทางสนับสนุนโครงการ
ขั้นตอนนี้ไม่ได้ต้องการให้ผู้ใช้ทุกคนเป็นวิศวกรบิลด์ ผลิตภัณฑ์จัดหลักฐานซับซ้อนเป็นหน้าเผยแพร่ชัดเจนได้ โดยบอกไฟล์มาจากไหน เหมาะกับใคร ตรวจอย่างไร และสอบถามความต่างที่ใด
สำหรับนักพัฒนา การรักษาสายข้อมูลนี้ต่อเนื่องมีค่ากว่าติดตรา “ตรวจแล้ว” ครั้งเดียว ผู้ใช้ควรยังหาคำอธิบายได้เมื่อรุ่นเก่าถูกถอน วิธีลงนามเปลี่ยน หรืออัปเดตล้มเหลว
คำอธิบายรีโพซิทอรีสาธารณะของ AlphaBiz แยกเครื่องมือบิลด์จากชุดแอปที่สร้างต้นน้ำ เมื่อพูดถึงแอปเดสก์ท็อปเช่นนี้ เราควรบอกขอบเขตตรวจจริงเช่นกัน ไม่ปะปนรีโพซิทอรีสาธารณะ ซอร์สครบ และรุ่นที่สร้างซ้ำได้ ภาพรวมโครงการ AlphaBiz
นักพัฒนาเริ่มจากทำรายการหลักฐานรุ่นให้ครบ ผู้ใช้เริ่มจากตรวจดาวน์โหลดหนึ่งรายการของแอปที่ใช้บ่อย แชร์ข้อมูลตรวจสอบที่อยากเห็นบนหน้าเผยแพร่ใน AlphaBiz Discussions