2009-03-30 14 views
17

ho un follow-up domanda a Given a private key, is it possible to derive it’s public key?Come sono diverse le chiavi pubbliche e private?

Sono il pubblico e le chiavi private del 'stesso' (nel senso che basta scegliere di fare una pubblica) o si può fare di più con la chiave privata che con il chiave pubblica?

EDIT - di affermare meglio la mia domanda:

Quando le due chiavi vengono generate, potevo solo scegliere a caso uno di loro di essere la chiave pubblica?

+0

I * think * questo dipende in gran parte dall'algoritmo di crittografia utilizzato. In alcuni sono intercambiabili, in altri non lo sono. Questo è legato a questa domanda: http://stackoverflow.com/questions/696472/given-a-private-key-is-it-possible-to-derive-its-public-key –

+2

+1 per chiedere qualcosa I ' Mi sono chiesto per un po '. –

+0

Correlato a http://security.stackexchange.com/questions/52495/can-rsa-keys-be-swapped per RSA. – Gnubie

risposta

10

Dipende molto da ciò che chiami "chiave privata". In quasi tutte le situazioni pratiche, il mittente che conosce la chiave privata conosce anche la chiave pubblica. Fornisce agli altri la sua chiave pubblica, quindi deve saperlo. Quindi, in sostanza, quella "chiave privata" conterrà informazioni sulla "chiave pubblica" o almeno ne potrà derivare.

In genere, non è possibile scambiare le chiavi private e pubbliche. In realtà, non sono sempre dello stesso tipo (a seconda del criptosistema utilizzato). Ad esempio, in ECDSA, la tua chiave pubblica è un "punto" bidimensionale su una curva ellittica, mentre la tua chiave privata è un numero.

+4

In RSA, poiché la chiave pubblica viene calcolata dalla chiave privata, cambiarle significa che la chiave precedentemente privata è ora la chiave pubblica e chiunque potrebbe facilmente generare la chiave pubblica precedentemente utilizzata come chiave privata.La commutazione di chiavi pubbliche/private in RSA rende l'RSA non sicura. – Martijn

2

Da http://www.webopedia.com/TERM/P/public_key_cryptography.html:

un sistema di crittografia che utilizza due chiavi - una chiave pubblica nota a tutti e una chiave privata o segreta conosciuta solo al destinatario del messaggio. Quando John vuole inviare un messaggio sicuro a Jane, usa la chiave pubblica di Jane per crittografa il messaggio. Jane quindi usa la sua chiave privata per decrittografarla.

Un elemento importante per il sistema a chiave pubblica è che i chiavi pubbliche e private sono correlati in modo tale che solo la chiave pubblica può essere utilizzato per messaggi cifrare e solo il corrispondente chiave privata può essere utilizzata per decrittografarli. Inoltre, è virtualmente impossibile dedurre la chiave privata se si conosce la chiave pubblica .

2

No. Questo è l'idea di generare una coppia di chiavi in ​​mondo PPK. In genere criptare con la chiave pubblica e decifrare con la chiave privata. Quindi dovresti condividere la chiave pubblica con i tuoi amici e chiedere loro di usarli quando ti inviano il loro numero di conto bancario.

12

Alcuni carta descrizioni ruoli attuali di chiavi pubbliche e private come abbastanza simmetrica ma non puoi assolutamente scambiare ruoli di chiave privata e pubblica nel mondo reale.

L'uso comune:

  • la chiave pubblica deve essere utilizzata per la cifratura e la verifica della firma
  • la chiave privata deve essere utilizzata per la decrittazione e la firma

Ci sono diversi motivi per che:

  • non si desidera lasciare all'utente la scelta di quale chiave deve essere pubblicata e quale non è. La chiave pubblica è pubblicata in tutto il mondo e puoi considerarla come tua identità pubblica. La parte privata è necessaria quando devi provare a qualcun altro che hai più informazioni di altre su questa identità: puoi leggere i messaggi inviati, puoi firmare i messaggi che possono essere verificati da chiunque conosca il tuo ID pubblico. Se la parte della chiave pubblica/privata da pubblicare fosse lasciata all'utente, terminerai con gli utenti che pubblicano entrambi. Ma questa non è la ragione principale.

  • quando si hanno le chiavi private, hai davvero entrambi i tasti ogni implementazione comune So offrono strumenti per estrarre chiavi pubbliche da file privati. Questo è vero per pgp, gpg, openssl. Significa che i cosiddetti file di chiavi private memorizzano sia le chiavi private che quelle pubbliche come descritto negli algoritmi. Questo è di design.

Per esempio con OpenSSL la sequenza di comandi per generare una coppia di chiavi RSA può essere:

openssl genrsa -out private.key 2048 
openssl rsa -in private.key -pubout -out public.key 

dovrebbe essere abbastanza chiaro che il primo comando generare entrambe le chiavi nel file della chiave privata e che la chiave pubblica viene semplicemente estratta da essa.

La conseguenza è che se la tua chiave privata viene compromessa, entrambe le tue chiavi saranno compromesse. Il contrario è sicuro, non è possibile dedurre la chiave privata se si conosce la chiave pubblica né dal file né da un attacco matematico.

  • cifratura con chiave privata è matematicamente debole: bene, al punto precedente è già abbastanza, ma alcuni utenti subdoli potrebbe essere considerato usando la crittografia asimmetrica mantenendo entrambe le chiavi nascoste per lo scambio di dati. Non usare la cifratura simmetrica se si vuole fare questo tipo di scambi. Sì, è possibile crittografare un messaggio utilizzando la chiave privata e decodificarlo utilizzando uno pubblico (in pratica è ciò che viene utilizzato per la firma, ma il caso d'uso è diverso in quanto si dispone anche di un messaggio iniziale). I parametri interni delle due chiavi non sono i nomi e tutta la forza della crittografia è stata provata solo per la solita direzione e l'uso comune.
+0

Risposta stupenda. Grazie. Mette la lunga storia breve! – egelev

Problemi correlati