utilizzo del certificato per firma e crittografia

2

Ho una domanda per il funzionamento base con certificati in e-mail e pdf. Ho familiarità con la crittografia a chiave pubblica.

Lo scenario:

Nel mio scenario voglio inviare una email confidenziale a una persona A da un server B.

Comprensione (nessun certificato):

Keypair 1: chiave privata AA, chiave pubblica AB

Keypair 2: chiave privata BA, chiave pubblica BB

Keypair 1 è generato sul server. La chiave privata AA rimane sul server, la chiave pubblica AB viene trasferita alla Persona A. Keypair 2 è generato sul client. La chiave privata BA rimane, la chiave pubblica BB viene trasferita al server.

Ora firmo il messaggio con la chiave privata AA e lo crittografo con la chiave pubblica BB sul server B. La persona A verifica la firma con la chiave pubblica AB e la decrittografa con la chiave privata BA.

Domanda:

Voglio tradurre questo scenario dell'uso dei certificati. Ciò che mi confonde è chi detiene il certificato su ciò che è contenuto in questi certificati e tipi. Qualsiasi aiuto è apprezzato!

Grazie in anticipo. Se qualcosa non è chiaro per favore fammi sapere.

EDIT:

Grazie a tutti per le belle risposte. Non posso decidere quale dovrei dare il "pollice in su". Adoro l'esempio delle guerre stellari:).

    
posta talentfrei 07.03.2013 - 03:42
fonte

4 risposte

5

Un certificato è semplicemente una chiave pubblica che è stata firmata da una terza parte e fa parte di una coppia di chiavi come descritto. (o nel caso di certificati autofirmati è firmato dalla prima parte). Vale anche la pena notare che il mittente ha bisogno solo di una coppia di chiavi se è necessaria l'autenticazione (cioè il destinatario sa che il messaggio proviene dal mittente) oltre alla riservatezza.

Il mittente avrebbe crittografato il messaggio con una chiave segreta e quindi avrebbe crittografato quella chiave segreta con la chiave pubblica del destinatario. La chiave segreta crittografata e il messaggio crittografato possono quindi essere inviati e solo il destinatario può decodificare il messaggio decodificando la chiave segreta per il messaggio. Se è necessaria la verifica, l'HMAC del messaggio può essere crittografato con la chiave pubblica del mittente e il certificato incluso nel messaggio. Se il certificato è firmato da una terza parte fidata, il destinatario sa che la chiave pubblica è valida e può usarla per verificare l'HMAC, verificando in tal modo che il mittente abbia la chiave privata corrispondente al certificato.

    
risposta data 07.03.2013 - 05:12
fonte
2

Il destinatario del messaggio crittografato deve essere in grado di verificare la firma del messaggio applicata dal mittente del messaggio. La firma del messaggio è calcolata come un hash del contenuto del messaggio, crittografato con la chiave PRIVATA del mittente. Ciò che il destinatario deve fare per verificare la firma è decifrare il messaggio (usando la chiave privata del destinatario), calcolare l'hash del contenuto del messaggio e quindi decodificare il valore della firma fornito con la chiave PUBLIC del mittente. Se la versione decifrata della firma corrisponde all'hash calcolato localmente del messaggio, la firma è "valida" e il destinatario può essere sicuro che il messaggio non sia stato alterato dal momento in cui è stato crittografato.

Ecco dove i certificati entrano in questo scenario: il destinatario doveva usare la chiave PUBLIC del mittente per verificare la firma. Per fare ciò, il destinatario deve avere il certificato del mittente, firmato da un'autorità di certificazione attendibile (ad es. Verisign, GoDaddy, ecc.).

Quindi l'unico assoluto in questo scenario è che il destinatario del messaggio deve avere il certificato del mittente e fidarsi del firmatario di quel certificato.

    
risposta data 07.03.2013 - 10:02
fonte
2

I certificati sono utili perché anche se hai una coppia di chiavi, ciò non significa che puoi semplicemente inviare a qualcuno la tua chiave pubblica e il ricevitore saprà che tu controlli la chiave privata corrispondente. Ci deve essere un modo per il ricevitore di associare quella chiave con la tua identità (il tuo "sé"). In caso contrario, un utente malintenzionato potrebbe semplicemente inviare al server la sua chiave pubblica, sostenendo che è tuo e il messaggio verrà inviato a lui (o, al contrario, potresti ricevere una chiave pubblica da un server falso e ricevere un messaggio correttamente crittografato , firmato, ma non viene da chi pensi che sia arrivato).

Un modo per scambiare le chiavi in sicurezza sarebbe di persona, ma è ingombrante e non sempre fattibile. Un'altra opzione è quella di utilizzare una terza parte fidata nel processo - Persona A firmata le chiavi pubbliche della Persona B e della Persona C e associare ciascuna chiave con l'ID del titolare, quindi finché B ha un copia della chiave pubblica di A può verificare che la chiave di C corrisponda all'ID di C (anche se quella chiave / certificato è stata inviata attraverso un canale non sicuro). Pertanto, B può inviare messaggi confidenziali a C (e, come indicato nella risposta di AJ Henderson , l'opposto è anche necessario se B vuole firmare il messaggio - C deve avere la chiave pubblica di A per verificare l'identità di B).

