Per risolvere il problema della sicurezza nell’invio di dati sensibili da parte dei clienti all’Hotel Panorama, ho pensato che la soluzione migliore potesse essere quella di dotare l’albergo di una sua chiave GPG.
In occasione del PyCon, con l’abergo prenotato da orde di geek, la crittografia è stata utilizzata ampiamente e senza problemi, ma con la maggior parte dei clienti meno tecnologici la cosa era più problematica.

All’inizio avevo scritto una guida per l’uso di FireGPG, un estensione per Firefox, ma era comunque una cosa complicata: richiedeva un sacco di azioni da parte dell’utente e comunque dopo un po’ l’estensione è stata abbandonata, quindi ho dovuto cercare un’altra soluzione.

A questo punto ho trovato l’ottimo plugin per WordPress Subrosa, che consente la cifratura direttamente nel form di invio dell’email tramite javascript, l’utente deve solo premere un pulsante.
Per far funzionare il plugin, oltre ad impostarne i parametri ed inserire la chiave pubblica, bisogna modificare il codice di un qualsiasi form mail di wordpress e sostituire la chiamata alla funzione php mail() con una chiamata alla funzione ctsr_mail(); l’unico problema è che così diventano cifranti tutti i form mail presenti sul sito, mentre a me interessava che ce ne fosse uno solo.

La soluzione è stata quella di installare un plugin per mail aggiuntivo, accanto a quello “ufficiale”, ed applicare la modifica solo a quello.
La scelta del plugin da modificare è ricaduta su Zero Conf Mail, che ho riconfezionato col nome Encrypted Zero Conf Mail per evitare che un aggiornamento spensierato potesse spianarmi le modifiche.
Utilizzando lo shortcode di questo plugin invece che di quello principale, si può inserire un form mail attrezzato per la cifratura in qualsiasi pagina del sito.

Ulteriori modifiche che ho apportato sono state semplicemente alcuni accorgimenti tra CSS e javascript per nascondere nel form il pulsante invia finchè non è stato premuto il pulsante cifra, per evitare che un utente particolarmente distratto potesse inviare mail non cifrate pensando che partano comunque cifrate dal form.
Il risultato è qui.