it-swarm.dev

Come funziona il processo di verifica della firma digitale?

Non riesco a capire come viene verificata la firma digitale. So che la firma digitale verrà allegata al messaggio e inviata dal mittente al destinatario. quindi il destinatario utilizza la chiave pubblica utilizzata per verificarla. Ecco le mie domande:

  • da dove viene questa chiave pubblica?
  • e come viene distribuito al ricevitore?
  • come viene identificata la chiave pubblica per la firma digitale specifica?
  • e qual è il ruolo dell'autorità di certificazione in questo processo?
58
n92

OK, le risposte finora sono fondamentalmente sulla buona strada, ma cercherò di rispondere alle tue domande appena arrivate:

* where did this public key come from?

Una chiave pubblica fa parte di una coppia di chiavi utilizzata nella crittografia asimmetrica. Esistono molti algoritmi di crittografia, ma si riduce a una chiave pubblica e una chiave privata che sono matematicamente collegate. Possono essere usati in questo modo:

Crittografa (chiave pubblica, dati originali) -> dati crittografati

Decifrare (chiave privata, dati crittografati) -> dati originali

La natura della relazione matematica tra chiave privata e pubblica è correlata all'algoritmo crittografico e diventa rapidamente un buon argomento per Math Overflow. :)

La parte fondamentale è che la loro è una coppia di chiavi che sono state generate insieme.

Successivamente, per gestire una firma digitale, il mittente invia:

  • i dati originali, i dati crittografati, la chiave pubblica e le informazioni su come verificare la firma (ad esempio, quale algoritmo viene utilizzato)

Il verificatore esegue l'operazione Decrypt sopra e confronta il suo output con i dati originali. Se i due sono uguali, sa che il messaggio non è stato manomesso, perché solo il mittente ha la chiave privata e non esiste un modo ragionevole per determinare la chiave privata dalla chiave pubblica.

prendendolo un po 'fuori servizio ...

* and what is the role of the certification authority in this process?

Chiunque può creare una coppia di chiavi privata/pubblica. È un compito abbastanza semplice, dati i toolkit di oggi. Quindi, darti la mia chiave pubblica, insieme ai dati crittografati e alla firma descritti, è altrettanto affidabile quanto darti un biglietto da visita che avevo stampato su Staples per $ 50. Per avere davvero fiducia in quello che dico di essere, e quindi sono degno di fiducia, hai bisogno che qualcuno firmi sulla mia identità (come controllare la patente di guida).

Questo è il lavoro dell'autorità di certificazione (abbreviato in CA). L'autorità di certificazione dispone della propria coppia di chiavi e utilizza la propria chiave privata per firmare un certificato digitale per il detentore della chiave. Il certificato include chiave pubblica, nonché un mucchio di informazioni sulla persona o cosa che detiene questa chiave privata. Questo è come se il mio governo mi rendesse un id di bell'aspetto con una foto che non può essere facilmente falsificata senza attrezzature speciali: puoi credere alle mie informazioni perché ti fidi del governo ... no perché ti fidi di me.

Di solito quando un sistema verifica una firma, verifica non solo che i dati crittografati corrispondano ai dati originali, ma anche che un certificato che garantisca l'identità di anche il detentore della chiave pubblica è correttamente firmato da una fonte attendibile. Di solito i sistemi CA sono organizzati in catene di CA che provengono da una radice. Nel tuo browser è possibile trovare una raccolta delle CA principali più importanti (autofirmate, ovvero firmate con le proprie chiavi private).

Per sistemi altamente sicuri, è possibile eseguire controlli aggiuntivi fino alle informazioni sullo stato minuto. Tutto dipende da quanto sia importante essere assolutamente sicuri dello stato del mittente.

* and how is it (the public key) distributed to the receiver?

Doppio controllo qui: intendi il destinatario del certificato o il detentore della chiave?

Il mittente (portachiavi) può ottenere una coppia di chiavi e un certificato in vari modi. Il modo più semplice consiste nel crearli localmente e quindi richiedere alla CA un certificato, inviando i dati della chiave pubblica. In altri casi, le chiavi possono essere create centralmente e distribuite da canali sicuri ai portatori di chiavi.

Nella maggior parte dei casi di firma, la coppia di chiavi viene creata dal titolare della chiave, poiché limita il potenziale di esposizione della chiave privata.

