È possibile rilevare le modifiche alla chiave privata SSL?

5

Mi chiedo se sarebbe possibile rilevare una modifica di una chiave privata SSL? Se cambi la chiave, allora penso che si debba emettere un nuovo certificato, ma potrebbero essere rilasciati nuovi certificati senza cambiare la chiave, giusto?

Oppure è possibile conservare il certificato e cambiare la chiave? Assumerei, no.

Per quanto ne so, ad es. quando un certificato scade, è necessario generare una nuova chiave e con quella chiave una richiesta di firma del certificato, da cui viene creato un nuovo certificato.

    
posta that guy from over there 06.10.2013 - 19:04
fonte

4 risposte

7

Un certificato è firmato , il che significa che non è possibile modificare un singolo bit senza interrompere la firma. I certificati sono immutabili. Quando si desidera "cambiare la chiave" o "modificare le date di validità", è necessario un certificato nuovo di zecca. Il rinnovo è un concetto di business; al livello X.509 c'è un certificato, e poi ce n'è un altro, ed entrambi vivono indipendentemente l'uno dall'altro.

Un certificato contiene un nome e una chiave pubblica. La stessa chiave pubblica può apparire in diversi certificati; non esiste una regola tecnica che imponga una nuova generazione di coppie di chiavi ogni volta che viene emesso un nuovo certificato. Possono tuttavia esserci regole legali o aziendali : una CA deve seguire la sua politica di certificazione pubblicata e tale politica può imporre una nuova coppia di chiavi per un rinnovo del certificato.

Potremmo notare che quando una CA vuole "rinnovare" un certificato senza modificare la chiave pubblica, allora può farlo da solo: la CA già conosce tutto ciò che entra nel nuovo certificato. Pertanto, questo tipo di rinnovo può essere eseguito automaticamente senza la necessità di parlare con il proprietario del certificato. Non tutte le CA lo fanno.

Per ogni chiave pubblica, c'è una chiave privata corrispondente. La chiave privata, formalmente, è la conoscenza degli elementi matematici che consentono di eseguire le "operazioni a chiave privata" (generazione della firma, decrittografia asimmetrica). Matematicamente, questa conoscenza può essere codificata in vari modi. In RSA, la chiave pubblica è una coppia di grandi numeri interi:

  • il modulo n
  • l'esponente pubblico e

Il modulo è un prodotto di due grandi numeri primi p e q . La chiave privata è, in realtà, la conoscenza di p e q . Tuttavia, in pratica, la chiave privata è codificata come diversi grandi numeri interi:

  • il modulo n
  • l'esponente pubblico e
  • p
  • q
  • l'esponente privato d
  • d p = d mod p-1
  • d q = d mod q-1
  • 1 / q mod p

L '"esponente privato" è un valore d tale che e · d = 1 modulo sia p-1 sia q -1 . Accade così che ci siano diversi (effettivamente, infinitamente molti) valori possibili per d , per una determinata chiave pubblica (n, e) . Questo è ciò che altri hanno sottolineato: puoi avere "diverse" chiavi private per la stessa chiave pubblica. Tuttavia, posso dire che tutte queste chiavi private sono in effetti diverse rappresentazioni di una chiave privata "vera" unica, che è la conoscenza di p e q . Tutte queste cosiddette chiavi private calcolano le stesse cose per gli stessi input e producono le stesse uscite. In realtà, c'è solo una chiave privata.

(Matematicamente, la ricerca di valori equivalenti per d p e d q è stata impiegata per ottenere alcuni prestazioni su alcune architetture a bassa potenza, ovvero le smart card, il trucco è che rendere d p leggermente più lungo può implicare un miglioramento delle prestazioni se il valore più lungo ha un peso inferiore di Hamming. )

Quindi direi che puoi dimenticare questa nozione di "cambiare la chiave privata senza cambiare la chiave pubblica". Aggiunge solo confusione.

Infine, la chiave pubblica di un server SSL si trova nel certificato del server, che è pubblico e inviato al client. Se il client ricorda l'ultimo certificato utilizzato da un dato server, allora può sicuramente segnalare quando quel certificato è cambiato, e cosa è cambiato esattamente. In particolare se la chiave pubblica è la stessa di prima o un'altra.

