Linux boot loader mendukung enkripsi disk penuh?

28

Apakah ada bootloader Linux yang mendukung enkripsi disk penuh (ala TrueCrypt ). Saya tahu ada pekerjaan untuk menambahkan dukungan enkripsi ke GRUB2, tetapi ini sepertinya belum siap. Ada opsi lain?

(Perhatikan bahwa saya benar-benar merujuk pada enkripsi disk lengkap di sini — termasuk /boot)

Sebagian besar jawaban menggambarkan pengaturan di mana /boottidak dienkripsi, dan beberapa dari mereka mencoba menjelaskan mengapa tidak terenkripsi /bootharus OK.

Tanpa berdiskusi tentang mengapa saya benar-benar perlu / boot untuk dienkripsi, berikut adalah artikel yang menjelaskan dengan tepat apa yang saya butuhkan, berdasarkan versi GRUB2 yang dimodifikasi:

Masalah dengan ini adalah bahwa modifikasi ini tampaknya tidak didukung dalam basis kode GRUB2 saat ini (atau mungkin saya sedang melihat sesuatu).

Grodriguez
sumber
ya, ada howto yang luar biasa di sini: wiki.archlinux.org/index.php/…
ebal

Jawaban:

20

Saya pikir versi GRUB2 saat ini tidak memiliki dukungan untuk memuat dan mendekripsi partisi LUKS dengan sendirinya (ini berisi beberapa cipher tetapi saya pikir mereka hanya digunakan untuk dukungan kata sandi). Saya tidak dapat memeriksa cabang pengembangan eksperimental, tetapi ada beberapa petunjuk di halaman GRUB bahwa beberapa pekerjaan direncanakan untuk mengimplementasikan apa yang ingin Anda lakukan.

Pembaruan (2015) : versi terbaru GRUB2 (2.00) sudah termasuk kode untuk mengakses partisi terenkripsi LUKS dan GELI. (Tautan xercestch.com yang disediakan OP menyebutkan tambalan pertama untuk itu, tetapi mereka sekarang terintegrasi dalam rilis terbaru).

Namun, jika Anda mencoba mengenkripsi seluruh disk untuk alasan keamanan, harap perhatikan bahwa boot loader yang tidak terenkripsi (seperti TrueCrypt, BitLocker atau GRUB yang dimodifikasi) tidak menawarkan perlindungan lebih dari /bootpartisi yang tidak dienkripsi (seperti dicatat oleh JV dalam komentar di atas) . Siapa pun yang memiliki akses fisik ke komputer dapat dengan mudah menggantinya dengan versi khusus. Itu bahkan disebutkan dalam artikel di xercestech.com yang Anda tautkan:

Untuk menjadi jelas, ini tidak dengan cara apa pun membuat sistem Anda kurang rentan terhadap serangan offline, jika penyerang mengganti bootloader Anda dengan milik mereka sendiri, atau mengarahkan proses boot untuk mem-boot kode mereka sendiri, sistem Anda masih dapat dikompromikan.

Perhatikan bahwa semua produk berbasis perangkat lunak untuk enkripsi disk penuh memiliki kelemahan ini, tidak peduli apakah mereka menggunakan boot loader yang tidak terenkripsi atau partisi boot / preboot yang tidak terenkripsi. Bahkan produk dengan dukungan untuk chip TPM (Modul Platform Tepercaya), seperti BitLocker, dapat di-root tanpa memodifikasi perangkat keras.

Pendekatan yang lebih baik adalah:

  1. mendekripsi pada tingkat BIOS (dalam motherboard atau adaptor disk atau perangkat keras [smartcard] eksternal, dengan atau tanpa chip TPM), atau
  2. bawa kode PBA (preboot authorization) ( /bootpartisi dalam hal ini) dalam perangkat yang dapat dilepas (seperti kartu pintar atau stik USB).

