Qualunque algoritmo asimmetrico può funzionare con una quantità di casualità pari a una chiave?

1

Con 397 rotoli di un dado a 6 facce giusto (non il mio uso del tempo preferito, ma certamente non impossibile), potrei generare più di 1024 bit casuali. Potrei usare quei bit per generare una coppia di chiavi che potrebbe quindi essere utilizzata in crittografia senza mai toccare di nuovo un (p) rng?

    
posta Shea Levy 09.10.2013 - 04:03
fonte

2 risposte

2

Ci sono due punti:

  1. Generazione di coppie di chiavi : questo è un processo mediante il quale viene selezionato casualmente un oggetto con una struttura matematica. La struttura dipende dall'algoritmo utilizzato; per esempio, con RSA, hai bisogno di due grandi numeri interi primi.

    Il metodo generico consiste nell'utilizzare l'entropia iniziale come seme per un PRNG e quindi utilizzare il PRNG per tutte le scelte casuali nell'algoritmo di generazione della coppia di chiavi. Per adattarsi a tutti i tuoi tiri di dado in un seme, semplicemente li abbatti tutti insieme. Come regola generale, hai bisogno solo di 128 bit di entropia (a condizione che il PRNG sia crittograficamente strong), quindi 50 rotoli sono sufficienti. Più non danneggiano, nel caso in cui il dado non sia equo come inizialmente ipotizzato.

  2. Utilizzo chiave : alcuni usi della crittografia asimmetrica richiedono casualità. In particolare, la crittografia asimmetrica richiede intrinsecamente un riempimento casuale, poiché la crittografia asimmetrica deterministica potrebbe essere soggetta a una ricerca esauriente sul messaggio stesso (la crittografia asimmetrica utilizza la chiave pubblica, che è pubblica, in modo che tutti possano crittografare i messaggi e vedere se il risultato corrisponde a un dato output crittografato). Potresti andare via senza padding casuale se il messaggio da crittografare è già strongmente casuale, ma questo non risolve il problema; lo muove semplicemente. Per operare senza casualità, puoi usare quanto segue:

    • Per le firme , usa un algoritmo di firma deterministica. RSA con PKCS # 1 v1.5 è deterministico (ma non lo schema di riempimento "PSS" più recente). Per DSA (e ECDSA), l'algoritmo specificato da FIPS 186-4 richiede una buona casualità per ogni firma, ma una variante deterministica compatibile può essere definito .

    • Poiché la crittografia asimmetrica richiede casualità, puoi sostituirla con Diffie-Hellman statico . Il sistema A e il sistema B possiedono entrambi una coppia di chiavi DH, nello stesso gruppo (la stessa curva per ECDH). Ogni volta che A e B vogliono parlare insieme, usano come segreto condiviso il valore risultante da DH, usando le loro due coppie di chiavi. Ciò implica che A e B finiranno sempre con lo stesso segreto condiviso. Questo ha alcuni problemi extra da tenere a mente: non c'è Perfect Forward Secrecy , replay potrebbero essere applicati ...

In generale, la vita crittografica senza casualità è dura. Molti algoritmi e protocolli richiedono una certa casualità (ad esempio la crittografia simmetrica in modalità CBC dovrebbe avere un IV casuale). Puoi avere una casualità "sufficientemente buona" in un dato sistema finché hai una chiave segreta, e stato o un valore pubblico non ripetitivo (ad esempio un orologio, ma fai attenzione ai reset). In effetti, se si dispone di un contatore, è possibile crittografare i successivi valori del contatore con un codice a blocchi (AES viene in mente) e questo sarà un buon PRNG; un valore non ripetuto noto a tutti (come l'ora corrente) può servire come sostituto del contatore.

Se un sistema non ha stato per aggiornare, e nessuna fonte di casualità, allora è intrinsecamente riavvolgibile: avvialo, quindi invia gli stessi input di prima, e otterrai lo stesso risultato . Questo è ciò che significa, quando diciamo che un computer è un sistema deterministico . Gli attacchi di replica sono la principale preoccupazione qui.

    
risposta data 09.10.2013 - 13:14
fonte
3

Supponendo che i tuoi dadi siano giusti, ogni lancio di dadi produce circa 2.585 bit di entropia. Potresti usarlo per generare un solido materiale-chiave.

Generare chiavi asimmetriche è comunque un processo matematico. Entrambi RSA e DSA implica la selezione dei primi. Quindi non puoi avvicinarti al processo con un enorme numero casuale in mano e aspettarti di poterlo usare così com'è.

Ci sono opportunità di "mescolare" il materiale dei dadi ad alta entropia durante il processo di generazione delle chiavi, ovvero quando selezioni i tuoi numeri primi e l'esponente di crittografia in RSA, o quando selezioni i primi o il segreto privato in DSA.

Non avresti bisogno di generare così tanto tuttavia, una chiave RSA a 1024 bit contiene circa 80 bit di entropia ;

the security available with a 1024-bit key using asymmetric RSA is considered approximately equal in security to an 80-bit key in a symmetric algorithm

Quindi avresti bisogno solo di 80 bit di entropia per generare una chiave RSA a 1024 bit. Vale a dire, se consumassi quanta più casualità possibile in ogni fase della generazione di chiavi, scopriresti di aver consumato circa 80 bit di materiale dado quando hai finito la generazione.

    
risposta data 09.10.2013 - 10:12
fonte

Leggi altre domande sui tag