C'è un componente aggiuntivo per Firefox per questo.

Si noti che i certificati che cambiano sono un evento normale sul Web, non solo per i rinnovi (CA che vende molto i certificati quando possono vendere più certificati, e questo è un driver primario per i brevi tempi di vita dei certificati del server esistente ) ma anche per i multi-front-end: quando un server è ospitato su più macchine con bilanciamento del carico, ogni macchina può avere il proprio certificato, distinto dai certificati di altri front-end.

    
risposta data 07.10.2013 - 21:47
fonte
2

Proviamo a suddividere questo. Il modo in cui hai chiesto questo ha creato diverse domande:

Innanzitutto, se si modifica la chiave privata, è necessario emettere un nuovo certificato. Un certificato viene generato firmando una richiesta di firma del certificato. Una richiesta di firma del certificato contiene la chiave pubblica del richiedente. Poiché la chiave pubblica e privata sono collegate matematicamente e il certificato è, nella sua forma più semplice, la firma della parte di chiave pubblica di quel sistema, la modifica della chiave privata richiederà una modifica del certificato.

Pertanto, non è possibile conservare il certificato e cambiare la chiave. Tuttavia, hai qualche altra domanda in là. Ecco la prossima che vedo:

"Devo generare una nuova coppia di chiavi per fare una richiesta di firma del certificato?" La risposta a questo è "No." Mentre molte persone prenderanno il CSR come un'opportunità per cambiare la chiave pubblica / privata, non è un requisito. Puoi facilmente generare un nuovo CSR con la stessa chiave e farlo firmare per un nuovo periodo di tempo o anche da un nuovo fornitore di fiducia!

Infine, la tua prima domanda. "È possibile rilevare la modifica di una chiave privata SSL?" La risposta è si. Quando la chiave pubblica cambia, si garantisce che la chiave privata sia cambiata. Ricorda che il certificato contiene una copia firmata della chiave pubblica. Poiché questo è il caso, è possibile verificare facilmente se la chiave pubblica del certificato corrente corrisponde alla chiave pubblica precedente. Se non corrispondono, la chiave privata è cambiata.

Spero che questo aiuti!

    
risposta data 06.10.2013 - 22:36
fonte
2

No, non sempre.

Ma è altamente improbabile che qualcuno segua la procedura qui sotto a meno che non sia più importante sovvertire le pre-condizioni della tua applicazione mantenendo la sicurezza della coppia di chiavi:

  1. Crea una coppia di chiavi RSA.
  2. Scegli un valore casuale M > 1
  3. Moltiplica l'esponente privato (a / k / a chiave privata) per M * Phi (N) dove Phi (N) è Funzione tot. di Euler *.
  4. Ora hai due chiavi private che generano la stessa chiave pubblica.

Vedi questo scambio / domanda di scambio di criptovalute per informazioni più dettagliate; poiché avere due chiavi che condividono esponenti privati correlati è profondamente non sicuro.

* Penso. Ho dimenticato la maggior parte della matematica avanzata che conoscevo una volta.

    
risposta data 07.10.2013 - 00:31
fonte
0

Di norma, sì. Cambiare la chiave privata significa cambiare la chiave pubblica, il che significa emettere un nuovo certificato. puoi ottenere un nuovo certificato con la stessa chiave pubblica di prima, ma puoi facilmente confrontare il vecchio e il nuovo certificato per vedere se la chiave è la stessa.

No, non puoi mantenere lo stesso certificato mentre cambi la chiave. Poiché la chiave pubblica è incorporata nel certificato, una chiave diversa indica un certificato diverso. Sarebbe come cercare di cambiare il numero del tuo passaporto mantenendo lo stesso passaporto.

@LateralFractal è corretto che è possibile creare due chiavi private RSA che condividono la stessa chiave pubblica, ma come regola non succede. Dovresti fare i conti da solo perché nessuna libreria crittografica implementa questa funzione.

    
risposta data 07.10.2013 - 20:41
fonte

Leggi altre domande sui tag