เหตุใดการปิดใช้งาน“ Secure Boot” จึงบังคับใช้นโยบายเมื่อติดตั้งโมดูลของบุคคลที่สาม


46

เมื่อติดตั้ง16.04ผมก็ถามว่าจะปิด " การรักษาความปลอดภัย Boot " ถ้าผมต้องการที่จะติดตั้ง3 โมดูลบุคคล

ฉันไม่ปฏิบัติตาม

และเมื่อฉันติดตั้งไดรเวอร์บุคคลที่สามที่ฉันใช้ด้วยตนเอง ( bcmwl-kernel-source ) ฉันถูกถามอีกครั้ง (ระหว่างการติดตั้งแพ็คเกจ) เพื่อปิด "Secure Boot"

ใช้bcmwl เคอร์เนลแหล่งที่มาถูกที่ดีที่สุดที่ดีกับBoot การรักษาความปลอดภัยใน15.10 ดูเหมือนว่านี่จะไม่เกี่ยวข้องกับข้อผิดพลาดสำหรับฉัน

ดังนั้นนี่ดูเหมือนว่า Ubuntu จะไม่เซ็นสัญญากับไดรเวอร์ / โมดูลของบุคคลที่สามอีกต่อไปเพื่อให้มันทำงาน (??) ด้วย "Secure Boot" หรือดูเหมือนว่าจะพิจารณาโมดูลของบุคคลที่สามว่าไม่ปลอดภัยและทำลาย "Secure Boot" ดังนั้น inforcing เพื่อปิดการใช้งานเพื่อให้มันชัดเจน ?? ฉันถูกไหม ?


6
IMO เป็นเพราะคน (ตู่) ถือว่าการบูตปลอดภัยจะทำลายโมดูลของบุคคลที่สามเมื่อให้คำแนะนำ ข้อมูลด้านเทคนิคในการบูตที่เชื่อถือได้อยู่ที่นี่ - wiki.ubuntu.com/SecurityTeam/SecureBoot โดยส่วนตัวแล้วฉันไม่เห็นด้วยกับคำแนะนำที่แพร่หลายในการเริ่มระบบบูตอย่างปลอดภัยทำงานได้ดีบนฮาร์ดแวร์ของฉันที่เปิดใช้งานการบูตอย่างปลอดภัย IMO เปิดใช้งานการเริ่มระบบแบบปลอดภัยเว้นแต่ว่าคุณมีปัญหาไม่สามารถปิดใช้งานคุณลักษณะด้านความปลอดภัยได้
Panther

8
ฉันไม่ได้พิจารณาเรื่องนี้ในเชิงลึก แต่อย่างที่ฉันเข้าใจ 16.04 กำลังย้ายไปใช้การบังคับใช้ Secure Boot ที่เข้มงวดกว่า 15.10 และเวอร์ชันก่อนหน้านี้ที่ใช้ โดยเฉพาะใน 15.10 และก่อนหน้านี้เมื่อ Shim เปิดตัว GRUB GRUB จะเปิดเคอร์เนล Linux ใด ๆ Secure Boot protection จะจบลงด้วย GRUB ความเข้าใจของฉันคือว่าด้วย 16.04 การบังคับใช้นโยบาย Secure Boot ขยายไปถึงเคอร์เนลดังนั้น GRUB ของ Ubuntu จะไม่เปิดเคอร์เนลที่ไม่มีลายเซ็นอีกต่อไป ถ้ามันไปไกลกว่านั้นแล้วเคอร์เนลโมดูลที่ไม่ได้ลงชื่อจะได้รับผลกระทบด้วยเมื่อไม่เคยมีมาก่อน อีกครั้งแม้ว่าฉันไม่ได้ศึกษาในเชิงลึก
Rod Smith

1
ภูมิหลังที่ดีบางอย่าง: bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532
dpb

1
ด้วยคนที่ยุ่งกับระบบของพวกเขาในความพยายามที่จะติดตั้งโมดูลของบุคคลที่สามฉันก็ยังสงสัยว่าคุณสมบัตินี้จะไม่ทำอันตรายมากกว่าดี
Daniel

จะมีการเปิดใช้งานใหม่อีกครั้งหลังจากปิดหรือไม่
shaunakde

คำตอบ:


38

นี่ไม่ใช่ข้อผิดพลาดมันเป็นคุณสมบัติ

Anthony Wong กล่าวว่าเมื่อคุณติดตั้งแพคเกจ DKMS คุณกำลังรวบรวมแพ็คเกจด้วยตัวคุณเอง Canonical ไม่สามารถเซ็นโมดูลให้คุณได้

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

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

