È possibile dimostrare che una chiave del server TLS è stata modificata?

3

Conosco un sito che utilizza attualmente SSLv2 e mi rifiuto di connettermi a loro fino a quando non

  1. Disattiva SSLv2
  2. Ridigita i loro server

Insisto sul # 2 perché a causa di DROWN , i server che eseguono SSLv2 dovrebbero considerare le loro chiavi private compromesse. Un ri-tasto è l'unica cosa che risolverà quel problema.

C'è un modo per dimostrare che il sito ha ridisegnato il proprio server? Posso controllare il certificato (che dovrà essere modificato), ma come faccio a sapere che non hanno riutilizzato la stessa chiave e ottenuto un nuovo certificato?

So che posso usare openssl x509 -pubkey per ottenere informazioni sulla chiave pubblica (che è legata direttamente alla chiave privata) dal certificato. Se la chiave pubblica cambia, vuol dire che la chiave privata è cambiata?

Oppure, una domanda migliore potrebbe essere "se la chiave pubblica cambia, è possibile che la chiave privata non sia cambiata"? Paragonerei il modulo e l'esponente della chiave pubblica, ovviamente, non solo i byte dei file codificati in DER che ero in grado di recuperare o derivare.

Il confronto a chiave pubblica funzionerà, e c'è un modo migliore?

    
posta Christopher Schultz 12.04.2016 - 20:45
fonte

3 risposte

2

Risposta breve: se la chiave pubblica è stata modificata, così ha la sua chiave privata.

Esplosione lunga: le moderne suite di crittografia utilizzate dai server SSL / TLS hanno esattamente un abbinamento di chiavi. Quindi, finché una delle chiavi è cambiata, anche l'altra chiave è cambiata. Quindi, se hanno disabilitato anche SSLv2, dovresti essere pronto. È possibile trovare più informazioni sullo stack di Crypto.

    
risposta data 12.04.2016 - 20:55
fonte
1

Teoricamente , la chiave pubblica codificata DER può essere cambiata senza modificare il segreto reale nella chiave privata; ci sono (almeno) due modi per farlo:

  1. Cambia la codifica DER. Mentre DER è presumibilmente deterministico, esiste ancora un elemento facoltativo nella struttura AlgorithmIdentifier che identifica il tipo di chiave. Per una chiave pubblica RSA, l'OID in quella struttura deve puntare su RSA e i "parametri" dovrebbero essere tradizionalmente impostati su un valore "NULL" ASN.1, ma i parametri possono anche essere omessi del tutto, il che dovrebbe comunque funzionare nella maggior parte dei casi. luoghi, ma cambierà la codifica DER.

  2. L'esponente pubblico può essere modificato mantenendo lo stesso modulo, vale a dire gli stessi fattori, che più o meno implica l'uso della stessa chiave privata (vale a dire, i fattori rimarranno gli stessi, anche se il privato esponente è modificato).

Tuttavia, tali trucchi sarebbero un grande sforzo senza un motivo plausibile. Pertanto, nella pratica , si può presumere che se la chiave pubblica è stata modificata, è stata generata una nuova chiave privata.

(Attenzione però, come sottolinea @Nathan, che una nuova chiave generata non implica che la nuova chiave sia stata generata o archiviata correttamente, infatti, si potrebbe sostenere che la gestione di un sito che supporta ancora SSLv2 in all'inizio del 2016 è piuttosto sciatto per quanto riguarda la sicurezza in generale.)

    
risposta data 12.04.2016 - 21:13
fonte
0

If the public key changes, does that mean that private key has changed?

Sì.

Vale la pena notare che probabilmente è inutile insistere su un tale cambiamento (la rekey) - per quel che ne sai, la loro nuova coppia di chiavi è memorizzata su una cartella condivisa aperta all'intero ufficio ... Vale a dire, indipendentemente da come nuovo è, la chiave è valida solo quanto la sicurezza operativa.

    
risposta data 12.04.2016 - 20:49
fonte

Leggi altre domande sui tag