ไคลเอนต์ VPN โอเพนซอร์ส: โค้ดพิสูจน์อะไรได้ และอะไรที่พิสูจน์ไม่ได้
ที่เก็บโค้ดสาธารณะเป็นหลักฐานเกี่ยวกับซอร์สโค้ด ไม่ใช่เกี่ยวกับบิลด์ที่คุณติดตั้งหรือเซิร์ฟเวอร์ที่อยู่เบื้องหลัง จับคู่รีลีส แล้วจึงขยายการตรวจสอบ
ซอร์สโค้ดถูกเผยแพร่ สัญญาอนุญาตสะอาด และการเชื่อมต่อยังตรวจสอบไม่ได้ตั้งแต่ต้นจนจบ ช่องว่างนี้เป็นเรื่องปกติ และไม่ใช่เรื่องอื้อฉาว การเผยแพร่โค้ดทำให้องค์ประกอบหนึ่งตรวจสอบได้โดยคนที่ไม่ได้ถูกเชิญ และนั่นเป็นคุณสมบัติจริงและไม่ธรรมดา ไม่ได้หมายความว่าไบนารีที่คุณติดตั้งมาจากโค้ดนั้นหรือว่าสิ่งใดที่ผู้ให้บริการดำเนินการอยู่อีกฝั่งหนึ่งได้รับการตรวจสอบแล้ว
แยกองค์ประกอบออกจากผลิตภัณฑ์
มีสี่สิ่งที่จะติดป้ายโอเพนซอร์สได้ และน้อยครั้งที่ทั้งหมดจะเปิด แอปพลิเคชันไคลเอนต์คือสิ่งที่ผู้คนหมายถึง การนำโปรโตคอลไปใช้ข้างใต้เป็นสิ่งที่แตกต่างออกไป บางครั้งเป็นไลบรารีและบางครั้งเป็นโค้ดในทรี ซอฟต์แวร์เซิร์ฟเวอร์เป็นอย่างที่สาม และโครงสร้างพื้นฐานของผู้ให้บริการเอง พอร์ทัลบัญชีและเครื่องมือสนับสนุนเป็นอย่างที่สี่ แต่ละอย่างเปิดหรือปิดได้อย่างอิสระ
ดังนั้นข้อความอย่าง "แอปของเราเป็นโอเพนซอร์ส" จึงอธิบายรายการแรกและปล่อยส่วนที่เหลือไว้โดยไม่ตอบ ซึ่งไม่ใช่ความไม่ซื่อสัตย์แต่เป็นการเลื่อนประเภท คำถามที่มีประโยชน์คือที่เก็บใด แท็กใด ที่ตรงกับองค์ประกอบที่คุณพึ่งพา
ความแตกต่างนี้ยังอธิบายว่าทำไมผลิตภัณฑ์สองตัวที่มีไคลเอนต์เปิดเหมือนกันจึงให้ความมั่นใจที่ต่างกันมากได้ ไคลเอนต์คือส่วนที่คุณตรวจสอบได้ พฤติกรรมของผู้ดำเนินการคือส่วนที่คุณต้องประเมินด้วยวิธีอื่น
จับคู่บิลด์ที่ติดตั้งกับแท็กที่เผยแพร่
ที่เก็บโค้ดเป็นบันทึกของเจตนา ไบนารีบนดิสก์ของคุณคือสิ่งที่ทำงาน การปิดช่องว่างนั้นเป็นการฝึกเชิงกลไก และเริ่มจากการระบุสิ่งที่ติดตั้งอยู่จริง ไม่ใช่สิ่งที่หน้าดาวน์โหลดโฆษณา
| Component | What inspection can show | What it leaves untouched |
|---|---|---|
| Client source | How profiles, packets and optional telemetry are handled | Whether the shipped binary matches that source |
| Build output | Whether a declared build reproduces a matching artefact | Whether the source is correct or the toolchain is clean |
| Server software | What the implementation is capable of logging | What the operator actually configures and retains |
| Account and support systems | Almost nothing, unless they are separately published | Everything about how those systems treat your data |
เมทาดาทาของแพ็กเกจบอกเวอร์ชันและที่มา ซึ่งตัดกรณีง่าย ๆ ของแพ็กเกจที่ล้าสมัยหรือถูกแทนที่ออก แต่ไม่ได้บอกว่าแพ็กเกจนั้นถูกคอมไพล์อย่างไร และคำถามนั้นคือเหตุผลที่มีบิลด์ที่ทำซ้ำได้ บิลด์ที่ทำซ้ำได้ อนุญาตให้ฝ่ายอิสระสร้างใหม่จากซอร์สเดียวกันและเปรียบเทียบผลลัพธ์ทีละไบต์ เพื่อให้ความไม่ตรงกันกลายเป็นหลักฐานไม่ใช่ข้อสงสัย
แม้แต่การตรงกันอย่างสมบูรณ์ก็พิสูจน์ได้น้อยกว่าที่ผู้คนหวัง มันแสดงว่าสิ่งที่สร้างขึ้นตรงกับซอร์สและสูตรบิลด์ ไม่ได้แปลว่าซอร์สไม่มีข้อบกพร่อง และไม่ได้แปลว่าสายเครื่องมือที่ใช้เชื่อถือได้ ทั้งสองอย่างน่ารู้ แต่เป็นข้อกล่าวอ้างที่ต่างกัน
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgอาการมักเริ่มจากที่ใด
ข้อร้องเรียนที่จุดประกายการอ่านนี้ไม่ค่อยเป็น "โค้ดปิด" โดยปกติเป็นการสังเกตเฉพาะ เช่น ไคลเอนต์ที่ติดต่อไปยังที่ที่ไม่คาดคิด เวอร์ชันที่ต่างจากบันทึกประจำรุ่น หรือกระบวนการสนับสนุนที่ขอมากกว่าที่อุโมงค์ควรต้องใช้ แต่ละจุดชี้ไปยังองค์ประกอบที่ต่างกัน
ทราฟฟิกเครือข่ายที่ไม่คาดคิดจากไคลเอนต์เป็นคำถามเรื่องซอร์สโค้ดของไคลเอนต์ และตอบได้ด้วยการอ่านเส้นทางโค้ดที่เปิดการเชื่อมต่อ ความไม่ตรงกันของเวอร์ชันเป็นคำถามเรื่องการแพ็กเกจ กระบวนการสนับสนุนที่ขอเอกสารยืนยันตัวตนเป็นคำถามเรื่องระบบบัญชี และไม่มีการตรวจสอบไคลเอนต์ใดจะแก้ได้
การระบุชื่อองค์ประกอบเปลี่ยนความไม่ไว้วางใจที่คลุมเครือให้เป็นการตรวจสอบที่เฉพาะเจาะจง การตรวจสอบที่เฉพาะเจาะจงตอบได้ โต้แย้งได้ หรือปิดได้ ทางเลือกอื่นคือความสงสัยถาวรโดยไม่มีก้าวต่อไป
สิ่งที่การตรวจสอบเอื้อมไม่ถึง และสิ่งที่ควรทำแทน
การเก็บรักษาบนเซิร์ฟเวอร์ของผู้ให้บริการอยู่นอกเหนือการเข้าถึงของไคลเอนต์ เช่นเดียวกับพฤติกรรมของพอร์ทัลการเรียกเก็บเงิน ผู้ให้บริการตรวจสอบการฉ้อโกง หรือโต๊ะสนับสนุนที่เก็บไฟล์แนบ การตรวจสอบไคลเอนต์ที่ยืดออกไปถึง "เราตรวจสอบบริการแล้ว" เป็นข้อกล่าวอ้างที่หลักฐานไม่สนับสนุน
อ่านสิ่งที่ผู้ดำเนินการเผยแพร่เกี่ยวกับการเก็บรักษาและคำขอ บันทึกวันที่ และถือเป็นถ้อยแถลงของฝ่ายที่มีส่วนได้ส่วนเสีย ไม่ใช่การวัด นั่นเป็นหลักฐานรูปแบบที่อ่อนกว่า และการระบุความแตกต่างอย่างชัดเจนมีประโยชน์กว่าการยกระดับมันเมื่อเล่าซ้ำ
จากนั้นใช้สิ่งที่คุณมีเป็นหนึ่งในหลายปัจจัย ได้แก่ อัตลักษณ์ของรีลีสที่ติดตั้ง ซอฟต์แวร์ได้รับการดูแลหรือไม่การกำหนดค่าไคลเอนต์ และสิ่งที่ผู้ดำเนินการกล่าวถึงระบบของตัวเอง โค้ดเปิดเสริมการประเมินนั้นในจุดหนึ่ง ไม่ได้แทนที่ส่วนที่เหลือ
ข้อกล่าวอ้างเรื่องการตรวจสอบควรระบุองค์ประกอบและเวอร์ชันเสมอ หากรายงานไม่สามารถบอกได้ว่าตรวจสอบที่เก็บใดและบิลด์ใด แสดงว่ากำลังอธิบายเจตนาไม่ใช่ผลิตภัณฑ์