Untuk melakukannya dengan cara kedua, Anda dapat memeriksa proyek Linux Full Disk Encryption (LFDE) di: http://lfde.org/ yang menyediakan skrip pasca pemasangan untuk memindahkan /bootpartisi ke drive USB eksternal, mengenkripsi kunci dengan GPG dan menyimpannya di USB juga. Dengan cara itu, bagian yang lebih lemah dari jalur boot ( /bootpartisi non-terenkripsi ) selalu bersama Anda (Anda akan menjadi satu-satunya dengan akses fisik ke kode dekripsi DAN kunci). ( Catatan : situs ini telah hilang dan blog penulis juga hilang, namun Anda dapat menemukan file-file lama di https://github.com/mv-code/lfde cukup perhatikan perkembangan terakhir dilakukan 6 tahun yang lalu). Sebagai alternatif yang lebih ringan, Anda dapat menginstal partisi boot yang tidak terenkripsi di USB stick saat menginstal OS Anda.

Salam, MV

MV.
sumber
1
Dekripsi pada tingkat BIOS akan menjadi solusi yang sangat bagus (saya menganggap ini sebagai pilihan) ...
1
Saya tidak tahu implementasi apa pun yang berjalan, tetapi EFI / UEFI memiliki opsi untuk menyertakan EFI Boot Manager khusus untuk menggantikan bootloader yang umum, mungkin menambahkan lapisan dekripsi untuk mendekripsi data (tentu saja Anda memerlukan platform EFI ). Atau mungkin beberapa proyek yang terkait dengan CoreBoot (ADLO, SeaBIOS, OpenBIOS, dll.) Dapat dimodifikasi untuk melakukan itu. Hanya ide.
4
Hanya untuk menambahkan informasi lebih lanjut tentang kelemahan menggunakan partisi non-terenkripsi / boot (tetapi juga berlaku untuk boot loader non-terenkripsi): twopointfouristan.wordpress.com/2011/04/17/… (cara memodifikasi boot partisi dalam 10 menit akses fisik, untuk mengambil frasa sandi pemasangan plus file lain di partisi terenkripsi)
1
@ MV: Terima kasih. Saya dapat mengujinya sendiri dan menambahkan jawaban di sini dengan langkah-langkah yang lebih terperinci untuk menggunakan /bootpartisi terenkripsi dengan GRUB2.
Peque
1
@ 에이 바: tidak, itu terkait (menggunakan LUKS dengan TPM) tetapi bukan proyek yang sama yang sebelumnya dihosting di lfde.org (yang sekarang merupakan situs tentang aeroclub).
MV.
4

Jadikan RAMdisk Awal Anda, dan / boot folder tidak menggunakan enkripsi.

Ini akan memunculkan "minimal" kernel, dengan driver dan dukungan untuk beralih ke "sebenarnya" root filesystem yang sedang dienkripsi.

Sebelum Anda mengklaim "ini hack" - ingat - kebanyakan (jika tidak semua) distro Linux boot dengan cara ini hari ini secara default. Ini secara eksplisit memungkinkan sistem Anda untuk boot dan memuat FS root Anda, menggunakan modul yang perlu dimuat dari sistem file. (Semacam masalah ayam dan telur). Seperti misalnya, jika sistem file root Anda berada pada volume RAID perangkat keras, dan Anda perlu memuat drivernya sebelum Anda bisa memasang FS root Anda.

Brad
sumber
3

Saya meninjau tautan yang Anda poskan - meskipun tidak ada partisi boot, masih ada boot loader yang tidak terenkripsi di hard disk yang dapat diakses dan dikompromikan menggunakan serangan pelayan jahat. Saya telah melihat ke pengaturan yang sama, di mana tidak ada data yang tidak terenkripsi pada hard disk, tetapi sejauh ini saya hanya datang dengan menjalankan boot loader dari drive yang dapat dilepas.


sumber
Ya, masih ada boot loader yang tidak terenkripsi. Ini akan diterima untuk saya.
Pembantu jahat dapat menginfeksi boot loader untuk melakukan prompt kata sandi palsu untuk menipu Anda, kemudian hanya memuat kernel trojanized tidak terenkripsi. Mengenkripsi keuntungan kernel sangat sedikit tanpa mengenkripsi boot loader.
Skaperen
1

Saya percaya sebagian besar dari mereka melakukannya, yang Anda butuhkan adalah instruksi tentang cara menginstal OS dengan HD terenkripsi.

Ubuntu memiliki halaman yang bagus dengan instruksi untuk membuat partisi terenkripsi, LMVP, folder dll, cukup google versi distro Anda dari itu ...

