Le chiavi RSA possono essere scambiate?

13

A livello teorico, c'è qualcosa di intrinsecamente diverso nelle chiavi public vs private?

Durante la generazione della chiave RSA ci sono due chiavi generate, la chiave A e la chiave B. La chiave A è privata e la chiave B è pubblica. La chiave B potrebbe essere privata e la chiave A essere pubblica?

  • La scelta di quale chiave è privata arbitraria?
  • Una delle due chiavi funzionerebbe ugualmente bene come privata con l'altra pubblica?
  • Esiste qualche proprietà matematica che richiede che la chiave A sia privata?

So che il formato su disco è diverso e non posso semplicemente rinominare i file. Ma sto parlando della chiave binaria grezza senza alcuna codifica, formattazione o metadati.

    
posta bahamat 01.03.2014 - 02:01
fonte

3 risposte

15

In RSA ci sono tre componenti importanti:

  • Un esponente pubblico
  • Un esponente privato
  • Un modulo comune (utilizzato sia con le chiavi private che pubbliche)

Quindi, la chiave pubblica è costituita dall'esponente pubblico e dal modulo, mentre la chiave privata è costituita dall'esponente e dal modulo privati.

Ma il modo in cui le cose vengono tipicamente implementate, l'esponente pubblico è quasi sempre 0x10001 - lo stesso valore per la chiave ogni . Quindi solo il modulo è unico.

Puoi vedere, quindi, come lo swapping della chiave privata e pubblica sarebbe problematico qui. Se il segreto di tutti fosse 0x10001 , non sarebbe molto segreto. Quindi, invece, manteniamo il segreto dell'esponente meno facilmente prevedibile e chiamiamo che una chiave privata.

    
risposta data 01.03.2014 - 03:15
fonte
7

Matematicamente, una coppia di chiavi RSA è un numero n che è il prodotto di due grandi primi probabili p e q e una coppia di numeri ( d , e ) tali che d × e - 1 è un multiplo di ( p - 1) × ( q - 1). I numeri d e e sono noti come esponenti (per una ragione che vedremo tra un minuto). Ci sono alcuni altri vincoli ma trattano in modo simmetrico d e e . La chiave pubblica è la coppia di numeri ( n , e ) e la chiave privata è la coppia di numeri ( n , d ).

(I file di chiavi private spesso contengono più di n e d , ma è una questione di formato concreto e una questione di file di chiavi private che di solito contengono la chiave pubblica troppo.)

Quindi, a questo proposito, sì, le chiavi RSA potrebbero essere scambiate.

Tuttavia, il punto di una coppia di chiavi pubblica / privata è che una delle chiavi rimane segreta mentre l'altra è resa pubblica. Il numero n deve essere utilizzato su entrambi i lati, quindi è pubblico. Uno di d e e - convenzionalmente, quello scritto d - è tenuto segreto e e diventa pubblico. Se d deve essere tenuto segreto, non deve essere facile da indovinare.

Il cuore dell'operazione RSA sta aumentando un numero elevato (pari a molti bit delle dimensioni della chiave) alla potenza di d o e . Questa è un'operazione costosa (lenta), quindi è bello scegliere d e e per renderla non troppo lenta. Ciò comporta che d e e siano piccoli (o come secondi migliori con pochi bit impostati su 1 nella loro rappresentazione binaria). Tuttavia, se rendi d piccolo, lo puoi rendere possibile per enumerazione. Quindi d , l'esponente privato, deve essere grande. D'altra parte, e può essere mantenuto piccolo; per ragioni matematiche deve essere dispari e non può essere 1, ma 3 è una scelta perfettamente buona, e la seconda più comune. Per ragioni storiche, la scelta più comune di e è 65537, che è 10000000000000001 in binario.

Quindi, in una coppia di chiavi RSA come è fatto in pratica per buoni motivi, data la chiave privata ( n , d ), si può trovare la chiave pubblica (< em> n , e ) indovinando i possibili valori di e (è 65537? Se no, è 3? In caso contrario, prova qualche altro piccolo numeri.) Per questo motivo, la chiave pubblica e la chiave privata non possono essere interscambiate.

Si noti che questa è una proprietà di RSA. Alcuni altri algoritmi a chiave pubblica (come DSA) hanno chiavi pubbliche e private che vivono in diversi spazi matematici.

    
risposta data 01.03.2014 - 10:28
fonte
4

La descrizione seguente si applica alla crittografia a chiave pubblica RSA. La chiave pubblica è la coppia (e, n) e la chiave privata è (d, n) , dove n è un prodotto di 2 numeri primi enormi. e e d sono inverse moltiplicativi.

Sia x ^ y denotato x elevato alla y power mod n. Tutte le operazioni sono eseguite mod n

prendi il messaggio m, dove m < n. Poiché e ed d sono inversioni moltiplicative,

 (m ^ e) ^ d is equal to m
 (m ^ d) ^ e is also equal to m

Quindi, non c'è nulla di speciale su e o d per quanto riguarda la matematica . e, che è parte della chiave pubblica, è un numero piccolo, in genere 3 o 65537, e d, che è parte della chiave privata, è l'inverso moltiplicativo di e sarà un numero casuale enorme. Vuoi che la chiave privata sia un numero casuale enorme che non può essere indovinato e l'unico modo per ottenere d è il fattore n, che è computazionalmente non fattibile per il grande n.

Cifrare un messaggio calcolando (m ^ e). Chiamalo c. Decifrate calcolando (c ^ d) che ti darà m. Dato che e è molto più piccola di d, la crittografia di un messaggio usando RSA è molto più veloce della sua decrittografia.

In realtà, quando esegui la firma, vai nella direzione opposta, in genere viene firmato l'hash del messaggio. h = hash (m) Calcola s = (h ^ d) per ottenere la firma dell'hash. Si verifica la firma calcolando s ^ e per tornare indietro.

    
risposta data 01.03.2014 - 08:39
fonte

Leggi altre domande sui tag