it-swarm.dev

Esiste una definizione di lunghezza chiave per DH o DHE?

Ho trovato questo nel wiki

L'algoritmo Finite Field Diffie-Hellman ha all'incirca la stessa forza chiave di RSA per le stesse dimensioni di chiave. Il fattore di lavoro per rompere Diffie-Hellman si basa sul problema del logaritmo discreto, che è correlato al problema della fattorizzazione dei numeri interi su cui si basa la forza di RSA. Pertanto, una chiave Diffie-Hellman a 3072 bit ha circa la stessa forza di una chiave RSA a 3072 bit.

Come definire una lunghezza chiave Diffie-Hellman?

Secondo il principio DH:

Y = g ^ X mod p

p, g, X o Y? Quale equivale a 3072 bit secondo l'opinione della wiki

10
Zack

Le dimensioni delle chiavi sono tradizionali . Con questo intendo dire che non esiste una nozione universale e matematicamente accettata di "dimensione chiave" che corrisponderà a tutti gli algoritmi. Per gli algoritmi simmetrici, è consuetudine disporre di chiavi che sono sequenze di bit di una determinata lunghezza n, in modo tale che tutte le possibili sequenze di lunghezza n (ci sono 2n di questi) sono chiavi accettabili; nel qual caso i crittografi tendono a parlare di n come "la dimensione della chiave". C'è già spazio per i problemi qui, con DES, che ha chiavi a 64 bit di cui vengono utilizzate solo 56 bit, quindi DES si può dire che utilizza chiavi a 56 bit. Similary, 3DES usa una chiave a 192 bit che in realtà è una chiave a 168 bit; e, per favorire la confusione, esiste un algoritmo noto che (teoricamente) rompe 3DES nello sforzo 2112 quindi a volte si dice che 3DES abbia un livello di sicurezza "112 bit". Un altro algoritmo problematico è RC2, che ha un ulteriore parametro "dimensione chiave effettiva" che riduce la resistenza di RC2 contro la forza bruta fino a un valore configurabile, anche se la chiave è più lunga.

Per la crittografia asimmetrica, le cose sono più complesse poiché le chiavi pubbliche e private non sono più "solo sequenze di bit". Ad esempio, una chiave pubblica RSA è composta da due numeri interi, il modulo e il esponente pubblico. È tradizionale usare la dimensione del modulo come "dimensione della chiave RSA", anche se non è possibile adattare un'intera chiave pubblica RSA in una sequenza di bit di quella dimensione (perché non ci sarebbe spazio per l'esponente pubblico) .

Per Diffie-Hellman , lo standard è ANSI X9.42 . Questo standard costantemente evita per parlare di " il dimensione chiave". Invece, parla sempre di "la dimensione di p" e "la dimensione di q". Entrambe le dimensioni sono importanti per la sicurezza, ma non all'interno della stessa gamma. Vale a dire, DH funziona con i numeri modulo a big prime p e con un generatore g. Il generatore g "genera" un sottogruppo di numeri interi modulo p: se si considerano i valori successivi 1, g, g2, g3 ... modulo p, tornerai a 1 a un certo punto. L'ordine di g è il numero intero più piccolo k>> 0 tale che gk = 1 mod p. La matematica ci dice che k necessariamente divide p-1. Con queste notazioni:

  • Il DH può essere rotto se logaritmo discreto modulo p, con base g, è rotto. Ci sono alcuni algoritmi il cui costo dipende dalla dimensione di p, quindi vuoi p essere abbastanza grande da rendere questi algoritmi troppo costosi. L'algoritmo più noto di quel tipo è una variante di General Number Field Sieve e del record corrente, per un modulo "casuale" p è 530 bit (è possibile creare un modulo in forma speciale p che semplifichi il logaritmo discreto, ma un numero casuale casuale lo eviterà con una probabilità schiacciante).

  • Il logaritmo discreto può anche essere rotto in un tempo che dipende sia dalla dimensione dell'esponente usata, sia dall'ordine di k. Se, all'interno di Diffie-Hellman, una parte seleziona il proprio esponente privato in un intervallo di t valori successivi, e il fattore primo più grande di k (l'ordine di g) è q, quindi gli algoritmi di quel tipo interromperanno DH in un tempo che dipende dal più piccolo di q e t. Questi sono gli algoritmi "generici", il cui tempo di esecuzione è proporzionale a radice quadrata di q (o t, se è più piccolo).

