Crittografia a chiave pubblica
Devi prima capire il principio della crittografia a chiave pubblica. Sia il server che il client hanno la propria chiave pubblica e (privata / privata).
La chiave pubblica può essere utilizzata per due cose.
- Cifra i dati su destinatario .
- Verifica i dati ricevuti da mittente o altri dati firmati, come i certificati firmati.
La chiave privata può essere utilizzata anche per due cose.
- Decrittografa i dati ricevuti dal mittente.
- Firma i dati su ricevitore o altri dati come i certificati firmati.
Quando i tuoi dati di invio a una destinazione sono seguiti i seguenti passaggi:
- Il mittente firma i dati con la sua chiave privata.
- I dati mittente crittografati con destinatari chiave pubblica
- Il ricevitore decrittografa i dati con la sua chiave privata.
- Il ricevitore verifica la firma mittenti con la chiave pubblica mittenti .
Catena di certificati
Un certificato è un «documento digitale» che verifica la proprietà della chiave pubblica, il certificato è firmato allo stesso modo di altri dati nella crittografia a chiave pubblica. E i certificati possono accedere con una chiave privata che appartiene a un altro certificato firmato da un terzo certificato, questo è chiamato catena di certificati
Facciamo un esempio, l'emittente del certificato invia un certificato a un webhost. Il certificato che appartiene all'emittente di certificati è firmato da una chiave privata dell'autorità di certificazione . I seguenti passaggi saranno completati.
- L' autorità di certificazione crea una coppia di chiavi pubbliche con certificato di appartenenza. (Root-certificato)
- L' autorità di certificazione firma il proprio certificato con la sua chiave privata. (Self-signed)
- L'emittente del certificato crea una coppia di chiavi pubbliche con certificato di appartenenza.
- L' autorità di certificazione firma il certificato certificati emittenti con la sua chiave privata.
- Il webhost crea una coppia di chiavi pubbliche con certificato di appartenenza.
- Il certificato emittente firma webhosts certificato con la sua chiave privata.
Questa è chiamata catena di certificati , se il certificato dell'autorità di certificazione è un certificato attendibile, allora il certificato del webhost è attendibile. Questa catena può essere estesa all'infinito.
Sicurezza del livello di trasporto
- If there is a intercepting proxy between the web server and the client, mostly the proxy uses its own signed certificates which the client may or may not trust. Then why don't proxy just take the certificate from server and forward it to client so the client will trust it. Also if the private key is only held by the server, then how come an intermediary give its own certificate and decrypt the message?
Poiché esiste una chiave pubblica che appartiene al certificato inviato dal server , il client crittograferà i dati utilizzando la chiave pubblica del server , e middle-man non può decifrare i dati inviati dal client poiché il middle-man non ha la chiave privata del server .
- The signature hash generated by the private key can be decrypted with a public key. Can't someone decrypt that other then the client and can see the signature?
La firma non è crittografata, quindi non puoi decrittografarla. Ma puoi verificarlo utilizzando la chiave pubblica del mittente e chiunque abbia la chiave pubblica per il mittente può verificare la firma.
- Does the client already has the public key with which it starts the encrypted message or do it first ask the server?
Normalmente la chiave pubblica e il certificato vengono scambiati sotto l'handshake della sessione TLS. Ma è possibile pre generare un certificato e fornire al server quel certificato prima dell'handshake TLS. Ad esempio è usato nel server OpenSSH.