Caricatori di avvio Linux che supportano la crittografia del disco completo?


28

Esistono caricatori di avvio Linux che supportano la crittografia del disco completo (alla TrueCrypt ). So che ci sono stati lavori per aggiungere il supporto di crittografia a GRUB2, ma questo non sembra essere ancora pronto. Altre opzioni?

(Nota che qui mi riferisco davvero alla crittografia del disco completo, incluso /boot)

La maggior parte delle risposte descrive un'installazione in cui /bootnon è crittografata e alcune di esse cercano di spiegare perché un utente non crittografato /bootdovrebbe essere OK.

Senza entrare in una discussione sul perché in realtà ho bisogno di / boot per essere crittografato, ecco un articolo che descrive esattamente ciò di cui ho bisogno, basato su una versione modificata di GRUB2:

Il problema è che queste modifiche apparentemente non sono supportate nell'attuale base di codice GRUB2 (o forse sto trascurando qualcosa).


sì, c'è un eccellente howto qui: wiki.archlinux.org/index.php/…
ebal

Risposte:


20

Penso che l'attuale versione di GRUB2 non abbia il supporto per il caricamento e la decrittografia delle partizioni LUKS da sola (contiene alcune cifre ma penso che vengano utilizzate solo per il supporto della password). Non riesco a controllare il ramo di sviluppo sperimentale, ma ci sono alcuni suggerimenti nella pagina di GRUB che è pianificato un lavoro per implementare ciò che si desidera fare.

Aggiornamento (2015) : l'ultima versione di GRUB2 (2.00) include già il codice per accedere alle partizioni crittografate LUKS e GELI. (Il link xercestch.com fornito dall'OP menziona le prime patch per questo, ma ora sono integrate nell'ultima versione).

Tuttavia, se si sta tentando di crittografare l'intero disco per motivi di sicurezza, si noti che un boot loader non crittografato (come TrueCrypt, BitLocker o un GRUB modificato) non offre più protezione di una /bootpartizione non crittografata (come notato da JV in un commento sopra) . Chiunque abbia accesso fisico al computer può facilmente sostituirlo con una versione personalizzata. Questo è anche menzionato nell'articolo su xercestech.com che hai collegato:

Per essere chiari, questo non rende in alcun modo il tuo sistema meno vulnerabile agli attacchi offline, se un attaccante dovesse sostituire il tuo bootloader con il proprio, o reindirizzare il processo di avvio per avviare il proprio codice, il tuo sistema può comunque essere compromesso.

Tutti i prodotti basati su software per la crittografia del disco completo presentano questa debolezza, indipendentemente dal fatto che utilizzino un caricatore di avvio non crittografato o una partizione di avvio / pre-avvio non crittografata. Anche i prodotti con supporto per chip TPM (Trusted Platform Module), come BitLocker, possono essere rootati senza modificare l'hardware.

Un approccio migliore sarebbe:

  1. decifrare a livello di BIOS (nella scheda madre o nell'adattatore del disco o hardware esterno [smartcard], con o senza un chip TPM), o
  2. portare il codice PBA (autorizzazione al riavvio) (la /bootpartizione in questo caso) in un dispositivo rimovibile (come una smartcard o una chiavetta USB).

Per farlo nel secondo modo, puoi controllare il progetto Linux Full Disk Encryption (LFDE) su: http://lfde.org/ che fornisce uno script post-installazione per spostare la /bootpartizione su un'unità USB esterna, crittografando la chiave con GPG e archiviazione anche su USB. In questo modo, la parte più debole del percorso di avvio (la /bootpartizione non crittografata ) è sempre con te (sarai l'unico con accesso fisico al codice di decodifica E alla chiave). ( Nota : questo sito è stato perso e anche il blog dell'autore è scomparso, tuttavia puoi trovare i vecchi file su https://github.com/mv-code/lfde, solo che l'ultimo sviluppo è stato fatto 6 anni fa). Come alternativa più leggera, è possibile installare la partizione di avvio non crittografata in una chiavetta USB durante l'installazione del sistema operativo.

Saluti, MV


1
Decifrare a livello di BIOS sarebbe davvero un'ottima soluzione (l'ho considerata un'opzione) ...

1
Non conosco alcuna implementazione funzionante, ma EFI / UEFI ha la possibilità di includere un Boot Manager EFI personalizzato per sostituire un boot loader comune, magari aggiungendo un livello di decrittografia per decrittografare i dati (ovviamente avrai bisogno di una piattaforma EFI ). O forse alcuni dei progetti relativi a CoreBoot (ADLO, SeaBIOS, OpenBIOS, ecc.) Possono essere modificati per farlo. Solo idee.

4
Solo per aggiungere ulteriori informazioni sulla debolezza dell'utilizzo di una partizione non crittografata / di avvio (ma vale anche per un caricatore di avvio non crittografato): twopointfouristan.wordpress.com/2011/04/17/… (come modificare l'avvio partizione in 10 minuti di accesso fisico, per recuperare la passphrase di mount più qualsiasi altro file nella partizione crittografata)

