Ho impostato le mie chiavi OpenPGP con sottochiavi, seguendo le istruzioni generali contenute in " Creazione coppia di chiavi GPG perfetta . " L'aspetto generale è che si crea una "master keypair" che è non memorizzata sul laptop, ma su un dispositivo air-gapped sicuro. Nel mio caso, è una chiave USB crittografata. Ho anche una versione di paperkey e stampo le chiavi di revoca per la chiave principale, nel caso in cui la versione digitale venga persa o corrotta. Il mio laptop ha solo sottochiavi, non la chiave di firma principale. Di conseguenza, quando si esegue gpg -K
(per visualizzare le chiavi segrete), si ottiene:
/Users/myusername/.gnupg/secring.gpg
-------------------------------
sec# 4096R/0x123412341234FFFF 2014-04-18
uid My Name <[email protected]>
ssb 4096R/0x123412341234AAAA 2014-04-18
ssb 4096R/0x123412341234BBBB 2014-09-24
ssb 4096R/0x123412341234CCCC 2014-09-30
Il sec#
indica che la chiave di firma principale non è memorizzata sul computer. Se carico la mia chiave USB crittografata e poi eseguo gpg gpg --home=/path/to/secure/gpg/keys/.gnupg -K
, mostrerebbe:
/path/to/secure/gpg/keys/.gnupg/secring.gpg
-------------------------------
sec 4096R/0x123412341234FFFF 2014-04-18
uid My Name <[email protected]>
ssb 4096R/0x123412341234AAAA 2014-04-18
ssb 4096R/0x123412341234BBBB 2014-09-24
ssb 4096R/0x123412341234CCCC 2014-09-30
Come vedi, mostra sec
, non sec#
.
In questa configurazione, se il tuo laptop è compromesso, puoi revocare le sottochiavi in modo sicuro senza perdendo qualsiasi connessione con la rete di fiducia - perché sei connesso alla rete della fiducia attraverso la tua chiave di firma principale .
Diciamo che il mio portatile è compromesso, contro cui si suppone che questo modello sia protetto. La migliore pratica, penso, sarebbe:
- Vai a prendere la mia chiavetta USB sicura e carica GnuPG dal portachiavi sicuro
- Usando la coppia di chiavi master, vorrei revocare le mie sottochiavi [perché sono ora compromesse]
- Ora, emetterei nuovi sottochiavi per la firma e la crittografia, e invio tutte queste modifiche ai server di chiavi pubblici.
La mia domanda è: è questa la cosa giusta da fare? Cosa succede qui esattamente, quando lo fai? Presumo che generi una nuova chiave privata / una coppia di chiavi pubbliche e invalida quella vecchia. In questo modo, se un avversario ha le mie vecchie chiavi private, in teoria possono accedere alle vecchie comunicazioni crittografate con la mia vecchia chiave pubblica. Ma non potevano firmare nulla come me, perché quella chiave privata sarebbe stata revocata. Inoltre, quando qualcuno mi controlla tramite un server delle chiavi, entrambe le vecchie e le nuove chiavi pubbliche saranno visibili, ma la vecchia chiave pubblica verrà mostrata come revocata e la nuova avrà una data più recente, quindi un utente GnuPG sta cercando di inviarmi un messaggio crittografato o un file crittografato lo crittograferà automaticamente alla chiave pubblica nuova (non revocata). E l'avversario non sarà in grado di leggere questo messaggio.
Ho ragione in tutto questo? Qualcuno può chiarire?