Quanto dovrebbe essere protettivo un certificato client SSL?

6

Abbiamo un'applicazione in cui la connessione al database richiede un certificato client SSL. Quanto dobbiamo essere protettivi per questo certificato? Quali sono le implicazioni se qualcun altro lo ottiene?

Capisco all'incirca quanto funzioni la crittografia a chiave pubblica-privata, ma non conosco la chiave che contiene il certificato.

    
posta Nathan Long 31.08.2011 - 16:12
fonte

2 risposte

6

In generale, un certificato client viene utilizzato per fornire l'autenticazione (al contrario della crittografia). È necessario assicurarsi che la chiave privata e la passphrase (se presenti) siano protette. Se qualcuno li ottiene, possono autenticarsi nel database usando le credenziali del certificato. Se la tua applicazione richiedesse invece una password per accedere al database, l'equivalente sarebbe qualcun altro che conosce quella password.

Senza sapere quale documentazione dell'app stai guardando, andrò su un arto e dirò che il "certificato client" indica la chiave privata e il certificato firmato; il certificato firmato include ovviamente la chiave pubblica. È la chiave privata che devi davvero proteggere.

    
risposta data 31.08.2011 - 17:49
fonte
1

Un certificato contiene la chiave pubblica. Il certificato è ciò che mostri ad altre persone; per l'autenticazione del client SSL, il client mostra il suo certificato al server quando il server lo richiede. Un certificato non deve essere nascosto in alcun modo; è intrinsecamente dati pubblici.

La chiave privata è la parte sensibile. La chiave privata viene utilizzata per calcolare una firma digitale , che può essere verificata utilizzando la chiave pubblica (dal certificato). All'interno di SSL, quando il server richiede un certificato client, il client mostra il suo certificato (un Certificate messaggio) e calcola e invia anche una firma (a CertificateVerify messaggio). I dati firmati sono composti da messaggi precedenti nell'handshake SSL, quindi includono il "server random", che serve come una sorta di "sfida". Dal punto di vista del server, il client ha appena dimostrato la sua padronanza della chiave privata essendo in grado di generare una firma su un pezzo di dati che include alcuni byte scelti dal server.

Il certificato è anche un oggetto firmato; è stato firmato dall'autorità di certificazione che ha creato il certificato. Verificando questa firma, il server può assicurarsi che i contenuti del certificato siano "corretti". Questo è l'altro pezzo dell'autenticazione: sebbene la firma del client mostri che il client controlla effettivamente la chiave privata corrispondente alla chiave pubblica che si trova nel certificato, il server deve comunque assicurarsi che la chiave pubblica nel certificato sia effettivamente la chiave pubblica di proprietà della presunta identità utente . Il certificato è una nave per trasmettere tali associazioni di chiavi del nome.

Il tuo certificato è pubblico, quindi non può essere "rubato". Non c'è nessun problema in altre persone che ottengono una copia del certificato. Dopo tutto, sei incline a mostrarlo a qualsiasi server che lo richiede.

La tua chiave privata è sensibile. Se alcuni rubano la tua chiave privata, allora lui può impersonare te quando parla con tutti i server che sono stati configurati per accettare il tuo certificato. In condizioni normali, nessuna entità impara la tua chiave privata; la CA non ce l'ha, il server SSL non la vede. La tua chiave privata è memorizzata nelle viscere del tuo computer, o possibilmente in una smart card . In quest'ultimo caso, la chiave privata non lascia mai la carta; la carta calcola la firma stessa.

    
risposta data 09.08.2013 - 22:38
fonte

Leggi altre domande sui tag