Concetti di crittografia PKI e autenticazione firma digitale [duplicato]

3

Sto cercando di capire in che modo SSL utilizza l'autenticazione PKI e Firma digitale per garantire comunicazioni sicure e verificate. Ho letto varie fonti online e da quello che posso dire il processo di base è:

  1. Un server riceve un certificato da un'autorità di certificazione (CA).    Questo certificato include (almeno) la chiave pubblica del server e una firma digitale.    La firma digitale è un dato "token" crittografato con la chiave privata della CA.
  2. Il server invia dati a un client. Invia anche la Firma digitale con esso.
  3. Il client controlla che questa CA sia attendibile cercandola in un elenco codificato di CA nel sistema locale.
  4. Il Cliente può verificare questa Firma Digitale decifrandola usando la Chiave Pubblica della CA e verificando i dati originali del "token".    Il client ora sa che il server è affidabile, secondo la CA.
  5. Il client invia i dati al server, crittografati dalla chiave pubblica del server e un algoritmo, ad es. RSA.
  6. Il server decrittografa i dati usando la sua chiave privata.

Vorrei sapere se questa comprensione è corretta da un alto livello, e se no, cosa ho sbagliato / perso? O qualsiasi altra fonte dovrei leggere altrove che possa aiutarti.

    
posta petehallw 17.10.2018 - 14:39
fonte

1 risposta

0

Abbiamo una domanda canonica che fornisce una spiegazione molto dettagliata di TLS: Come funziona SSL / TLS funziona?

Risponderò alla tua domanda specifica:

With RSA at least, the sever encrypts the message via the private key and this can only be decrypted with the public key... but as the public key is available to everyone how do we know that someone else hasn’t intercepted it?

Dire che ho un messaggio:

I, Mike Ounsworth will give $10 from account XXXX-YYYY-ZZZZ to petehallw account XXXX-YYYY-ZZZZ.

Voglio firmare questo messaggio in modo che:

  1. Tutti sanno che provengono da me
  2. Nessuno può manometterlo e cambiarlo da $10 a $1000 o cambiare il numero dell'account.

Se si guarda all'interno di un'operazione di segno RSA, sembrerebbe qualcosa tipo ** ATTENZIONE: AVVISO DI SEMPLIFICAZIONE SEMPLICE **. Per prima cosa ho cancellato il massaggio:

SHA2("I, Mike Ounsworth will give $10 from account XXXX-YYYY-ZZZZ to petehallw account XXXX-YYYY-ZZZZ.")
= 521C5EC6F1FEE551A2A5A8967EE183369424DBD26C4F25337EF72C42D01DB7E1

Quindi calcoliamo una firma sul valore hash (hai il modello mentale di crittografia dell'hash SHA256 con la chiave privata, che è ok, ma siamo consapevoli che si tratta di una semplificazione eccessiva).

RSA-sign("521C5EC6F1FEE551A2A5A8967EE183369424DBD26C4F25337EF72C42D01DB7E1", privateKey)
= <binary_signature_blob>

Quindi chiunque abbia la chiave pubblica può verificare con:

  1. Computer il proprio hash SHA256 del massaggio ricevuto.
  2. Utilizza la chiave pubblica per "estrarre" SHA256 dal blob della firma binaria.
  3. Assicurati che i due hash SHA256 corrispondano.

Come affermato sopra, questa è già una semplificazione eccessiva, anche per RSA, che è il codice più semplice da capire. Hai detto che i diversi articoli che hai letto sembrano non essere d'accordo su come funzionano le firme RSA, probabilmente perché la crittografia è complicata e ogni articolo probabilmente sta semplificando i termini dei laici in un modo diverso.

    
risposta data 18.10.2018 - 19:10
fonte