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.