1
@MV .: Grazie. Potrei testarlo da solo e aggiungere una risposta qui con passaggi più dettagliati per utilizzare /bootpartizioni crittografate con GRUB2.
Peque,

1
@ 에이 바: no, questo è correlato (usando LUKS con un TPM) ma non è lo stesso progetto precedentemente ospitato su lfde.org (che ora è un sito su un aeroclub).
MV.

4

Rendi il tuo disco RAM iniziale e / cartella di avvio non utilizzare la crittografia.

Questo farà apparire un kernel "minimal", con driver e supporto per passare al filesystem di root "reale" che è crittografato.

Prima di affermare "questo è un trucco" - ricorda - la maggior parte (se non tutte) le distribuzioni Linux si avviano in questo modo oggi per impostazione predefinita. Ciò consente esplicitamente al tuo sistema di avviare e caricare il tuo root FS, usando i moduli che deve caricare da un filesystem. (Sorta di un problema con pollo e uova). Come ad esempio, se il tuo filesystem di root era su un volume RAID hardware e dovevi caricare il suo driver prima di poter montare il tuo root FS.


3

Ho esaminato il collegamento che hai pubblicato - sebbene non vi sia alcuna partizione di avvio, sul disco rigido è ancora presente un caricatore di avvio non crittografato a cui è possibile accedere e compromesso mediante un attacco da cameriera malvagia. Ho cercato una configurazione simile, in cui non ci sono dati non crittografati sul disco rigido, ma finora ho escogitato solo l'esecuzione di un caricatore di avvio da un'unità rimovibile.


Sì, esiste ancora un caricatore di avvio non crittografato. Questo sarebbe accettabile per me.

La cameriera malvagia può infettare il boot loader per fare una richiesta di password falsa per ingannarti, quindi caricare il kernel trojan non crittografato. La crittografia del kernel guadagna molto poco senza crittografare il boot loader.
Skaperen,

1

Credo che la maggior parte di loro lo faccia, ciò di cui hai bisogno sono le istruzioni su come installare il sistema operativo con HD crittografato in primo luogo.

Ubuntu ha una bella pagina con le istruzioni su come creare partizioni crittografate, LMVP, cartelle ecc., Basta google la tua versione di distribuzione di quella ...


2
La maggior parte delle distribuzioni Linux, incluso Ubuntu, include una sorta di supporto per la crittografia delle partizioni, ma richiedono / boot per non essere crittografato. Quello che sto cercando è un boot loader in grado di gestire un disco completamente crittografato.

1
Almeno una parte del bootloader deve essere non crittografata, altrimenti la CPU non potrebbe eseguirla. C'è qualche problema particolare che hai con lasciare / avviare non crittografato?

2
Il boot loader e / boot sono cose diverse. Sto cercando un caricatore di avvio che può avviare un disco completamente crittografato. TrueCrypt può farlo per Windows, ma non per Linux.

La differenza è che il bootloader di Windows è contenuto nel mbr stesso mentre su Linux il mbr si collega semplicemente ai file / boot necessari.
JV,

1
"L'autenticazione pre-boot è gestita dal caricatore di avvio TrueCrypt, che risiede nella prima traccia dell'unità di avvio", ovvero su Windows, crea un mini-/ boot. Ancora una volta, grub stesso è contenuto in / boot, il mbr è solo 512 byte, non abbastanza per memorizzare un algoritmo di decrittazione. Comunque sia, una parte del disco rigido deve essere fornita non crittografata. Potresti essere in grado di avviare grub su una partizione crittografata da un bootloader su uno completamente diverso, ma ciò richiederebbe un codice seriamente disordinato ...
JV

0

No, penso che non ci siano.

Hai davvero bisogno di crittografare / avviare? Sospetto di no. Il resto del filesystem può essere crittografato dal normale software Linux che risiede in un initramfs in / boot e richiede all'utente di conseguenza.


2
Sì, devo crittografare / avviare. Tutto deve essere crittografato ad eccezione del boot loader stesso.

Spiega perché ritieni che non ci siano bootloader che supportano la crittografia del disco completo.
this.josh

@Grodriguez: se consideri / boot come parte del boot loader, allora tutto è crittografato - tutti i binari utilizzati in fase di esecuzione, tutti i dati dell'utente, ecc.
MarkR

2
Come notato in un commento su un'altra risposta: so che ci deve essere sempre "qualcosa" che non è crittografato - ho solo bisogno di questo "qualcosa" per essere il caricatore di avvio (MBR + settore di avvio), anziché una partizione / boot .

0

