ตัวตักบูต Linux รองรับการเข้ารหัสดิสก์เต็มรูปแบบหรือไม่


28

มี Linux boot loader ใดบ้างที่รองรับการเข้ารหัสดิสก์เต็มรูปแบบ (a la TrueCrypt ) ฉันรู้ว่ามีงานเพื่อเพิ่มการรองรับการเข้ารหัสใน GRUB2 แต่ดูเหมือนว่ายังไม่พร้อม ตัวเลือกอื่น ๆ

(โปรดทราบว่าฉันหมายถึงการเข้ารหัสดิสก์เต็มรูปแบบที่นี่รวมถึง/boot)

คำตอบส่วนใหญ่อธิบายถึงการตั้งค่าที่/bootไม่ได้เข้ารหัสและบางคำตอบพยายามอธิบายว่าทำไมการไม่เข้ารหัส/bootจึงควรเป็น OK

โดยไม่ต้องมีการพูดคุยเกี่ยวกับสาเหตุที่ฉันต้องการ / บูตเพื่อเข้ารหัสจริงนี่คือบทความที่อธิบายสิ่งที่ฉันต้องการอย่างแท้จริงโดยยึดตาม GRUB2 รุ่นที่แก้ไข:

ปัญหาเกี่ยวกับสิ่งนี้คือการปรับเปลี่ยนเหล่านี้เห็นได้ชัดว่าไม่ได้รับการสนับสนุนในรหัสฐาน GRUB2 ปัจจุบัน (หรือบางทีฉันอาจมองข้ามบางสิ่ง)


ใช่มีวิธีการที่ยอดเยี่ยมที่นี่: wiki.archlinux.org/index.php/…
ebal

คำตอบ:


20

ฉันคิดว่า GRUB2 รุ่นปัจจุบันไม่รองรับการโหลดและถอดรหัสพาร์ติชั่น LUKS ด้วยตัวเอง (มันมี ciphers อยู่ แต่ฉันคิดว่ามันใช้สำหรับการสนับสนุนรหัสผ่านเท่านั้น) ฉันไม่สามารถตรวจสอบสาขาการพัฒนาเชิงทดลองได้ แต่มีคำแนะนำบางอย่างในหน้าด้วงว่ามีการวางแผนงานบางอย่างเพื่อนำสิ่งที่คุณต้องการไปใช้

อัปเดต (2015) : GRUB2 รุ่นล่าสุด (2.00) มีรหัสเพื่อเข้าถึงพาร์ติชันที่เข้ารหัส LUKS และ GELI แล้ว (xercestch.com เชื่อมโยง OP ที่ระบุถึงแพทช์แรกสำหรับสิ่งนั้น แต่ตอนนี้พวกมันรวมอยู่ในรีลีสล่าสุด)

อย่างไรก็ตามหากคุณพยายามเข้ารหัสทั้งดิสก์เพื่อเหตุผลด้านความปลอดภัยโปรดทราบว่าบูตโหลดเดอร์ที่ไม่ได้เข้ารหัส (เช่น TrueCrypt, BitLocker หรือ GRUB ที่แก้ไข) ไม่มีการป้องกันมากกว่า/bootพาร์ติชั่นที่ไม่ได้เข้ารหัส(ดังที่ JV ระบุไว้ในความคิดเห็นด้านบน) . ใครก็ตามที่สามารถเข้าถึงคอมพิวเตอร์ได้อย่างง่ายดายก็สามารถแทนที่ด้วยรุ่นที่กำหนดเองได้อย่างง่ายดาย ที่ได้กล่าวถึงในบทความที่ xercestech.com ที่คุณเชื่อมโยง:

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

โปรดทราบว่าผลิตภัณฑ์ที่ใช้ซอฟต์แวร์ทั้งหมดสำหรับการเข้ารหัสดิสก์เต็มรูปแบบมีจุดอ่อนนี้ไม่ว่าพวกเขาจะใช้บูตโหลดเดอร์ที่ไม่ได้เข้ารหัสหรือพาร์ติชันสำหรับบูต / preboot แม้แต่ผลิตภัณฑ์ที่รองรับชิป TPM (โมดูลแพลตฟอร์มที่เชื่อถือได้) เช่น BitLocker ก็สามารถรูทได้โดยไม่ต้องดัดแปลงฮาร์ดแวร์

