Aiutami a capire la relazione tra le chiavi pubbliche GPG, le sottochiavi e le date di scadenza

9

Seguendo le best practice ora sono al punto in cui non ho scadenza chiave segreta memorizzata in una posizione di salvataggio e un set di sottochiavi con una data di scadenza memorizzata insieme alla chiave pubblica sul mio computer locale. Tuttavia, quello che voglio fare è impostare una data di scadenza anche sulla chiave pubblica, mantenendo la chiave segreta senza scadenza. Come posso fare questo?

Sarei interessato anche alla relazione esatta tra le sottochiavi e la chiave pubblica. Osservando le chiavi fornite dal server delle chiavi, ho notato che quelle includeranno anche (la parte pubblica) delle sottochiavi. Ciò dovrebbe essere necessario per convalidare i messaggi che ho firmato utilizzando una sottochiave e anche per crittografare i dati nel caso in cui venga trovata una chiave secondaria di crittografia per il destinatario. Ciò che non capisco a questo punto è ciò che accade nel caso in cui la mia sottocampione sia scaduta, ma la chiave pubblica è ancora presente e valida. Gpg ricadrà per utilizzare la chiave pubblica per crittografare e convalidare i dati? Ha ancora senso usare una data di scadenza per la chiave pubblica nel caso in cui tutti i sottochiavi abbiano una data di scadenza impostata?

Inoltre non sono molto sicuro del ruolo esatto della chiave pubblica in caso di esistenza di sottochiavi. La mia ipotesi è che sia usato solo per validare le sottochiavi prima che vengano utilizzate per crittografare / convalidare effettivamente, è corretto?

    
posta Stefan Podkowinski 29.10.2015 - 16:36
fonte

1 risposta

6

La chiave primaria

La chiave primaria di OpenPGP conserva la tua fiducia. Se la chiave viene certificata, tali certificazioni verranno emesse su tuple di chiave primaria e ID utente. Le certificazioni in uscita (su altre chiavi) sono emesse esclusivamente dalla tua chiave primaria. Gli ID utente e le sottochiavi sono tutti accoppiati a una chiave primaria. Tutto sommato, la tua chiave primaria è l'entità che incolla tutto insieme.

Quali funzionalità la tua chiave primaria dipende dall'algoritmo scelto e quali funzionalità sono effettivamente abilitate (puoi cambiarla quando esegui GnuPG nella modalità --expert ). Tutte le chiavi primarie devono avere la capacità di certificazione C , ma può avere capacità di firma S (che deve essere sempre supportata, poiché anche le certificazioni sono firme) e infine la crittografia capacità E (che non è supportato da tutti gli algoritmi che si adattano a una chiave primaria, ad esempio DSA può essere utilizzato solo per certificazioni / firme, non per crittografia).

sottochiavi

What I don't understand at this point is what happens in case my sub-key expired, but the public key is still present and valid. Will gpg fall back to use the public key to encrypt and validate data?

Quale sottochiave viene scelta dipende dall'implementazione, di solito sceglieranno il più recente tasto non in grado di eseguire ciò che desideri. Se aggiungi un'altra sottochiave, questa verrà scelta. Se rimuovi tutte le sottochiavi, verrà utilizzata la chiave primaria, dato che ha i bit di capacità necessari impostati. Se la chiave primaria non supporta la capacità richiesta, la chiave non può essere utilizzata affatto!

In GnuPG, puoi applicare una sottochiave specifica: specificando l'ID della chiave seguito da ! . Ad esempio, se desideri imporre l'utilizzo della sottochiave DEADBEEFDEADBEEF come destinatario, utilizza l'opzione --recipient DEADBEEFDEAEDBEEF! .

Le sottochiavi possono essere arbitrariamente revocate e rigenerate senza perdere la reputazione nella rete di fiducia.

I'm also not really sure about the exact role of the public key in case of the existence of sub-keys. My guess is that it's only used to validate the sub-keys before they are used to actually encrypt/validate, is that correct?

Questo non è necessario, ma considerato best practice. Un sacco di persone mantiene anche la chiave primaria (segreta) offline.

Date di scadenza

Does it still make sense to use an expiration date for the public key in case all sub-keys have an expiration date set?

Le date di scadenza sono una cosa ragionevole da utilizzare nelle sottochiavi, in quanto richiedono alla parte mittente di aggiornare la chiave dopo un determinato periodo di tempo. Possono essere cambiati arbitrariamente, però. Questo è anche il motivo per cui le date di scadenza sulle chiavi primarie non sono una cosa ragionevole da usare; se l'attaccante si impossessa della chiave primaria, può semplicemente cambiarla o addirittura rimuoverla completamente, anche se la tua chiave è già scaduta! Vedi " La scadenza della chiave OpenPGP viene aggiunta alla sicurezza? " per un approfondimento discussione.

Prendi invece un certificato di revoca pre-generato a portata di mano (e nel tuo backup).

However, what I want to do is to set an expiration date on the public key as well, while keeping the secret key non-expiring. How can I do this?

Penso che tu stia confondendo pubblico e primario qui. La data di scadenza è sempre impostata su una firma pubblica "speciale" di configurazione sulla chiave pubblica primaria, ma emessa dalla chiave segreta principale (in modo che possa essere verificata tramite la chiave primaria pubblica). Se vuoi davvero specificare una data di scadenza sulla tua chiave primaria, puoi comunque cambiarla in qualsiasi momento, la data di scadenza precedente viene semplicemente sovrascritta.

Tuttavia, come discusso sopra, una data di scadenza sulle chiavi primarie fornisce comunque una falsa sicurezza.

    
risposta data 29.10.2015 - 23:39
fonte

Leggi altre domande sui tag