È sicuro usare rng-tools su una macchina virtuale?

17

Attualmente sto lavorando su un'app che deve creare coppie di chiavi GPG utilizzando lo strumento gpg . Sfortunatamente, questo strumento impiega molto tempo a generare una coppia di chiavi se non vi è sufficiente entropia / casualità disponibile sul sistema per farlo. Una soluzione comune per questo è installare il pacchetto rng-tools come viene chiamato sui sistemi Debian. Ciò consente a gpg di sfruttare i veri generatori di numeri casuali dell'hardware. È sicuro da usare (da un punto di vista della sicurezza) su una macchina virtuale / server virtuale virtuale in cui il sistema operativo ha accesso solo all'hardware virtualizzato? Le chiavi generate saranno sufficientemente casuali?

    
posta Richard Cook 03.08.2013 - 02:11
fonte

3 risposte

14

Tutto dipende dall'hardware (fisico o virtuale) disponibile per la tua VM. rng-tools può solo ottenere entropia dalle fonti disponibili. Se la tua macchina virtuale non ha fonti di entropia disponibili per gli strumenti di rng da utilizzare, allora non starai meglio.

Alcuni sistemi di virtualizzazione sono comunque in grado di rendere l'entropia di origine hardware disponibile per gli ospiti attraverso una serie di meccanismi. In alcuni casi è possibile passare un dispositivo hardware direttamente ai propri ospiti (USB, PCI, qualsiasi cosa) e avere strumenti rng utilizzare questo dispositivo. Nella maggior parte dei casi ciò non sarà possibile.

I driver paravirtual virtio espongono vari IO Device alle VM guest dal dominio di controllo hardware (kernel Linux che esegue KVM, dom0 in Xen). C'è un dispositivo virtio-rng che consente ad una fonte di entropia di essere esposta agli ospiti. Da quello che posso trovare questo è abbastanza maturo su KVM ma il supporto per Xen sembra essere un work in progress: link

Mentre virtio è ottimo, richiede che l'ospite abbia driver virtio e quindi sia consapevole del fatto che si tratta di una VM (paravirtualizzata). I nuovi hardware come i chip Intel IVB e HSW hanno istruzioni CPU specifiche che forniscono numeri casuali da un RNG on-chip e questi possono essere esposti alle macchine virtuali guest. È possibile verificare la disponibilità di queste istruzioni utilizzando CPUID.

Questa è una breve panoramica e probabilmente informazioni sufficienti. Se sei interessato a maggiori dettagli, c'è un'eccellente discussione su questo argomento qui: link

EDIT: Scusa, immagino di aver fornito molti dati, ma non ho mai risposto alla domanda. Ad ogni modo, ecco la mia opinione sulla vera domanda:

Is this safe to use (from a security perspective) on a virtual machine/virtual private server where the OS only has access to virtualized hardware? Will the generated keys be sufficiently random?

Quando si parla di sicurezza non c'è nulla di più dannoso di pensare che la tua configurazione sia sicura quando non lo è. L'uso di strumenti rng quando non ti fornisce alcun vantaggio (non ha origine di hardware entropia da cui attingere) ha la netta possibilità di farti pensare che stai generando numeri casuali di alta qualità (materiale per la codifica?) Quando in realtà non lo sei. Quindi non penso che usare rng-tools senza avere una fonte di entropia per la tua VM renderà i numeri generati meno casuali, ma potrebbe farti pensare che stai generando chiavi di alta qualità quando in realtà non lo sono.

Il mio consiglio è di usare il demone di rng-tools ma solo dopo aver verificato che hai una fonte di entropia disponibile per l'uso.

    
risposta data 03.08.2013 - 03:05
fonte
0

Sono per lo più d'accordo con @flihp, ma alcuni "tutorial" qui e là suggeriscono di usare / dev / urandom come fonte di entropia hardware.

Questo è assolutamente sbagliato dato che inietterà numeri pseudo-casuali nella "vera" sorgente casuale, che a sua volta sarà usata per generare più numeri pseudo-casuali, ecc.

In questo caso penso che l'uso di rng-tools peggiorerà le cose.

vedi anche: link e link

    
risposta data 29.04.2016 - 18:20
fonte
0

L'altra risposta è leggermente imprecisa.

Se stai usando un Ivy Bridge (o più recente), o qualsiasi altro processore AMD recente, la VM può usare l'istruzione CPU RDRAND . Questa è vera entropia hardware ed è disponibile per tutte le macchine virtuali (anche nel cloud).

    
risposta data 03.06.2018 - 04:45
fonte

Leggi altre domande sui tag