In che modo Java si collega tramite SSL a un server senza che io fornisca alcuna chiave privata / pubblica per la comunicazione? [duplicare]

1

Sto parlando solo dell'autenticazione lato server.

Java crea un certificato interno autofirmato per questa comunicazione? AFAIK dal protocollo TLS, entrambi abbiamo bisogno di creare un segreto condiviso, basato su ciò che ognuno di noi ha. Ma l'implementazione Java SSL di base, non richiede affatto che io crei una coppia di chiavi. Mi manca qualcosa?

Grazie!

    
posta Northern Pole 18.06.2014 - 16:02
fonte

1 risposta

2

Nel "solito" SSL, le coppie di chiavi pubbliche e private sono sul lato server, non sul client. Il client utilizza la chiave pubblica del server (come trovata nel certificato del server, che il server invia comodamente al client durante le prime fasi di connessione) ma non ha bisogno di possedere una coppia di chiavi pubblica / privata stessa (*).

Ovviamente, questo implica che mentre il cliente ottiene dal certificato del server una ragionevole garanzia che stia parlando con il server intenzionale, il server non ha idea di chi sia il client connesso. Quando non esiste un certificato client, SSL garantisce solo l'autenticazione unidirezionale. Se un server desidera autenticare i client, spetta al client e al server eseguire un protocollo di autenticazione aggiuntivo entro il tunnel SSL. Questo è esattamente ciò che accade ai browser Web e ai server HTTPS: il livello SSL convince il client che sta parlando con il server giusto, quindi il client mostra la password dell'utente al server.

(*) Se il client e il server accettano di utilizzare una suite di crittografia "DHE", allora sia il client che il server creano coppie di chiavi Diffie-Hellman temporanee, che non vedrete; anche le corrispondenti chiavi pubbliche non appariranno come parte dei certificati. Se il client e il server utilizzano una suite di crittografia "RSA" (non DHE) più comune, lo scambio di chiavi è in realtà la crittografia asimmetrica di alcuni byte casuali generati dal client, utilizzando la chiave pubblica del server e non esiste una coppia di chiavi pubblica / privata sul lato client.

    
risposta data 18.06.2014 - 16:27
fonte

Leggi altre domande sui tag