4
วิธีรวบรวมคอมไพเลอร์ C ตั้งแต่เริ่มต้นจากนั้นคอมไพล์ Unix / Linux จากศูนย์
สมมติว่าฉันทำงานให้กับองค์กรบริการขนาดใหญ่นอกสหรัฐอเมริกา / สหราชอาณาจักร เราใช้เซิร์ฟเวอร์ UNIX และ Linux อย่างกว้างขวาง การอ่านบทความนี้ระบุว่าเป็นการง่ายที่จะแทรกแบ็คดอร์ในคอมไพเลอร์ C จากนั้นโค้ดใด ๆ ที่คอมไพล์ด้วยคอมไพเลอร์นั้นจะมีแบ็คดอร์ จากการรั่วไหลเมื่อเร็ว ๆ นี้เกี่ยวกับคำสั่งของ NSA / GCHQ ที่จะทำให้แบ็คดอร์ / จุดอ่อนในวิธีการเข้ารหัสฮาร์ดแวร์และซอฟต์แวร์ทั้งหมดคอมไพเลอร์กลายเป็นจุดสำคัญของความล้มเหลว ศักยภาพการกระจาย UNIX / Linix มาตรฐานทั้งหมดอาจถูกบุกรุก เราไม่สามารถที่จะมีระบบข้อมูลและข้อมูลลูกค้าของเราที่ถูกโจมตีโดยรัฐบาลโกง รับข้อมูลนี้ฉันต้องการสร้างคอมไพเลอร์ที่เชื่อถือได้ตั้งแต่เริ่มต้นแล้วฉันมีฐานที่ปลอดภัยในการสร้างดังนั้นฉันจึงสามารถสร้างระบบปฏิบัติการและแอปพลิเคชันจากซอร์สโค้ดโดยใช้คอมไพเลอร์นั้น คำถาม อะไรคือวิธีที่ถูกต้อง (และปลอดภัย) ในการรวบรวมคอมไพเลอร์จากซอร์สโค้ด (สถานการณ์ไก่ไข่ที่ดูเหมือน) แล้วรวบรวมการแจกจ่าย Unix / Linux ที่เชื่อถือได้ตั้งแต่เริ่มต้น? คุณสามารถสันนิษฐานได้ว่าฉันหรือผู้อื่นมีความสามารถในการอ่านและทำความเข้าใจซอร์สโค้ดสำหรับข้อบกพร่องด้านความปลอดภัยดังนั้นซอร์สโค้ดจะถูกตรวจสอบก่อนรวบรวม สิ่งที่ฉันเป็นจริงหลังจากนั้นเป็นแนวทางในการทำงานเพื่อสร้างคอมไพเลอร์นี้จากศูนย์อย่างปลอดภัยและสามารถใช้ในการรวบรวมเคอร์เนลส่วนอื่น ๆ ของระบบปฏิบัติการและแอปพลิเคชัน สแต็กการรักษาความปลอดภัยจะต้องเริ่มต้นที่ระดับฐานหากเรามั่นใจในระบบปฏิบัติการหรือแอพพลิเคชั่นที่ทำงานบนสแต็กนั้น ใช่ฉันเข้าใจว่าอาจมีฮาร์ดแวร์ด้านหลังซึ่งอาจแทรกไมโครโค้ดบางส่วนลงในคอมไพเลอร์เมื่อสร้างขึ้น ไม่มากที่เราสามารถทำได้เกี่ยวกับเรื่องนี้ในขณะนั้นยกเว้นอาจใช้ชิปที่ไม่ได้ออกแบบในสหรัฐอเมริกา มาจัดเรียงเลเยอร์นี้เพื่อเริ่มต้นและสมมติว่าฉันสามารถสร้างมันบนคอมพิวเตอร์เครื่องเก่าก่อนที่จะแทรกแบ็คดอร์ใดก็ได้ ดังที่บรูชชไนเออร์พูดว่า: "สำหรับวิศวกรฉันพูดแบบนี้: เราสร้างอินเทอร์เน็ตและพวกเราบางคนช่วยในการล้มล้างตอนนี้พวกเราที่รักเสรีภาพต้องแก้ไขมัน" …