วิธีหนึ่งที่เป็นไปได้แม้ว่ามันจะใช้เวลานานมากในการฝึกฝน แต่กลับไปที่ราก การพัฒนา GNU เริ่มขึ้นในปี 1984 และ Minix รุ่นดั้งเดิม (ซึ่งใช้ในระหว่างการพัฒนา Linux ต้นเพื่อการทำ bootstrapping) ได้เปิดตัวในปี 1987
คำตอบทั้งหมดนี้ขึ้นอยู่กับหลักฐานของคุณว่า "[คุณ] หรือผู้อื่นมีความสามารถในการอ่านและทำความเข้าใจซอร์สโค้ดสำหรับข้อบกพร่องด้านความปลอดภัยดังนั้นซอร์สโค้ดจะถูกตรวจสอบก่อนรวบรวมก่อน" และคุณสามารถเชื่อถือผลลัพธ์ของการวิเคราะห์ดังกล่าว . หากปราศจากคำตอบนี้อาจแย่กว่าไร้ค่าเพราะคุณจะใช้เวลาจำนวนมากเพื่อประโยชน์ใด ๆ ทั้งสิ้น
หากคุณสามารถหาสำเนาของหนังสือ Minix ต้นฉบับพร้อมด้วยรหัสต้นฉบับคุณสามารถพิมพ์จากหนังสือ คอมไพล์มันและจากนั้นใช้ decompiler ที่แตกต่างกันบนระบบที่แตกต่างกันเพื่อตรวจสอบว่าคอมไพเลอร์สร้างเอาต์พุตภาษาไบนารีของเครื่องที่คาดไว้ (รหัสนี้มีเพียง 12,000 บรรทัด, สันนิษฐานว่า C, การทำเช่นนั้นใช้เวลานาน แต่ยังคงมีเหตุผลหากคุณจริงจังเกี่ยวกับโครงการดังกล่าว) คุณยังสามารถเขียน disassembler ของคุณเองได้; ที่ไม่ควรยากมาก
คว้ายูทิลิตี้ GNU รุ่นเก่าที่สุดที่คุณสามารถใช้ (เป็นเพราะสันนิษฐานว่ามีรหัสน้อยกว่าและพึ่งพาไลบรารีภายนอกน้อยกว่า), อ่านโค้ด, สร้างมันสำหรับ Minix (สิ่งนี้อาจใช้งานได้บ้าง; ต้องการหลีกเลี่ยงอย่างยิ่งคือการปรับเปลี่ยนซอร์สโค้ดเนื่องจากจะทำให้การเพิ่มแพตช์ในภายหลังเกิดข้อผิดพลาดได้ง่ายมาก) และผ่านรอบการตรวจสอบถอดแยกชิ้นส่วนที่คล้ายกันสำหรับเครื่องมือ GNU ณ จุดนี้คุณวางใจระบบปฏิบัติการและ toolchain ดังนั้นคุณจะต้องผ่านซอร์สโค้ดใน patchset เท่านั้น (สิ่งที่ไม่ได้อยู่ใน patchset นั้นเชื่อถือได้แล้ว) แต่เครื่องมือจะยังคงดั้งเดิมและหยาบเมื่อเทียบกับสิ่งที่คุณใช้ ถึงวันนี้ อย่าคาดหวังอะไรมากไปกว่าฟังก์ชั่นพื้นฐานของเครื่องมือระบบที่ใช้งานได้ตัวอย่างเช่นอ่าน XKCD มากมาย
ในบางจุดคุณจะมีระบบที่สามารถรวบรวมและ bootstrap เคอร์เนลรุ่นแรก ๆ ของ Linux ได้เหมือนกับที่ทำในต้นปี 1990 เมื่อ Linux เริ่มรับแรงฉุดจากแฮกเกอร์ ฉันขอแนะนำให้โยกย้ายไปยัง Linux ในจุดนั้น (สร้างไลบรารีระบบและ toolchain กับ Linux, สร้างเคอร์เนล Linux, บูตเข้าสู่ Linux และอาจสร้างเคอร์เนล Linux และ GNU toolchain ภายใน Linux อีกครั้งสุดท้ายพิสูจน์ว่าตอนนี้ระบบเป็นของตัวเองแล้ว โฮสติ้ง) แต่นั่นขึ้นอยู่กับคุณเป็นส่วนใหญ่ ทำการตรวจสอบแพตช์การแก้ไขเคอร์เนลไลบรารีและเครื่องมือ GNU พื้นฐานและสร้างใหม่จนกว่าคุณจะได้รับเวอร์ชันที่ทันสมัย
นั่นคือเมื่อคุณมีระบบปฏิบัติการพื้นฐานและคอมไพเลอร์ที่เชื่อถือได้ซึ่งสามารถใช้ในการสร้างซอฟต์แวร์ที่ทันสมัย จากนั้นคุณสามารถทำตามเช่นคู่มือLinux ตั้งแต่เริ่มต้นเพื่อสร้างระบบที่สามารถทำงานที่มีประโยชน์ได้
ไม่มีจุดใดที่ระบบ "คอมไพเลอร์" สามารถเชื่อมต่อกับเครือข่ายได้ทุกทาง (รวมถึงเป็น VM บนโฮสต์เครือข่าย); คุณอาจเสี่ยงต่อการเจาะผ่านองค์ประกอบที่รองรับเครือข่ายรวมถึงเคอร์เนล หากคุณกังวลเกี่ยวกับการโจมตีของคอมไพเลอร์ Thompsonคุณต้องคาดหวังว่าโฮสต์ VM ใด ๆ ก็อาจถูกโจมตีเช่นกัน ใช้ sneakernet เพื่อรับซอร์สโค้ดและไบนารีจากฟิสิคัลโฮสต์ที่คุณกำลังรวบรวมสิ่งต่าง ๆ คาดว่าจะมีปัญหาในการเปิดและปิดระบบไฟล์อย่างน้อยก่อนที่จะถึงจุดที่รองรับการใช้งานที่เก็บข้อมูล USB จำนวนมาก หากคุณมีความหวาดระแวงจริงๆแหล่งที่มาการพิมพ์รายชื่อรหัสและพิมพ์ด้วยมือ (และหวังว่าคนขับเครื่องพิมพ์และไม่ได้มีรหัสที่คล้ายกันในพวกเขา) หรืออ่านรหัสบนหน้าจอคอมพิวเตอร์เครื่องหนึ่งแล้วพิมพ์ลงในคอมพิวเตอร์อีกเครื่องที่อยู่ติดกัน แต่ไม่ได้เชื่อมต่อ
ใช่นี้จะใช้เวลามากของเวลา แต่ข้อดีของวิธีนี้คือแต่ละขั้นตอนเพิ่มขึ้นซึ่งหมายความว่ามันจะยากยิ่งขึ้นสำหรับสิ่งที่เป็นอันตรายที่จะแอบดูหากไม่ได้รับการแนะนำให้รู้จักอย่างค่อยเป็นค่อยไปในหลาย ๆ เวอร์ชั่น เนื่องจากชุดการเปลี่ยนแปลงในแต่ละขั้นตอนมีขนาดค่อนข้างเล็กและง่ายต่อการตรวจสอบมากกว่า เปรียบเทียบ patchset กับ changelog และตรวจสอบให้แน่ใจว่าคุณสามารถกำหนดรายการ changelog ที่ตรงกับการเปลี่ยนแปลงทุกครั้งในซอร์สโค้ด อีกครั้งนี่จะถือว่าคุณมีความสามารถ (อาจเป็นคนที่คุณไว้ใจ) เพื่อตรวจสอบว่าการเปลี่ยนแปลงดังกล่าวไม่ได้ถูกแอบเข้าไปใน codebase แต่คุณควรจะได้รับข้อมูลที่ใกล้เคียงกับระบบที่เชื่อถือได้เช่นเดียวกับซอฟต์แวร์เท่านั้น - วิธีเฟิร์มแวร์สามารถ