Quindi, rispondendo alla tua domanda, i certificati hanno un ruolo nel tuo processo nella fase di scambio della chiave pubblica, tutto il resto va come hai descritto. Il contenuto di un certificato è una chiave pubblica associata a un identificatore (che si tratti di un nome di dominio o qualcos'altro che ti identifica in modo univoco e che una terza parte onesta non firmerebbe se non sapesse / si fida di te). E per chi possiede cosa, in genere entrambi possiedono un elenco di terze parti attendibili, utilizzati per la verifica, ma nulla ti impedisce di avere anche un elenco di certificati conosciuti da persone fidate (nel qual caso non importa se un terzo partito li ha firmati).

Aggiornamento: un esempio completo, adattato per adattarsi allo scenario:

Alice (Server A) vuole inviare un messaggio a Bob (Persona B), con l'aiuto della loro conoscenza comune Charles Augustus . Hanno ciascuno una coppia di chiavi, composta da una chiave privata (AA, BA e CA) e una chiave pubblica (AB, BB e CB) e un certificato che associa la loro chiave pubblica ai loro nomi (AC, BC e CC). Charlie ha firmato il proprio certificato (CC $ C) usando la sua chiave privata.

Quando Alice e Charlie si incontrarono di persona, Charlie firmò il certificato di Alice usando la sua chiave privata (AC $ C), dopo aver confermato che Alice controllava la chiave privata corrispondente (AA), che il certificato conteneva il nome di Alice (il nome di dominio del server ) più la chiave pubblica (AB) e che lei non era un impostore. Alice ha anche una copia del certificato di Charlie. Qualche tempo dopo, Bob ha fatto lo stesso (ottenendo BC $ C, usando il suo ID o qualche altra prova di identità, dal momento che le persone non hanno nomi di dominio).

Quando Alice vuole inviare un messaggio a Bob, questo è ciò che accade:

  1. Bob invia il suo certificato (BC $ C) ad Alice;
  2. Alice conferma che il certificato ha il nome di Bob e che è stato firmato da Charlie;
  3. Poiché Alice ha il certificato di Charlie (CC $ C), utilizza la chiave pubblica (CB) in essa contenuta per verificare la firma (realizzata con la chiave privata CA);
    • ora si fida che Bob controlli la chiave privata (BA) che accoppia la chiave pubblica (BB) contenuta nel certificato di Bob.
  4. "Ora firmo il messaggio con la chiave privata AA e lo crittografo con la chiave pubblica BB sul server A. La persona B verifica la firma con la chiave pubblica AB e la decrittografa con la chiave privata BA."
  5. Ora Bob ha il messaggio, ma ha bisogno di essere sicuro che provenga davvero da Alice. BTW Alice ha anche inviato il suo certificato (AC $ C) insieme al messaggio (ecco come Bob ha ottenuto la chiave pubblica AB);
  6. Bob conferma che il certificato ha il nome di Alice e che è stato firmato da Charlie;
  7. Poiché Bob ha il certificato di Charlie (CC $ C), utilizza la chiave pubblica (CB) in esso contenuta per verificare la firma (realizzata con la chiave privata CA);
    • ora si fida che Alice controlli la chiave privata (AA) che accoppia la chiave pubblica (AB) contenuta nel certificato di Alice.
risposta data 07.03.2013 - 07:34
fonte
1

I certificati sono stati creati per essere utilizzati come trasporto per le chiavi pubbliche. Inoltre, possono essere usati per aggiungere fiducia.

TL; DR: il tuo scenario non cambia un po 'con il certificato se non hai bisogno dell'autenticazione.

Per ora, supponiamo che un certificato abbia una chiave pubblica. Sarai quindi in grado di condividerlo pubblicamente con la galassia sostenendo che questa è la chiave pubblica appartenente a Obi-Wan Kenobi. Dato che hai la chiave privata corrispondente sul tuo computer, sarai in grado di decodificare qualsiasi messaggio crittografato con la chiave pubblica dal certificato e firmare il messaggio con la tua chiave privata.

Tuttavia, nessuno può confermare che tu sei chi pretendi di essere, ad esempio, Obi-Wan ("non è vero, è impossibile"). Perché ciò accada, è necessario che il mondo possa autenticare che il tuo certificato appartiene a Obi-Wan Kenobi. Ora supponiamo che la galassia possa fidarsi della Repubblica e l'amministrazione della Repubblica pubblicherà una chiave pubblica e manterrà la propria chiave privata. Sono un'autorità di certificazione principale. Questo certificato pubblico sarà autofirmato e perché la fiducia si verifichi, l'intera galassia deve affidarsi a questo certificato.

Dato che l'intera galassia si fida di un singolo certificato radice, uno è ora in grado di andare nell'ufficio della Repubblica con il proprio ID e la propria chiave pubblica generata. Dopo aver verificato l'identità della persona, diciamo che sei il vero Obi-Wan Kenobi (wow!), L'ufficio creerà quindi il tuo certificato. Questo certificato indicherà la tua identità e incorpora la tua chiave pubblica. Infine, utilizzando le chiavi private della Repubblica, firmeranno il tuo certificato quindi vincoleranno la tua identità alla tua chiave pubblica. Chiunque sia in possesso del certificato e della chiave pubblica della Repubblica sarà in grado di verificare la firma della Repubblica. Supponendo che sia valido e si fidano del certificato radice di Repuplic, ora possono essere sicuri che il certificato che ottengono appartiene a Obi-Wan Kenobi e a nessun altro.

Infine, il tuo certificato contiene la tua chiave pubblica E può essere dimostrato appartenente a Obi-Wan. Pertanto, chiunque cripta le cose con quella particolare chiave pubblica è garantito che può essere letto solo da Obi-Wan Kenobi, l'unico proprietario della chiave privata.

Nota: eventualmente, per il tuo caso con due attori, dovrai ripetere la procedura di registrazione due volte.

    
risposta data 07.03.2013 - 10:57
fonte

Leggi altre domande sui tag