Quale parte è la più lunga durante la generazione di coppie di chiavi RSA?

2

Se utilizzo il Certtool di openssll o gnutls, termino in una singola parte filettata che richiede diversi minuti.
Quando provo a compilare le librerie con strumenti avanzati avanzati auto-parallelizzatore. Il davanzale rimane filettato singolo.

Mi piacerebbe capire di più prima di immergerti in gran parte del codice per riscrivere manualmente ...

    
posta user2284570 30.12.2013 - 12:32
fonte

2 risposte

1

Il controllo della primalità dei due numeri primi necessari di solito richiede il tempo più lungo. Si noti che il tempo necessario per trovare un primo dipende molto dalla fortuna. Se il primo è vicino al punto di partenza può essere quasi istantaneo. Se è molto più lontano potrebbe volerci un po 'di tempo.

C'è tuttavia un altro componente che può essere completamente dannoso per le prestazioni: se il generatore di numeri casuali richiede entropia, potrebbe bloccarsi fino a quando non ha trovato abbastanza. Questo è particolarmente un problema con le architetture senza testa senza un disco rotante. Alcuni generatori RSA utilizzano direttamente anche /dev/random , che è la fonte principale di detta entropia. Questo è uno dei motivi per cui Intel incorpora un DRBG direttamente nel processore (utilizzando il rumore termico come fonte di entropia).

Quindi la mancanza di entropia può distruggere completamente le prestazioni. Nota che dovresti essere in grado di distinguere tra un thread di blocco e un thread in esecuzione osservando il tempo di CPU utilizzato.

Si noti che la maggior parte dei processori embedded è in modo imbarazzante lento per quanto riguarda la generazione di coppie di chiavi RSA. Un processore desktop può facilmente sovraperformare di un fattore importante. Anche le smart card, che hanno un coprocessore dedicato per questo tipo di attività, sono molto più lente dei processori desktop.

    
risposta data 14.04.2016 - 20:07
fonte
3

Questo sembra strano. Un laptop anemico del 2005 genera chiavi RSA a 4096 bit (cioè enormi tasti di overkill) in meno di 10 secondi. "Diversi minuti" indicano che c'è qualcosa di sbagliato nel tuo sistema. O che stai mirando a chiavi RSA ridicolmente grandi (2048 bit sono molto buoni, 3072 bit sono comprensibili se hai manager paranoici o devi rispettare alcune regole paranoiche uguali: 4096 bit sono esagerati esagerati, al di là è semplicemente stupido e incorrerà anche in problemi di interoperabilità).

In ogni caso, la generazione di coppie di chiavi RSA consiste principalmente nella produzione di due numeri primi casuali di circa la metà della dimensione del modulo bersaglio. La generazione di un numero primo si riduce, per lo più, alla ricerca di numeri interi dispari casuali fino a quando non viene trovato uno primo. Questo è suscettibile di alto parallelismo, anche se raramente conta.

Si deve dire che la generazione di chiavi RSA in modo sicuro richiede una buona conoscenza della matematica e della crittografia. Ci sono molte chiavi RSA là fuori, che sono state prodotte da poveri PRNG e sono, quindi, altamente fragili - e non può essere testato . Pertanto ti esorto vivamente a riconsiderare il giochetto con tale codice.

Scoprire perché sono necessari diversi minuti sulla tua macchina è più importante.

    
risposta data 30.12.2013 - 13:20
fonte

Leggi altre domande sui tag