แนวทางที่ดีกว่าคือ:

  1. ถอดรหัสที่ระดับ BIOS (ในเมนบอร์ดหรือดิสก์อะแดปเตอร์หรือฮาร์ดแวร์ภายนอก [สมาร์ทการ์ด] ที่มีหรือไม่มีชิป TPM) หรือ
  2. พกรหัส PBA (การอนุมัติล่วงหน้า) ( /bootพาร์ติชันในกรณีนี้) ในอุปกรณ์แบบถอดได้ (เช่นสมาร์ทการ์ดหรือแท่ง USB)

ในการทำวิธีที่สองคุณสามารถตรวจสอบโครงการ Linux Full Disk Encryption (LFDE) ได้ที่: http://lfde.org/ซึ่งมีสคริปต์หลังการติดตั้งเพื่อย้าย/bootพาร์ติชันไปยังไดรฟ์ USB ภายนอกเข้ารหัสคีย์ด้วย GPG และเก็บไว้ใน USB ด้วย ด้วยวิธีดังกล่าวส่วนที่อ่อนแอกว่าของเส้นทางบู๊ต ( /bootพาร์ติชั่นที่ไม่ได้เข้ารหัส) จะอยู่กับคุณเสมอ (คุณจะเป็นคนเดียวที่เข้าถึงรหัสถอดรหัสและคีย์ได้จริง) ( หมายเหตุ : เว็บไซต์นี้สูญหายไปและบล็อกของผู้เขียนก็หายไปเช่นกันอย่างไรก็ตามคุณสามารถค้นหาไฟล์เก่า ๆ ได้ที่https://github.com/mv-code/lfdeเพิ่งทราบว่ามีการพัฒนาครั้งล่าสุดเมื่อ 6 ปีที่แล้ว) เป็นทางเลือกที่เบากว่าคุณสามารถติดตั้งพาร์ติชันสำหรับเริ่มระบบแบบไม่เข้ารหัสในแท่ง USB ขณะติดตั้งระบบปฏิบัติการของคุณ

ขอแสดงความนับถือ MV


1
ถอดรหัสในระดับ BIOS จะเป็นทางออกที่ดีมากอย่างแน่นอน (ฉันคิดว่าเรื่องนี้เป็นตัวเลือก) ...

1
ฉันไม่ทราบว่าการนำไปใช้งานใด ๆ แต่ EFI / UEFI มีตัวเลือกในการรวม EFI Boot Manager ที่กำหนดเองเพื่อแทนที่บูตเดอร์ทั่วไปซึ่งอาจเพิ่มเลเยอร์ถอดรหัสเพื่อถอดรหัสข้อมูล (แน่นอนว่าคุณต้องใช้แพลตฟอร์ม EFI ) หรืออาจมีบางโครงการที่เกี่ยวข้องกับ CoreBoot (ADLO, SeaBIOS, OpenBIOS ฯลฯ ) สามารถแก้ไขได้ เพียงแค่ความคิด

4
เพียงเพื่อเพิ่มข้อมูลเพิ่มเติมเกี่ยวกับจุดอ่อนของการใช้พาร์ติชันที่ไม่ได้เข้ารหัส / บูต (แต่ยังใช้สำหรับบูตโหลดเดอร์ที่ไม่ได้เข้ารหัส): twopointfouristan.wordpress.com/2011/04/17/ … (วิธีการแก้ไขการบูต พาร์ทิชันใน 10 นาทีของการเข้าถึงทางกายภาพเพื่อดึงข้อความรหัสผ่านที่ติดรวมกับไฟล์อื่น ๆ ในพาร์ทิชันที่เข้ารหัส)

1
@MV .: ขอบคุณ ฉันอาจทดสอบด้วยตัวเองและเพิ่มคำตอบที่นี่พร้อมขั้นตอนอย่างละเอียดเพื่อใช้/bootพาร์ติชันที่เข้ารหัสด้วย GRUB2
Peque

