Cosa fa effettivamente "revocare" una chiave?

13

Attualmente sto crittografando alcune informazioni personali usando gpg ( gpgdir in realtà). Ho una copia della mia chiave privata stampata su un foglio di carta sotto forma di una matrice di dati per timore di perdere la copia digitale della mia chiave privata.

Tuttavia, leggendo le best practice sulla crittografia, mi sono imbattuto spesso nella nozione di "revoca" della mia chiave. In gpg , posso generare una chiave di revoca utilizzando gpg --gen-revoke KEY , che può essere successivamente utilizzata per "revocare" la mia chiave.

Ma cosa significa in realtà? E come è utile? Ho trovato una pletora di informazioni online su come per revocare la mia chiave e generare chiavi di revoca, ma nessuna su ciò che effettivamente accade quando "revoco" la mia chiave.

Questa funzionalità è utile se sono l'unico utente previsto dei dati crittografati?

    
posta quant 01.01.2016 - 13:36
fonte

2 risposte

7

Pensa di revocare una chiave come commento aggiunto al file chiave. Questo commento, se presente, dirà ad altri utenti della tua chiave (qualcuno che ti manda email gpg crittografate per esempio) che la chiave è stata revocata e che non dovrebbero usarla!

Revocare una chiave è utile solo quando lo si invia sui server delle chiavi, per far sapere agli altri che è stato revocato.

    
risposta data 01.01.2016 - 13:43
fonte
3

Gnupg è open source (sì!) e quindi si può cercare cosa succede. Quando si crea un certificato di revoca per una chiave, via 'gpg --gen-revoke name "

passa internamente attraverso le seguenti funzioni / passaggi chiave

  1. main() in gpg.c (lo strumento della riga di comando gpg) viene chiamato, quindi
  2. Parametri
  3. analizzati e quindi gen_revoce( const char *uname) in revoce.c è chiamato,
  4. all'interno quindi recupera la chiave segreta e pubblica per uname
  5. quindi chiama make_keysig_packet in sign.c come questo
        rc = make_keysig_packet( &sig, pk, NULL, NULL, sk, 0x20, 0,
                                  opt.force_v4_certs?4:0, 0, 0,
                                  revocation_reason_build_cb, reason );
    
    con la coppia di chiavi (pubblico pk e segreto sk ) e fornisce inoltre un functionpointer to revocation_reason_build_cb e una stringa con la revoca reason ).
  6. internally make_keysig_packet quindi utilizza un hash_algo per creare un messaggio digest md, che viene infine fornito a complete_sig( sig, sk, md ); che richiama internamente do_sign e utilizza la crittografia asimmetrica su md .
  7. viene creato il certificato di revoca creato (che è una specie di tipo firmato con il messaggio chiave privata / segreta).

Quindi, in questo certificato fornito a un server delle chiavi, questo (come @WayToDoor è stato formulato) consentirà il commento alla chiave sul server.

Solo la persona in possesso della chiave privata segreta può firmare messsages da verificare con la chiave pubblica e quindi, una revoca è un "invio di un messaggio con chiave privata firmata, hash del messaggio generato e crittografato in modo assimetrico" .

La mia opinione sulla cosa ulteriore è che una volta revocata, la coppia di chiavi viene bruciata (inutilmente senza senso).

Quindi sarebbe stato intelligente aver usato una sottochiave per una chiave di crittografia master più sicura (con air gap), consentendo la riemissione di una nuova sottochiave funzionante per sostituire la chiave revocata, senza la necessità di verificare la chiave pubblica del canale sicuro la nuova sottochiave-keypair.

    
risposta data 22.01.2016 - 11:55
fonte

Leggi altre domande sui tag