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.