1
@ 에이바: ไม่เกี่ยวข้อง (ใช้ LUKS กับ TPM) แต่ไม่ใช่โครงการเดิมที่โฮสต์ที่ lfde.org (ซึ่งตอนนี้เป็นไซต์เกี่ยวกับ aeroclub)
MV

4

ทำให้ RAMdisk เริ่มต้นของคุณและ / boot โฟลเดอร์ไม่ใช้การเข้ารหัส

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

ก่อนที่คุณจะอ้างว่า "นี่คือแฮ็ก" - โปรดจำไว้ว่าส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) Linux distros จะบูตด้วยวิธีนี้ในวันนี้ตามค่าเริ่มต้น สิ่งนี้ช่วยให้ระบบของคุณสามารถบูตและโหลดรูท FS ของคุณได้อย่างชัดเจนโดยใช้โมดูลที่ต้องการโหลดจากระบบไฟล์ (เรียงลำดับของปัญหาไก่และไข่) ตัวอย่างเช่นหากระบบไฟล์รูทของคุณอยู่ในโวลุ่ม RAID ของฮาร์ดแวร์และคุณจำเป็นต้องโหลดโปรแกรมควบคุมก่อนที่คุณจะสามารถเมานต์รูท FS ของคุณ


3

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


ใช่ยังมีบูตโหลดเดอร์ที่ไม่ได้เข้ารหัสไว้ นี่จะเป็นที่ยอมรับสำหรับฉัน

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

1

ฉันเชื่อว่าพวกเขาส่วนใหญ่ทำสิ่งที่คุณต้องการคือคำแนะนำเกี่ยวกับวิธีการติดตั้งระบบปฏิบัติการด้วย HD เข้ารหัสในตอนแรก

Ubuntuมีหน้าที่ดีพร้อมคำแนะนำในการสร้างพาร์ติชั่นที่เข้ารหัส LMVPs โฟลเดอร์ ฯลฯ เพียงแค่ google รุ่น distros ของคุณ ...


2
ลีนุกซ์ส่วนใหญ่รวมถึงอูบุนตูได้รวมการสนับสนุนบางอย่างสำหรับการเข้ารหัสพาร์ติชั่น แต่พวกเขาต้องการ / boot เพื่อไม่ได้เข้ารหัส สิ่งที่ฉันกำลังมองหาคือบูตโหลดเดอร์ที่สามารถจัดการกับดิสก์ที่เข้ารหัสอย่างสมบูรณ์

1
อย่างน้อยส่วนหนึ่งของ bootloader จะต้องไม่ได้รับการเข้ารหัสมิฉะนั้น CPU จะไม่สามารถเรียกใช้ได้ มีปัญหาใดที่คุณมีเมื่อออก / บูตไม่ได้เข้ารหัสหรือไม่

2
ตัวโหลดการบูตและ / boot นั้นต่างออกไป ฉันกำลังมองหาบูตโหลดเดอร์มากกว่าที่จะสามารถบูตดิสก์ที่เข้ารหัสอย่างสมบูรณ์ได้ TrueCrypt สามารถทำได้สำหรับ Windows แต่ไม่ใช่สำหรับ Linux

ข้อแตกต่างคือ windows bootloader มีอยู่ใน mbr ของตัวเองในขณะที่ linux mbr เพียงแค่เชื่อมโยงไปยังไฟล์ / boot ที่จำเป็น
JV

1
"การตรวจสอบสิทธิ์การบู๊ตล่วงหน้าได้รับการจัดการโดย TrueCrypt Boot Loader ซึ่งอยู่ในแทร็กแรกของไดรฟ์สำหรับบูต" - หรือที่รู้จักบน Windows จะสร้างมินิ / บูต อีกครั้งตัวด้วงนั้นมีอยู่ใน / boot mbr มีขนาดเพียง 512 ไบต์ไม่เพียงพอที่จะเก็บอัลกอริทึมการถอดรหัส อย่างไรก็ตามจะทำเสร็จแล้วส่วนหนึ่งของฮาร์ดไดรฟ์จะต้องได้รับการเข้ารหัส คุณอาจจะสามารถที่จะเริ่มต้นด้วงบนพาร์ติชันเข้ารหัสจาก bootloader บนแตกต่างอย่างสิ้นเชิงหนึ่ง แต่ที่จะต้องมีรหัสยุ่งอย่างจริงจังบาง ...
ร่วมทุน