JV
sumber
2
Sebagian besar distribusi Linux, termasuk Ubuntu, menyertakan semacam dukungan untuk mengenkripsi partisi, tetapi mereka membutuhkan / boot untuk tidak dienkripsi. Yang saya cari adalah boot loader yang dapat menangani disk yang sepenuhnya terenkripsi.
1
Setidaknya beberapa bagian dari bootloader perlu dienkripsi, jika tidak CPU tidak dapat menjalankannya. Apakah ada masalah khusus yang Anda miliki dengan meninggalkan / boot tidak terenkripsi?
2
Boot loader dan / boot adalah hal yang berbeda. Saya mencari bootloader daripada yang bisa mem-boot disk sepenuhnya terenkripsi. TrueCrypt dapat melakukan itu untuk Windows, tetapi tidak untuk Linux.
Perbedaannya adalah bahwa windows bootloader terkandung dalam mbr sendiri sementara di linux mbr hanya menghubungkan ke file / boot yang diperlukan.
JV
1
"Otentikasi pra-boot ditangani oleh TrueCrypt Boot Loader, yang berada di trek pertama drive boot" - alias, di windows ia menciptakan mini- / boot. Sekali lagi, grub itu sendiri terdapat di / boot, mbr hanya 512 byte, tidak cukup untuk menyimpan algoritma dekripsi. Namun itu dilakukan, sebagian dari hard drive harus diberikan tidak terenkripsi. Anda mungkin dapat memulai grub pada partisi terenkripsi dari bootloader pada partisi yang benar-benar berbeda tetapi itu akan memerlukan beberapa kode yang sangat berantakan ...
JV
0

Tidak, saya pikir tidak ada.

Apakah Anda benar-benar perlu mengenkripsi / mem-boot? Saya kira tidak. Sisa dari filesystem dapat dienkripsi oleh perangkat lunak Linux normal yang berada di initramfs di / boot dan meminta pengguna yang sesuai.

MarkR
sumber
2
Ya, saya perlu mengenkripsi / boot. Semuanya harus dienkripsi kecuali untuk boot loader itu sendiri.
Tolong jelaskan mengapa Anda yakin tidak ada bootloader yang mendukung enkripsi disk penuh.
this.josh
@Grodriguez: jika Anda menganggap / boot untuk menjadi bagian dari boot loader, maka semuanya dienkripsi - semua binari yang digunakan saat runtime, semua data pengguna, dll
MarkR
2
Seperti disebutkan dalam komentar pada jawaban lain: Saya tahu bahwa harus selalu ada "sesuatu" yang tidak dienkripsi - saya hanya perlu "sesuatu" ini untuk menjadi boot loader (MBR + sektor boot), alih-alih partisi / boot .
0

Anda tampaknya meminta sesuatu yang tidak mungkin dilakukan dan membandingkannya dengan solusi Windows yang menyembunyikan implementasi dari Anda tetapi pada kenyataannya melakukan hal yang sama seperti yang dilakukan Linux.

Solusi terdekat yang dapat saya pikirkan adalah menggunakan hard drive yang mengimplementasikan kata sandi keamanan dan enkripsi. Beberapa laptop Thinkpad menggunakan solusi perangkat keras ini.

Zan Lynx
sumber
2
Maaf, tapi saya tidak mengerti mengapa ini "tidak mungkin". Artikel yang saya tautkan dalam pertanyaan saya membuktikan bahwa itu bisa dilakukan. Sebuah bukti konsep diimplementasikan menggunakan versi modifikasi GRUB 2. Saya tahu bahwa harus selalu ada "sesuatu" yang tidak dienkripsi - saya hanya perlu "sesuatu" ini untuk menjadi boot loader (MBR + sektor boot), sebagai gantinya dari partisi / boot.
@Grodriguez: Kebutuhan Anda tidak masuk akal. Apakah kebutuhan Anda terpenuhi ketika menggunakan mesin virtual di dalam OS lain? Jika demikian, maka boot OS satu, dekripsi drive dan luncurkan VM.
Zan Lynx
2
Sudahkah Anda benar-benar mencoba membaca artikel yang saya tautkan? Fakta bahwa Anda tidak memahami persyaratan tidak berarti bahwa "tidak masuk akal". Saya punya alasan valid untuk ini (yang saya tidak ingin masuki).
Artikel ini memperjelas dalam ayat 3 bahwa itu tidak memperbaiki situasi. Jadi tidak masuk akal bagi saya untuk mengikuti sisanya, yang berfokus pada bagaimana mengaturnya, daripada bagaimana cara kerjanya. Pikirkan tentang apa yang akan memberitahu Anda bahwa saya telah mengganti kernel Anda, atau seluruh / boot, dengan milik saya sendiri (ketika bertindak sebagai pelayan jahat).
Skaperen
0