Sembra che tu stia chiedendo qualcosa che è impossibile fare e confrontandolo con una soluzione Windows che ti nasconde l'implementazione, ma in realtà sta facendo la stessa cosa che sta facendo Linux.

La soluzione più vicina a cui riesco a pensare è quella di utilizzare un disco rigido che implementa una password di sicurezza e una crittografia. Alcuni laptop Thinkpad utilizzano queste soluzioni hardware.


2
Scusa, ma non vedo perché questo dovrebbe essere "impossibile". L'articolo a cui mi collego nella mia domanda dimostra che può essere fatto. Una dimostrazione del concetto è stata implementata usando una versione modificata di GRUB 2. So che ci deve essere sempre "qualcosa" che non è crittografato - ho solo bisogno di questo "qualcosa" per essere il caricatore di avvio (MBR + settore di avvio), invece di una partizione / boot.

@Grodriguez: il tuo requisito non ha senso. Il tuo requisito è soddisfatto quando usi una macchina virtuale all'interno di un altro sistema operativo? In tal caso, quindi avviare il sistema operativo uno, decrittografare l'unità e avviare la VM.
Zan Lynx,

2
Hai davvero provato a leggere l'articolo a cui ho collegato? Il fatto che tu non capisca il requisito non significa che "non ha senso". Ho validi motivi per questo (in cui non voglio entrare).

L'articolo chiarisce al paragrafo 3 che non migliora la situazione. Quindi per me non ha senso seguirne il resto, che si concentra su come configurarlo, piuttosto che su come funziona. Pensa a cosa ti dirà che ho sostituito il tuo kernel, o l'intero / boot, con il mio (quando mi comporto come una cameriera cattiva).
Skaperen,

0

La risposta è suggerita dall'articolo. "Questo è ora possibile con le estensioni al bootloader GRUB2 di prossima generazione, che è stato patchato per supportare non solo" e "desideriamo installare in seguito la nostra nuova immagine grub2 abilitata per luks" e "Ora compiliamo il sorgente GRUB2 abilitato per LUKS. " Sembra che ci sia una patch o un'estensione che devi ottenere e includere con GRUB2 o una sorgente GRUB2 biforcuta.


0

Grub2 versione 2.02 ~ beta3 può fare molte cose che Grub2 versione 2.02 ~ beta2 non può fare, testato da me:

  1. Avvio tramite disco Super Grub 2
  2. Digitare il tasto 'c' per andare alla riga di comando
  3. Digita i comandi per montare la partizione crittografata che desidero
    • insmod luks
    • cryptomount (hd0, #) // dove # rappresenta la partizione crittografata
  4. Digita la passphrase e digita altri comandi
    • multiboot (crypto0) /grub/i386-pc/core.img
    • avvio

Ciò caricherà un altro Grub2 che si trova all'interno di una partizione crittografata, un malvagio attacco pazzo non ha senso qui ... Sto eseguendo l'avvio da un CD (supporto di sola lettura), quindi monto una partizione crittografata (senza la passphrase come osa chiunque) iniettare qualsiasi cosa!), quindi avviare dall'interno della partizione crittografata e caricare un Grub2 con il suo menu, ecc.

Nota: tale avvio Grub 2.02 ~ beta3 (utilizzo Super Grub 2 cd) può essere su una chiavetta USB, un HDD USB, ecc.

Attenzione: Grub2 versione 2.02 ~ beta2 non può fare lo stesso poiché ha alcuni BUG (che sembrano essere corretti su Grub2 versione 2.02 ~ beta3) relativi al comando cryptomount ...

i bug di beta2, di cui parlo, sono:

  1. In realtà non monta la partizione crittografata, quindi non ti consente di accedere (crypto0) / *
  2. Se è presente più di una partizione crittografata, l'utilizzo cryptomount -arichiede solo una passphrase
  3. Dopo aver eseguito cryptomount una volta, viene eseguito di nuovo e non fa nulla

su beta 3:

  1. Monta davvero la partizione crittografata e ti consente di accedere ai file tramite (crypto0) / * o (crypto1) / * ecc se più di uno montato contemporaneamente
  2. Richiede ogni passphrase (una per partizione crittografata)
  3. Ti permette di eseguirlo tutte le volte che vuoi, puoi montarne uno, poi un altro, ecc.

Nota a margine: non ho capito come smontarli, tranne riavviare o avviare un altro o stesso grub2 / altro bootloader, ecc.

Spero che questo aiuti a chiarire le cose, e spero che Grub2 versione 2.02 ~ beta3 sia integrata sui LiveCD, così tutto ciò che possiamo installarlo senza bisogno di compilarlo da soli.

PD: Con il disco Super Grub 2 non riesco a vedere alcun modo per installare Grub2 versione 2.02 ~ beta3 sulla partizione MBR / boot, ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.