L'RNG ha un ruolo nella firma di PGP?

5

Abbiamo un sistema Jenkins che costruisce e PGP firma i rilasci di software, e stiamo considerando di spostare il componente di firma su una VM isolata invece di eseguirla come parte dell'infrastruttura generale del costruttore - al fine di isolare meglio le chiavi private da tutte le altre parti mobili relativamente pubbliche.

Alcuni sviluppatori stanno discutendo contro l'utilizzo di una VM, dal momento che le VM di solito hanno poche fonti di buona entropia e quindi non sono generalmente adatte alla crittografia. Voglio dare una contro-argomentazione sul fatto che, poiché utilizzeremo le chiavi PGP generate altrove, le sole operazioni crittografiche che verranno eseguite su quella VM non si baseranno affatto su RNG. La mia comprensione del processo di firma PGP è che calcola un hash sha1 / sha2 (nessun RNG utilizzato) e quindi calcola la firma utilizzando la chiave privata (nessun RNG utilizzato).

È corretto? O mi manca qualcosa che renderebbe un strong RNG un requisito per un sistema che solo PGP-firma ma mai crittografia PGP?

    
posta mricon 24.03.2014 - 18:28
fonte

2 risposte

4

La firma con RSA in OpenPGP è deterministica e quindi non richiede una fonte di casualità come hai descritto correttamente. L'hashing dei dati da firmare è deterministico a patto che non sia riempito con un seme casuale (vedi la risposta di Karol Babioch per i dettagli sui motivi per cui potrebbe voler farlo), anche la firma dell'hash è.

Discussione dettagliata delle parti coinvolte:

Puoi provare te stesso utilizzando faketime per impostare l'ora su un tempo prestabilito (non utilizzare una data prima dell'ora di creazione della tua chiave):

$ faketime '@2147483647' gpg --sign --output - somefile  | gpg --print-md SHA256
93C7E062 151311F2 822FBBBF FC4B061A C8F31A1A 54FDA558 61A9C964 B5107CD4

Senza falsificare l'ora, riceverai diversi valori hash con la modifica dell'orario.

Per altri algoritmi, consultare la risposta di @ Karol Babioch. La conclusione di questo dibattito potrebbe essere: Utilizzare RSA per l'accesso a macchine virtuali o altri dispositivi a bassa entropia (alcuni box, router, ...), in quanto non dipende dalla casualità; ma meglio importare la coppia di chiavi da qualche altra parte.

D'altra parte, la crittografia richiede numeri casuali anche con RSA: la crittografia pubblica / privata viene utilizzata solo per crittografare la chiave di cifratura a blocchi e potrebbe essere applicata una certa spaziatura.

Ovviamente la creazione di una nuova coppia di chiavi OpenPGP richiede anche casualità.

    
risposta data 24.03.2014 - 19:11
fonte
6

Purtroppo le risposte precedenti a questa domanda sono non solo errate , ma anche abbastanza pericolose .

Anche se è certamente vero che le firme digitali di solito implicano funzioni hash, che per loro natura sono intrinsecamente deterministiche, dovresti notare che le firme digitali sono più di un semplice hash . Esse implicano la crittografia a chiave pubblica, che viene utilizzata in un modo che garantisce che solo il legittimo proprietario di una chiave privata sia in grado di firmare qualcosa. Esistono parecchi algoritmi di firma digitale, con il seguente utilizzo ampiamente utilizzato nella pratica:

Almeno DSA, ECDSA ed ElGamal richiedono assolutamente numeri casuali per impostazione . Riutilizzare un numero casuale può portare al recupero della chiave privata. Questo è banalmente semplice e può essere compreso da chiunque sia interessato all'argomento con solo alcune equazioni di base.

Ci sono stati tutti i tipi di attacchi in passato che hanno esplorato proprio questo fatto. Probabilmente l'esempio più diffuso è hack di PlayStation 3, che ci ha portato il seguente fumetto xkcd:

ConRSAd'altrapartenonècosìfacile.RSA"Schoolbook" non richiede numeri casuali. Tuttavia, è possibile che un utente malintenzionato esegua attacchi falsi esistenziali su semplici implementazioni RSA. Pertanto vengono utilizzati schemi in pratica modificati, che potrebbero operare in modo probabilistico. L'idea di base è che le firme valide devono soddisfare una certa forma. Uno di questi standard è chiamato Protocollo di firma probabilistica (PSS) ) .

GPG ha implementato tutti i suddetti schemi. Ormai RSA sembra essere il default sulla maggior parte dei sistemi. RFC 4880 afferma che OpenPGP fa uso di EMSA-PKCS1-v1_5 , che è uno schema di riempimento deterministico e in effetti non richiede numeri casuali.

Quindi in sostanza : , le firme digitali richiedono numeri casuali e potrebbe essere una cattiva idea utilizzare le macchine virtuali per tali compiti. Almeno è qualcosa su cui riflettere consapevolmente.

    
risposta data 25.03.2014 - 01:42
fonte

Leggi altre domande sui tag