Semplicissimo ma troppo poco conosciuto, il sistema di Web Key Directory permette di aumentare la riservatezza delle comunicazioni email pubblicando la propria chiave PGP pubblica su un banalissimo server web.
Una WDK permette infatti al mittente di una mail di trovare facilmente la chiave pubblica del destinatario cui vuole scrivere in modo da cifrare la mail.
Alcuni MUA (programmi di posta elettronica) permettono di scoprire una chiave disponibile via WKD cliccando con il tasto destro su un indirizzo email o su una firma crittografica.
Se non stai ancora usando GnuPG per cifrare la tua corrispondenza, puoi trovare una guida molto semplice su come iniziare.
Tuttavia l'obiettivo di questa guida è permettere ai tuoi contatti di cifrare le comunicazioni verso di te (e le altre caselle email del tuo dominio), senza grandi sbattimenti (purché utilizzi programmi decenti).
Ad esempio, chi ti scrive da Proton Mail cifrerà automaticamente le mail verso di te, mentre chi usa Thunderbird potrà trovare la vostra chiave pubblica cliccando con il tasto destro su una mail e selezionando l'opzione "Individua la chiave PGP" dal menu a comparsa.
Si tratta dell'uovo di Colombo: dato il dominio di un indirizzo email, viene richiesta la chiave pubblica di quella casella via HTTPS, su una URI convenzionale costruita a partire da quel dominio.
Secondo il protocollo, la chiave di interesse viene anzitutto
ricercata nel sottominio openpgpkey del dominio
cui è associato l'indirizzo email.
Ad esempio, la chiave necessaria a cifrare le comunicazioni
verso pippo@example.org verrà ricercata
sul server https://openpgpkey.example.org.
La procedura per creare il record sul DNS e il virtual host corrispondente dipende molto dalla vostra situazione, che vi affidiate ad uno shared hosting, affittiate un VPS o disponiate di un piccolo server domestico accessibile tramite fibra.
In tutti i casi, una volta creato il sottodominio è necessario caricare sul web server le chiavi pubbliche secondo la convenzione prevista dal protocollo.
Le istruzioni che seguono sono state testate su una Debian GNU/Linux ma dovrebbero funzionare su qualsiasi sistema operativo che disponga dei programmi necessari, anche su spyware come Windows (with WSL) o MacOS.
Anzitutto installiamo sshfs (gpg dovreste già averlo):
sudo apt-get install sshfs
Useremo sshfs perché è più semplice da usare e documentare in una riga di comando, ma adattare queste istruzioni ad una GUI come FileZilla non dovrebbe essere troppo complesso: basterà eseguire i comandi localmente e poi caricare tutto sul server.
Prepariamo l'ambiente di lavoro:
DOMAIN=your-domain.com cd $(mktemp -d) TARGET=$PWD GPGP="gpg --no-default-keyring --keyring $TARGET/publish.gpg"
Ovviamente al posto di your-domain.com dovrai
mettere il dominio delle caselle email.
Creiamo un portachiavi GPG in cui importare le chiavi pubbliche che vogliamo pubblicare. Questo passaggio non è strettamente necessario, ma può essere utile quando nel portachiavi abbiamo anche chiavi scadute che non possiamo rimuovere per poter decifrare vecchi messaggi.
$GPGP --fingerprint gpg --export "$DOMAIN" | $GPGP --import
A questo punto, publish.gpg contiene tutte le chiavi associate
al dominio in $DOMAIN. È dunque una buona
idea verificare la presenza (e rimuovere) le chiavi scadute con
i comandi $GPGP --list-key e gpg --delete-key ID_CHIAVE.
Creiamo quindi la struttura di directory che andremo a pubblicare sul sito:
mkdir openpgpkey $GPGP --list-options show-only-fpr-mbox -k | gpg-wks-client -v --install-key
Per pubblicarla dobbiamo semplicemente caricarla sulla cartella
.well-known/, all'interno della cartella associata
al dominio openpgpkey.your-domain.com, dopo aver
configurato propriamente il web server.
In questo caso, ordiniamo ad Apache di non rispondere in chiaro sulla porta 80 e di non mostrare l'elenco dei file sul server.
mkdir $TARGET/server
sshfs -o ServerAliveInterval=15 username@ftpserver:/your/openpgpkey/website/folder $TARGET/server
cd $TARGET/server
cat << EOF > .htaccess
RewriteCond "%{SERVER_PORT}" "^80$"
RewriteRule ^ - [R=404,L]
Options -Indexes
EOF
mkdir .well-known
cp -fr ../openpgpkey .well-known
Fatto! Da questo momento chi vi scrive potrà facilmente trovare la vostra chiave pubblica e cifrare ciò che vi vuole comunicare.
Se non potete aggiungere sottodomini ma il vostro
sito risponde anche a https://example.org
(ovvero il dominio della email, senza il consueto www),
potete copiare i file creati in una diversa directory del server.
Invece di copiare l'intera cartella openpgpkey, copiamo solo
la sottocartella hu/ in un percorso convenzionale.
mkdir $TARGET/server
sshfs -o ServerAliveInterval=15 username@ftpserver:/your/root/website/folder $TARGET/server
cd $TARGET/server
mkdir -p .well-known/openpgpkey
cat << EOF > .well-known/openpgpkey/.htaccess
RewriteCond "%{SERVER_PORT}" "^80$"
RewriteRule ^ - [R=404,L]
Options -Indexes
EOF
cp -fr ../openpgpkey/$DOMAIN/hu .well-known/openpgpkey
Naturalmente in questo caso dovremo verificare che non siano
già configurati dei redirect per la cartella .well-known
che impediscano al server di servire le nostre chiavi.
Per verificare che tutto funzioni correttamente è sufficiente scegliere uno degli indirizzi email appena esportati ed invocare il seguente comando per cercarne la chiave pubblica:
gpg --homedir "$(mktemp -d)" --verbose --locate-keys pippo@example.org
Cifrare la corrispondenza verso qualcuno è un gesto di cortesia che dovrebbe diventare consueto.
Se cifriamo le mail che inviamo ai nostri corrispondenti non proteggiamo solo la nostra riservatezza, ma anche quella dei destinatari.
Inoltre rendiamo molto più difficile ogni forma di sorveglianza passiva, in cui terze parti raccolgono le mail in transito per profilare mittenti e destinatari a fini commerciali e politici.
Inoltre, se cifrare la corrispondenza diventasse finalmente una norma sociale condivisa, il costo di inviare una mail di SPAM aumenterebbe automaticamente, mentre verrebbe facilitato il lavoro dei filtri antispam, che potrebbero semplicemente scartare tutte le mail non cifrate.
Dal punto di vista professionale, pubblicare una chiave PGP dimostra un minimo di competenza informatica (moltissimi ciarlatani non sanno nemmeno cosa siano PGP e WKD) e rispetto nei confronti dei vostri potenziali clienti.
Se non disponete di un dominio e usate una mail fornita da altri, potete comunque caricare la vostra chiave pubblica su un keyserver o fornirla ai vostri contatti di persona (il metodo in assoluto più sicuro) o tramite un altro canale che ritenete sufficientemente sicuro.
Personalmente apprezzo molto quando qualcuno usa questa accortezza nei miei confronti e cerco sempre di usarla nei confronti dei miei interlocutori.
Se volete scrivermi, trovate la mia chiave pubblica via WKD.