GRUB หรือ shim หรือกลไกการบูตอื่น ๆสามารถลงนามแบบดิจิทัลโดย KEK ซึ่งเชื่อถือได้โดย root CA (PK) และทำให้คอมพิวเตอร์ของคุณสามารถทำได้โดยไม่ต้องมีการกำหนดค่าใด ๆ ซอฟต์แวร์บูตเช่น Ubuntu Live USB / DVD

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

บางคนทุบตีและพูดจาโผงผางต่อสิ่งนั้น แต่ไม่มีทางไหนที่ดีกว่า (จากจุดยืนด้านความปลอดภัย) กว่าตัวคุณเองที่ลงทะเบียนรหัสใหม่ที่คุณต้องการ

หากระบบบูตของคุณใช้ชิมคุณสามารถใช้สิ่งที่เรียกว่าฐานข้อมูลเจ้าของเครื่องและลงทะเบียนคีย์ของคุณเป็น MOK (คุณสามารถทำได้ด้วย mokutil) หากไม่เป็นเช่นนั้นคุณสามารถลงทะเบียนรหัสของคุณในฐานข้อมูล UEFIเป็นรหัสลงนามได้

หลังจากที่คุณลงทะเบียนคีย์แล้วคุณสามารถลงนามแพ็คเกจที่สร้างโดย DKMS ด้วย MOK ของคุณ (ควรมีสคริปต์ Perl ที่/usr/src/kernels/$(uname -r)/scripts/sign-file) และหลังจากที่ลงชื่อแล้วคุณสามารถโหลดลงในเคอร์เนลได้

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

คุณสามารถอ้างถึงคำอธิบายนี้เกี่ยวกับวิธีลงชื่อโมดูลเคอร์เนลของคุณเอง: https://askubuntu.com/a/768310/12049


1
ฉันปิดการใช้งานและตอนนี้ฉันได้รับ "การบูตในข้อความโหมดที่ไม่ปลอดภัย" ที่น่ารำคาญ ฉันไม่สามารถอธิบายปัญหาในฟอรัมได้ที่นี่ @ssice - ฉันใช้ UBUNTU 14.04 ดังนั้นฉันไม่คิดว่าสิ่งนี้จะเกี่ยวข้องกับฉัน [
shaunakde

20

กล่าวโดยย่อนี่ไม่ใช่ข้อผิดพลาด แต่เป็นการเปลี่ยนแปลงใหม่ที่นำมาใช้ใน 16.04

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

เพราะเหตุใดจึงเกิดขึ้นใน 16.04 เท่านั้น แต่ไม่ใช่ในรุ่นก่อนหน้านี้ Rod Smith ได้ให้คำตอบที่ดี ใน Ubuntu 16.04, Ubuntu เริ่มบังคับใช้การบูตที่ปลอดภัยถึงระดับเคอร์เนล ก่อน 16.04, Ubuntu ไม่ได้บังคับให้คุณใช้เคอร์เนลที่ลงนามและโมดูลเคอร์เนลที่ลงนามแล้วแม้ว่าคุณจะเปิดใช้งานการบูตอย่างปลอดภัยก็ตาม แต่นี่ไม่ใช่กรณีใน 16.04

นี่เป็นข้อผิดพลาดที่เกี่ยวข้อง: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

นี่คือพิมพ์เขียวที่เกี่ยวข้อง: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot


ฉันยังสามารถโหลดโมดูล wl ด้วย 16.04 beta2 และหลังการอัปเดต แต่ตอนนี้มีการเปิดตัวฉันได้รับข้อผิดพลาด "modprobe: ข้อผิดพลาด: ไม่สามารถแทรก 'wl': คีย์ที่จำเป็นไม่พร้อมใช้งาน"
solsTiCe

คุณลองใช้งานได้ไหม: sudo apt install mokutil; sudo mokutil - การตรวจสอบความถูกต้อง
Anthony Wong

6

อีกวิธีในการทำคือสร้างคีย์ของคุณเองแทรกส่วนสาธารณะลงในฐานข้อมูล MOK และลงนามโมดูลที่คุณรวบรวมกับส่วนส่วนตัว ดูที่นี่สำหรับข้อมูลรายละเอียด: ไม่สามารถโหลด 'vboxdrv' หลังจากอัปเกรดเป็น Ubuntu 16.04 (และฉันต้องการให้บูตอย่างปลอดภัย)


1

คำตอบที่ได้รับการยอมรับนั้นสมบูรณ์มาก แต่ฉันต้องการที่จะเพิ่มข้อมูลง่ายๆจากที่นี่:

https://askubuntu.com/a/843678/664391

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

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