Quindi in pratica hai tre dimensioni :

  • La dimensione di t per la generazione della chiave privata DH: ogni parte coinvolta genera una chiave privata DH casuale nell'intervallo 1..t-1.
  • La dimensione di q, che è il maggiore fattore primo dell'ordine k del generatore g.
  • La dimensione del modulo p.

In alcuni protocolli, q viene generato esplicitamente, quindi con una dimensione nota, e quindi p viene generato in modo che p-1 è un multiplo di q. Quindi g è selezionato per avere l'ordine esattamente q ( gq = 1 mod p). In questi protocolli, impostiamo t = q: q è noto e i sistemi generano chiavi private in 1..q-1 intervallo.

In alcuni altri protocolli, p viene generato come un cosiddetto "primo sicuro", ovvero tale che (p-1)/2 è anche primo. In tal caso, p = 2q + 1. Per questi protocolli, le chiavi private DH verranno generate in un intervallo più piccolo t, in genere da 160 a 256 bit.

In ancora alcuni altri protocolli, q non è affatto noto e si presume sia abbastanza grande. Questo è il caso di SSL/TLS (per le suite di crittografia DHE, il Server Key Exchange messaggio contiene p e g ma non q, quindi il client non lo sa q). Anche in questo caso, viene utilizzato un intervallo t.

Vogliamo n - bit di sicurezza per alcuni n, nel senso che l'algoritmo dovrebbe avere un costo medio 2n operazioni. Per raggiungere tale livello di sicurezza, la dimensione di q e la dimensione di t deve essere almeno 2n bit, ma p deve essere molto più grande. Per fornire cifre, si stima generalmente che se si cerca n = 112 (sicurezza a 112 bit, che è ciò che si ottiene per la crittografia simmetrica con 3DES), è necessario q and t deve essere almeno 224 bit, ma p deve essere almeno 2048 bit.


Riepilogo: quando si parla di DH, una dimensione "grande" come 1024 o 3072 significa normalmente "la dimensione di p ", mentre una dimensione" piccola "come 160 o 256 normalmente significa" la dimensione di q "o" la dimensione di t ". Non esiste uno standard per "la dimensione", e in effetti lo standard non definisce una dimensione unica per tutte le dimensioni.

Nella tua citazione di Wikipedia, i "3072 bit" hanno le dimensioni di p (il modulo). Il valore y, che è una chiave pubblica DH, è compreso nell'intervallo 1..p-1, quindi anche un numero di 3072 bit (o leggermente più piccola). L'esponente privato x è scelto in un intervallo 1..t-1 which may può arrivare a 3072 bit anche (o anche più grande) ma un intervallo molto più piccolo, fino a (diciamo) 256 bit, è perfettamente accettabile per la sicurezza.

Come dice @Polynomial, vedi questo sito per i confronti tra le dimensioni delle chiavi.

11
Tom Leek

Diffie-Hellman ha due dimensioni chiave: la dimensione della chiave di registro discreta e la dimensione discreta del gruppo di registro. Questi mappano rispettivamente su q e p.

Le dimensioni ragionevoli per loro, a partire dal 2013, sono 224 bit per q e 2048 bit per p.

È possibile utilizzare KeyLength per ottenere stime per varie vite chiave e margini di sicurezza.

Vale anche la pena guardare questa domanda su Crypto SE, che fornisce maggiori dettagli tecnici sulla questione.

3
Polynomial