Quando una firma viene creata e inviata a un destinatario, è tipico che anche la chiave pubblica sia allegata al messaggio (ad esempio, uno standard per questo è XMLDSIG dove un campo opzionale nell'elemento è un certificato digitale, che include il chiave pubblica).

Nei casi in cui la larghezza di banda è un problema, le chiavi pubbliche possono essere conservate in un repository centrale, come un database dei dipendenti, o spesso un Active Directory o un altro server LDAP. Quindi la firma può fare riferimento all'identità del mittente e il processo di verifica può includere una richiesta al repository per recuperare la chiave pubblica.

* how the public key is identified for the specific digital signature?

Di solito attraverso un certificato digitale.

Quando il mittente va a creare una firma digitale, in genere ha regole associate a quali coppie di chiavi può utilizzare per quali scopi. Nello standard di certificato X509, i certificati identificano un campo Utilizzo chiave che specifica scopi specifici per la coppia di chiavi descritta dal certificato. Uno di questi usi sembra essere la firma digitale e molti sistemi software non ti consentono di creare una firma senza tale impostazione nel certificato.

La CA determina effettivamente queste impostazioni prima di firmare il certificato. In molte politiche di sicurezza, alcune impostazioni di utilizzo delle chiavi non possono essere concesse senza specifici processi di autenticazione, quindi la responsabilità di capire ciò spetta alla CA e ai responsabili (tipicamente RA, autorità di registrazione).

Se, per qualche motivo, disponi di un sistema che non utilizza certificati digitali, potrebbero esserci altri modi per determinare quale coppia di chiavi. Alla fine si tratta delle politiche di sicurezza in atto e di ciò che è ritenuto appropriato per la determinata attività che ha richiesto la firma.

37
bethlakshmi

Il problema a cui si fa riferimento (come si distribuiscono le chiavi pubbliche?) È esattamente ciò che le infrastrutture di chiave pubblica sono destinate a risolvere e la PKI è essenzialmente un gruppo di autorità di certificazione.

In una semplice configurazione, avremmo una directory centrale delle chiavi pubbliche di tutti; immaginalo come una grande lastra di marmo nel mezzo di un parco pubblico, con le chiavi pubbliche incise su di esso. Chiunque può vederlo ed essere sicuro che sia "la cosa vera" perché non puoi semplicemente dipingere su qualcosa che è stato inciso.

Una parte pubblica non è ben collegata a Internet in generale e i computer non possono "vedere" che alcune informazioni sono incise e quindi "garantite corrette". Inoltre, potrebbero esserci miliardi di portachiavi là fuori, che richiederebbero un pezzo di pietra piuttosto grande. Quindi la traduzione nel mondo interamente computerizzato è certificato.

Un certificato è una piccola struttura che contiene, in un formato convenzionale:

  • un identità (il nome del proprietario della chiave);
  • a chiave pubblica (presumibilmente di proprietà di quella persona);
  • a firma digitale calcolata sulle due parti precedenti da Autorità di certificazione.

Il ruolo della CA è, precisamente, rilasciare certificati, cioè firmarli. Puoi considerare un certificato come il pezzo della grande lastra di marmo che contiene una chiave pubblica specifica. Per usare la chiave pubblica, devi prima assicurarti che contenga informazioni corrette; per fare ciò, verifica la firma del certificato, usando la chiave pubblica della CA. Se quella firma è corretta, allora sai che la CA ha fatto firma quel certificato, e poiché la CA firma solo i certificati dopo aver verificato l'identità del proprietario della chiave (attraverso un protocollo fisico una tantum con loro, ad es. il proprietario della chiave ha mostrato un ID), puoi essere "convinto" che la chiave pubblica nel certificato appartiene davvero al proprietario identificato.

Ora potresti dirmi che non abbiamo risolto affatto il problema, ma semplicemente spostato: per verificare il certificato devi conoscere la chiave pubblica della CA; come fai a sapere che chiave? La risposta è nei numeri: una determinata CA può firmare diversi certificati, possibilmente milioni di essi. Quindi potrebbero esserci, per esempio, un centinaio di autorità competenti che rilasciano certificati per tutto il mondo. Sapendo che centinaia di chiavi pubbliche, è possibile verificare potenzialmente qualsiasi certificato. In altri mondi, non abbiamo solo spostato il problema, ma anche concentrato esso: abbiamo trasformato il problema della distribuzione di miliardi di chiavi pubbliche nel problema della distribuzione di un centinaio di essi .

E, ecco! questo è esattamente come viene fatto per il sito Web HTTPS. Durante le fasi iniziali della connessione tra il browser e il server Web, il server invia il suo certificato. Il browser verifica quindi il certificato rispetto all'elenco della chiave pubblica della CA codificata (che è stata inclusa per gentile concessione del browser o del fornitore del sistema operativo). Una volta che il browser ha verificato il certificato, conosce la chiave pubblica del server e la utilizza per stabilire il tunnel confidenziale con il server.

27
Thomas Pornin

Le firme digitali vengono generalmente realizzate in un processo in due passaggi. Il primo passo è utilizzare un algoritmo di hashing sicuro sui dati. Gli algoritmi SHA-2 ne sarebbero un esempio. Il secondo passo è crittografare l'output risultante con la chiave di firma privata.

Pertanto, quando una firma viene verificata dalla chiave pubblica, viene decodificata in un hash corrispondente al messaggio. Tale hash può essere decrittografato utilizzando la chiave pubblica se è stato crittografato con la chiave di firma privata.

Le chiavi pubbliche vengono create dal proprietario della coppia di chiavi. Le autorità di certificazione firmano il certificato della chiave pubblica. I proprietari dei server installano quel certificato firmato. In SSL (a cui presumo ti riferisci), il certificato che include la chiave e la firma dell'autorità di certificazione viene passato dal server a cui sei connesso. Il software verifica che il sito a cui si connette corrisponda ai dati nel certificato e convalida il certificato verificandone la firma con la chiave dell'autorità di certificazione. Le autorità di certificazione usano le loro chiavi per la firma e i server usano le loro chiavi per la crittografia.

12
Jeff Ferland

Sai cos'è una chiave pubblica - privata, giusto?

Vuoi crittografare qualcosa in bob. Quindi avrai bisogno della sua chiave pubblica. Vai a cercarlo su Internet, ma non puoi essere sicuro che la chiave pubblica che hai davvero appartiene a lui.

Quindi adotti un approccio diverso: ottieni la chiave da qualcuno che può assicurarti che una chiave specifica appartiene a bob. La CA fa esattamente questo.

Come lo fa la CA? Semplice. bob si identifica nella CA e invia loro la sua chiave pubblica. In questo modo, la CA ha qualcosa che mette in relazione l '"identità" di bob con questa chiave pubblica. E puoi fidarti che la chiave pubblica che hai effettivamente appartiene a bob.

7
woliveirajr