ฉันจะยืนยันได้อย่างไรว่าไบนารีในอูบุนตูของฉันนั้นมาจากซอร์สโค้ดที่ควรจะเป็น


25

เช่นเดียวกับผู้ใช้ 99% ฉันติดตั้ง Ubuntu จากไบนารีสำเร็จรูป

ฉันจะตรวจสอบตัวเองว่าไบนารีนั้นมาจากซอร์สโค้ดต้นฉบับจาก Ubuntu ได้อย่างไร

มันเป็นการดีที่จะตรวจสอบว่า NSA / บางคนไม่ได้ร่วมมือกับ Ubuntu หรือ Linode (ผู้ให้บริการ VPS ของฉัน) เพื่อยุ่งกับไบนารี หากเราสามารถตรวจสอบความถูกต้องของไบนารีพวกเขาก็ไม่น่าจะลองสิ่งนี้ตั้งแต่แรกเพราะมันง่ายที่จะเรียกพวกมันออกมา


คุณสามารถดูซอร์สโค้ดการใช้apt-get sourceหรือการใช้เพื่อคอมไพล์ของคุณเอง ดูคำถามนี้: askubuntu.com/questions/28372/…
วิลฟ์

4
อาจมีประโยชน์: จะตรวจสอบว่าไฟล์ที่ติดตั้งแพ็คเกจตรงกับต้นฉบับได้อย่างไร (เดเบียน แต่ควรอยู่ใกล้พอที่จะใช้กับ Ubuntu)
CVn

@ MichaelKjörlingผมกำลังมองหารุ่นของคำถามที่เรา ...
Braiam

1
@Braiam ฉันคิดว่าในกรณีนี้ Debian / Ubuntu ไม่ได้สร้างความแตกต่างมากนัก สิ่งที่จะสร้างความแตกต่างเป็นจุดมุ่งหมายของคำถามนั้น จุดเชื่อมโยงด้านบนมีจุดประสงค์หลักเพื่อตรวจหาไฟล์ที่เสียหายในบางจุดหลังการติดตั้งในขณะที่ไฟล์นี้ดูเหมือนว่าจะตรวจจับไฟล์ที่ถูกเปลี่ยนหรือดัดแปลงโดยมีเจตนาร้ายหรือไฟล์ไบนารีไม่ตรงกับรหัสต้นฉบับที่อ้างว่า ปัญหาที่แตกต่างกันซึ่งเป็นสาเหตุที่ฉันติดแท็กลิงก์เท่านั้น "อาจเป็นประโยชน์"
CVn

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

คำตอบ:


36

คุณสามารถดาวน์โหลดซอร์สโค้ดและรวบรวมด้วยตัวคุณเอง แต่รอ - ก่อนอื่นคุณต้องตรวจสอบซอร์สโค้ดนั้นเพราะถ้า Canonical ร่วมมือกับ NSA พวกเขาอาจป้อนรหัสบางแห่งเพื่อให้สามารถใช้ keylogger หรือสิ่งที่สามารถเปิดใช้งานจากระยะไกลได้

ดังนั้น...

  1. หลังจากดาวน์โหลดซอร์สโค้ด
  2. คุณต้องตรวจสอบรหัสทั้งหมด
  3. จากนั้นรวบรวมมัน!

แต่เดี๋ยวก่อนคุณไว้ใจคอมไพเลอร์ได้ไหม?


15
"คุณสามารถเชื่อถือคอมไพเลอร์ได้ไหม" นั่นคือเมื่อคุณออกไปสัมผัสและอ่านคำถามวิธีการรวบรวมคอมไพเลอร์ C จากรอยขีดข่วนแล้วรวบรวม Unix / Linux จากรอยขีดข่วน (และคำตอบที่เกี่ยวข้อง)
CVn

17
แต่คุณสามารถเชื่อถือฮาร์ดแวร์ของคุณได้หรือไม่? บางทีคุณควรสร้างคอมพิวเตอร์ของคุณจากศูนย์และนั่นคือสิ่งที่คุณพบกับปัญหาเล็ก ๆ น้อย ๆ ...
Thomas Thomas

และคุณสามารถเชื่อถือ hypervisor ที่ใช้งาน VM ของคุณ
Fernando Correia

1
ฉันไม่คิดว่าอาจมีประโยชน์ในการรวบรวมแหล่งที่มาในคอมไพเลอร์ที่คล้ายกันไม่กี่จากผู้เขียนที่แตกต่างกันและตรวจสอบผลลัพธ์ที่แตกต่าง แต่คุณจะรู้ได้อย่างไรว่าผู้เขียนไม่ใช่เอนทิตี้เดียวกันภายใต้ชื่อแทนจริง ๆ ? หรือน่าจะเกิดอะไรขึ้นถ้าคอมไพเลอร์เหล่านั้นมีบรรพบุรุษที่เสียหายร่วมกัน? และไม่มีสิ่งใดที่จะช่วยแก้ไขปัญหาความน่าเชื่อถือของฮาร์ดแวร์ได้
คม

6
แต่เดี๋ยวก่อน - คุณสามารถเชื่อใจได้หรือไม่ว่า Askubuntu นั้นไม่ได้ถูกกรองหรือควบคุมโดย NSA อย่างสมบูรณ์เพื่อหลีกเลี่ยงการบอกให้คุณทราบถึงพื้นที่ที่อาจถูกบุกรุกทั้งหมด
TheZ

9