Jawabannya diisyaratkan oleh artikel tersebut. "Ini sekarang dimungkinkan dengan ekstensi untuk bootloader GRUB2 generasi berikutnya, yang telah ditambal tidak hanya untuk mendukung" dan "kami ingin menginstal luks baru kami yang memungkinkan gambar grub2 nanti" dan "Sekarang kami mengkompilasi sumber GRUB2 yang diaktifkan LUKS. " Tampaknya ada tambalan atau ekstensi yang perlu Anda dapatkan dan sertakan dengan GRUB2, atau sumber GRUB2 bercabang dua.

Skaperen
sumber
0

Grub2 versi 2.02 ~ beta3 dapat melakukan banyak hal yang tidak dapat dilakukan Grub2 versi 2.02 ~ beta2, diuji oleh saya:

  1. Boot menggunakan disk Super Grub 2
  2. Ketik kunci 'c' untuk pergi ke baris perintah
  3. Ketik perintah untuk memasang partisi terenkripsi yang saya inginkan
    • insuks luks
    • cryptomount (hd0, #) // di mana # mewakili partisi terenkripsi
  4. Ketikkan frasa sandi dan ketikkan beberapa perintah lagi
    • multiboot (crypto0) /grub/i386-pc/core.img
    • boot

Itu akan memuat Grub2 lain yang ada di dalam partisi terenkripsi, serangan gila gila tidak masuk akal di sini ... saya mem-boot dari CD (baca medium saja), kemudian me-mount partisi terenkripsi (tanpa frasa sandi bagaimana berani siapa pun bisa suntikkan apa saja!), lalu booting dari partisi terenkripsi di dalam dan memuat Grub2 dengan menu sendiri, dll.

Catatan: Boot Grub 2.02 ~ beta3 semacam itu (saya menggunakan Super Grub 2 cd) dapat berada di stik USB, HDD USB, dll.

Peringatan: Grub2 versi 2.02 ~ beta2 tidak dapat melakukan hal yang sama karena memiliki beberapa BUG (yang tampaknya diperbaiki pada Grub2 versi 2.02 ~ beta3) terkait dengan perintah cryptomount ...

bug beta2, yang saya bicarakan adalah:

  1. Itu tidak benar-benar me-mount partisi terenkripsi, sehingga tidak membiarkan Anda mengakses (crypto0) / *
  2. Jika ada lebih dari satu partisi terenkripsi, gunakan cryptomount -a hanya meminta satu frasa sandi
  3. Setelah menjalankan cryptomount satu kali itu dijalankan lagi tidak melakukan apa-apa

pada beta 3:

  1. Itu benar-benar me-mount partisi terenkripsi dan memungkinkan Anda mengakses file melalui (crypto0) / * atau (crypto1) / * dll jika lebih dari satu dipasang pada waktu yang sama
  2. Ia meminta setiap frasa sandi (satu per partisi terenkripsi)
  3. Ini memungkinkan Anda untuk menjalankannya sebanyak yang Anda butuhkan, Anda dapat memasang satu, lalu yang lain, dll.

Catatan: Saya tidak menemukan cara untuk melepasnya, kecuali reboot atau boot grub2 / bootloader lain atau yang sama, dll.

Semoga ini bisa membantu untuk mengklarifikasi hal-hal, dan berharap Grub2 versi 2.02 ~ beta3 akan diintegrasikan pada LiveCD sehingga semua yang dapat kita instal tanpa perlu mengompilasinya sendiri.

PD: Dengan disk Super Grub 2 saya tidak dapat melihat cara untuk menginstal Grub2 versi 2.02 ~ beta3 ke partisi MBR / boot dll.

Claudio
sumber