0

ไม่ฉันคิดว่าไม่มี

คุณต้องการเข้ารหัส / บูตจริงหรือไม่ ฉันไม่สงสัย ระบบไฟล์ส่วนที่เหลือสามารถเข้ารหัสโดยซอฟต์แวร์ Linux ปกติซึ่งอยู่ใน initramfs ใน / boot และแจ้งให้ผู้ใช้ทราบ


2
ใช่ฉันต้องเข้ารหัส / บูต ทุกอย่างจะต้องได้รับการเข้ารหัสยกเว้นตัวบูตโหลดเดอร์เอง

โปรดอธิบายว่าทำไมคุณถึงเชื่อว่าไม่มี bootloaders รองรับการเข้ารหัสดิสก์เต็มรูปแบบ
this.josh

@Grdriguez: หากคุณคิดว่า / boot เป็นส่วนหนึ่งของ boot loader ทุกอย่างจะถูกเข้ารหัส - ไบนารีทั้งหมดที่ใช้ในขณะใช้งานจริงข้อมูลผู้ใช้ทั้งหมดและอื่น ๆ
MarkR

2
ตามที่ระบุไว้ในความคิดเห็นเกี่ยวกับคำตอบอื่น: ฉันรู้ว่าจะต้องมี "บางสิ่งบางอย่าง" ที่ไม่ได้เข้ารหัส - ฉันเพียงแค่ต้องการ "บางสิ่ง" นี้เพื่อเป็นบูตโหลดเดอร์ (MBR + บูตเซกเตอร์) แทนพาร์ติชัน / boot .

0

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

ทางออกที่ใกล้ที่สุดที่ฉันคิดได้คือใช้ฮาร์ดไดรฟ์ซึ่งใช้รหัสผ่านความปลอดภัยและการเข้ารหัส แล็ปท็อป Thinkpad บางรุ่นใช้โซลูชันฮาร์ดแวร์เหล่านี้


2
ขออภัยฉันไม่เห็นว่าทำไมสิ่งนี้จึงควร "เป็นไปไม่ได้" บทความที่ฉันเชื่อมโยงไปถึงในคำถามของฉันพิสูจน์ว่าสามารถทำได้ มีการพิสูจน์แนวคิดโดยใช้ GRUB 2 รุ่นที่แก้ไขแล้วฉันรู้ว่าต้องมี "บางสิ่ง" ที่ไม่ได้เข้ารหัสไว้เสมอ - ฉันแค่ต้องการ "บางสิ่ง" นี้เพื่อเป็นตัวโหลดการบูต (MBR + บูตเซกเตอร์) แทน ของ a / boot พาร์ติชัน

@Grodriguez: ความต้องการของคุณไม่สมเหตุสมผล เป็นไปตามข้อกำหนดของคุณเมื่อใช้เครื่องเสมือนในระบบปฏิบัติการอื่นหรือไม่? ถ้าเป็นเช่นนั้นให้บูตระบบปฏิบัติการหนึ่งถอดรหัสลับไดรฟ์และเปิด VM
Zan Lynx

2
คุณได้ลองอ่านบทความที่ฉันเชื่อมโยงไปแล้วหรือยัง? ความจริงที่ว่าคุณไม่เข้าใจข้อกำหนดไม่ได้หมายความว่า "ไม่มีเหตุผล" ฉันมีเหตุผลที่ถูกต้องสำหรับสิ่งนี้ (ซึ่งฉันไม่ต้องการเข้าไป)