หากคุณไม่ยอมรับ "เพราะอูบุนตูบอกเช่นนั้น" คุณก็ทำไม่ได้


2
ฉันจะเพิ่มว่าคุณสามารถ [ลอง] ตรวจสอบว่าไบนารีในระบบของคุณตรงกับไบนารีเดิมของ Ubuntu โดยเปรียบเทียบ checksums แน่นอนว่ารูทคิทที่เหมาะสมนั้นไม่สามารถตรวจจับได้ง่ายจากภายในระบบในทุกกรณี
Peteris

2
ใช้งานได้เฉพาะถ้าคุณเชื่อว่า "ไบนารี Ubuntu ดั้งเดิม" ไม่ได้ถูกดัดแปลง กล่าวอีกนัยหนึ่งถ้าคุณยอมรับว่ามันดีเพราะอูบุนตูบอกอย่างนั้น ;)
fkraiem

5

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

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

มีชุมชนการวิจัยขนาดเล็กอยู่รอบ ๆ ปัญหานี้อย่างแม่นยำ - วิธีการรวบรวมที่ทำซ้ำได้

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

แต่แล้วก็ยังมีปัญหาในการเชื่อถือคอมไพเลอร์ดังที่ได้กล่าวไปแล้ว ...


4

มันเป็นปัญหาที่ยากในการสร้างไบนารีเดียวกันที่แน่นอนในเครื่องที่แตกต่างกันสองเครื่อง โครงการ TOR ทำสิ่งนี้เป็นส่วนปกติของงานสร้าง มีคำอธิบายว่าพวกเขาทำได้อย่างไร DebianและFedoraดูเหมือนจะมีโครงการที่ทำให้สิ่งนี้เป็นไปได้สำหรับการแจกแจงนี้ แต่พวกเขาก็อยู่ในช่วงเริ่มต้น มันไม่ได้ดูเหมือนมีงานใด ๆ ทำในอูบุนตู

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


รายละเอียดเกี่ยวกับสิ่งที่เฉพาะเจาะจง
Josef

ไม่สนใจฉันสับสนกับการโพสต์ที่แตกต่างกัน :)
ทิม

0

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


นี่ไม่ใช่คำถามของ OP เขากังวลเกี่ยวกับซอร์สโค้ดที่อูบุนตูแจกจ่ายโดยไม่เหมือนกับไบนารี่ที่แจกจ่ายโดยอูบุนตู กล่าวอีกนัยหนึ่งพวกเขาพูดว่า "นี่คือแหล่งที่มา" แต่แหล่งที่มาที่สร้างไบนารีจากที่จริงมีรหัสแนะนำ NSA พิเศษบางอย่าง เขาไม่กังวลว่าไบนารีจะถูกดัดแปลงหลังจากสร้างขึ้น
John Chrysostom

OP โพสต์: "ฉันจะยืนยันตัวเองได้อย่างไรว่าไบนารีเหล่านั้นมาจากรหัสต้นฉบับดั้งเดิมจาก Ubuntu" คำตอบสำหรับคำถามนั้น อีกอันหนึ่งไร้สาระใครจะรู้ได้ว่าเคอร์เนล Linux ไม่ได้ถูกดัดแปลงโดยใคร (NSA หรือใครเคย?) ง่าย ๆ ดาวน์โหลดโค้ดอ่านและเมื่อคุณมีความสุขรวบรวมด้วยตัวคุณเอง นอกเหนือจากนั้นคำตอบของฉันคือคำถามที่ฉันคัดลอกมาตั้งแต่ต้นความคิดเห็นนี้
YoMismo

คุณยังไม่ได้ตอบคำถามที่คุณยกมา การใช้ MD5 ช่วยให้เขายืนยันว่าไบนารีในคอมพิวเตอร์ของเขาตรงกับไบนารีบนเซิร์ฟเวอร์ พวกเขาไม่อนุญาตให้เขาตรวจสอบว่าไบนารีที่เขาดาวน์โหลดนั้นรวบรวมจากแหล่ง Ubuntu ให้ ตอนนี้ฉันยอมรับว่าคำถามของเขาไร้สาระด้วยเหตุผลที่คุณ (และคนอื่น ๆ ) ระบุไว้ แต่นั่นเป็นคำถามของเขา
John Chrysostom

0

นั่นเป็นงานที่ยากฉันคิดว่าความไว้วางใจที่นี่ดีกว่างานที่ซับซ้อนนี้ แต่คำถามคุณเชื่อใจได้ไหม?

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

ให้สร้างสถานการณ์เพื่อจุดประสงค์นี้ฉันต้องการตรวจสอบว่าฉันUbuntu == source codeรอทำไมคุณไม่ลองเปรียบเทียบแพ็กเกจกับแหล่งที่มาของพวกเขา

  1. สร้างแพ็คเกจไบนารีสำหรับ Ubuntu จากแหล่งที่มา
  2. เปรียบเทียบแพ็คเกจไบนารีที่สร้างขึ้นเองกับแพคเกจที่เผยแพร่โดยการแจกจ่าย
  3. ใช้ซอร์ส apt-get -b เพื่อดาวน์โหลดซอร์ส

แต่สำหรับฉันเมื่อเปรียบเทียบกันแล้วจะให้ผลลัพธ์ที่แตกต่างกันเล็กน้อยเนื่องจากการประทับเวลาที่แตกต่างกันสภาพแวดล้อม แต่ไม่ได้พิสูจน์ว่ามันไม่ได้มาจากซอร์สโค้ด!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.