บทความทำให้ชัดเจนในวรรค 3 ว่าไม่ปรับปรุงสถานการณ์ ดังนั้นจึงไม่มีเหตุผลที่ฉันจะติดตามส่วนที่เหลือซึ่งมุ่งเน้นไปที่วิธีการตั้งค่ามากกว่าวิธีการทำงาน คิดเกี่ยวกับสิ่งที่จะบอกคุณว่าฉันได้เปลี่ยนเคอร์เนลของคุณหรือทั้ง / บูตด้วยตัวเอง (เมื่อทำหน้าที่เป็นสาวใช้ที่ชั่วร้าย)
Skaperen

0

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


0

Grub2 รุ่น 2.02 ~ beta3 สามารถทำสิ่งต่างๆมากมายที่ Grub2 รุ่น 2.02 ~ beta2 ไม่สามารถทำได้ทดสอบโดยฉัน:

  1. บูตโดยใช้ดิสก์ Super Grub 2
  2. พิมพ์คีย์ 'c' เพื่อไปที่บรรทัดคำสั่ง
  3. พิมพ์คำสั่งเพื่อเมาท์พาร์ติชันเข้ารหัสที่ฉันต้องการ
    • insmod luks
    • cryptomount (hd0, #) // โดยที่ # แทนพาร์ติชันที่เข้ารหัส
  4. พิมพ์วลีรหัสผ่านและพิมพ์คำสั่งเพิ่มเติม
    • multiboot (crypto0) /grub/i386-pc/core.img
    • รองเท้า

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

หมายเหตุ: การบูตเช่น Grub 2.02 ~ beta3 (ฉันใช้ Super Grub 2 cd) สามารถใช้กับ USB Stick, USB HDD เป็นต้น

คำเตือน: Grub2 เวอร์ชัน 2.02 ~ beta2 ไม่สามารถทำเช่นเดียวกันเนื่องจากมี BUG บางตัว (ที่ดูเหมือนว่าจะได้รับการแก้ไขใน Grub2 เวอร์ชัน 2.02 ~ beta3) ที่เกี่ยวข้องกับคำสั่ง cryptomount ...

ข้อบกพร่อง beta2 ฉันพูดถึงคือ:

  1. มันไม่ได้เมาท์พาร์ติชันที่เข้ารหัสจริงๆดังนั้นจึงไม่อนุญาตให้คุณเข้าถึง (crypto0) / *
  2. หากมีพาร์ติชันที่เข้ารหัสมากกว่าหนึ่งพาร์ติชันให้ใช้cryptomount -aเพียงแค่ถามวลีรหัสผ่านเดียว
  3. หลังจากรัน cryptomount หนึ่งครั้งมันจะถูกรันอีกครั้งโดยไม่ทำอะไรเลย

บน beta 3:

  1. มันประกอบเข้ากับพาร์ติชั่นที่เข้ารหัสและช่วยให้คุณเข้าถึงไฟล์ผ่าน (crypto0) / * หรือ (crypto1) / * ฯลฯ หากมีมากกว่าหนึ่งที่ติดตั้งในเวลาเดียวกัน
  2. มันขอให้แต่ละวลีรหัสผ่าน (หนึ่งต่อพาร์ทิชันเข้ารหัส)
  3. มันช่วยให้คุณเรียกใช้มันได้หลายครั้งตามที่คุณต้องการคุณสามารถเมานต์จากนั้นก็ต่ออีกอันหนึ่งเป็นต้น

หมายเหตุด้านข้าง: ฉันไม่ได้คิดวิธียกเลิกการเชื่อมต่อยกเว้นรีบูตหรือบู๊ต grub2 / bootloader อื่นหรืออื่น ๆ

หวังว่าสิ่งนี้จะช่วยชี้แจงสิ่งต่าง ๆ และหวังว่า Grub2 เวอร์ชั่น 2.02 ~ beta3 จะรวมอยู่ใน LiveCDs เพื่อให้เราสามารถติดตั้งได้โดยไม่จำเป็นต้องรวบรวมด้วยตนเอง

PD: ด้วยดิสก์ Super Grub 2 ฉันไม่สามารถมองเห็นวิธีการติดตั้ง Grub2 เวอร์ชั่น 2.02 ~ beta3 ไปยัง MBR / boot partition เป็นต้น

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