Infomaniak, vous savez, les charmants Suisses qui ont (a priori) repris le karma du vendeur de DNS à Gandi (époque Chemla), ils ont aussi une offre mail construite, pas juste un Roundcube de politesse.
Ils viennent d’annoncer une évolution de leur offre pour plus de sécurité : il y a maintenant un petit bouton cadenas dans l’interface du webmail.
Toutes les démarches pour améliorer la sécurité et la confidentialité sont les bienvenues.
Ma légitimité sur l’analyse
Disclaimer, j’ai l’expertise en sécurité d’un lecteur de Wikipedia, de RFC et de la presse people qui rapportent les plus beaux CVE. Jamais je n’assurerai que quoi que ce soit est à l’épreuve des balles. C’est un métier et clairement pas le mien. Par contre, si je vois un trou dans la coque, je peux affirmer qu’il y est.
GPG
Donc, Infomaniak utilise GPG, standard de fait (et une des plus belles déceptions d’Internet).
Techniquement, GPG utilise les mêmes algorithmes de clefs asymétriques que TLS ou SSH. Ça part sur de bonnes bases.
Les distributions Linux l’utilisent pour signer leurs paquets, git permet aussi de la faire, bref, c’est dans l’écosystème libre depuis longtemps.
SAUF QUE.
Le chiffrage asymétrique ne sait comment exposer la clef publique des utilisateurs en garantissant qu’il n’est pas un usurpateur.
SSH utilise par défaut le naïf Trust on first use, mais peut utiliser des clefs signées par une autorité de certification.
GPG a fait le choix utopiste (niais ?) de ne rien centraliser (bon choix), mais d’utiliser une chaine de confiance. Un utilisateur peut signer la clef d’autres utilisateurs qui pourront faire de même et ainsi former une toile d’araignée de confiance. Comment savoir que la clef que l’on signe n’est pas une fourberie ? Comment savoir qu’une personne qui a déjà signé est digne de confiance ?
Bref, le “web of trust” est une fausse bonne idée (comme CRAM-MD5 par exemple)
Pour que GPG fonctionne, il faut pouvoir prouver que la clef appartient bien à la bonne personne.
Pour les paquets, c’est tout simple : le trousseau des clefs légitimes est disponibles quelque part en TLS. La confiance est déléguée au DNS et à l’autorité qui a signé le certificat (comme Let’s Encrypt).
Pour des utilisateurs lambdas, c’est un poil plus compliqué, Keybase propose de légitimer une clef en prouvant que l’on est bien possesseur de différents services (de bonnes réputations) sur Internet (un site web, Github, Twitter, Hackernews, Reddit…). Petit souci, c’est un freeware racheté par Zoom (pour rafistoler sa réputation de passoire) et seulement 400k utilisateurs l’utilisent.
Il existe Web Key Directory une solution à base de .well-known
sur un serveur web.
Il n’a pas sa page Wikipedia, ce qui est une faute de gout.
Il faut que je l’essaye avant de le dauber.
De toute façon, le crime originel de GPG pour les mails est qu’il ne chiffre que le corps du mail. Le reste est en clair, comme l’expéditeur, le destinataire, par où il est passé. Sans ça, pas moyen d’acheminer le mail. Pour une utilisation crédible, il faut utiliser des comptes mails avec des pseudos, des SMTP les plus banaux possibles et des titres cryptiques, et échanger correctement les clefs publiques. Bon courage aux lanceurs d’alerte non techniques.
S/MIME
Il existe une autre norme, S/MIME qui mise tout sur TLS. Peut-être qu’un jour Let’s Encrypt proposera de signer des clefs pour S/MIME qui est souvent implémenté dans les clients mails.
S/MIME ne va pas pouvoir faire mieux que GPG, et ne chiffrera que le corps du mail.
Webmail
Nouveau drame.
Les mails sont souvent utilisés en webmail. Comment fournir et stocker sa clef privée ? Techniquement, javascript sait lire un fichier local, gérer du chiffrage et il existe Openpgpjs (soutenu par l’Union Européenne).
Mais, le site, qui héberge ce code Javascript peut être un fourbe (ou compromis), et on va lui confier sa clef privée.
Clef que l’on transporte comment ? Sur une clef USB, dans ce cas, autant utiliser Tails (si la machine peut booter sur une clef).
Infomaniak
Implémentation par Infomaniak :
- La clef est chez l’hébergeur (stocké de manière sécurisée) mais accessible par eux.
- Si on écrit un mail à un client Infomaniak, la clef publique est directement utilisée (avec confiance).
- Pour écrire à un utilisateur externe, il faut se démerder pour lui faire passer un mot de passe.
- La recherche ne fonctionne plus que sur les titres (comme vu plus haut).
J’ai de gros doutes sur la crédibilité de ce petit cadenas bleu en bas de la page.
Et au-delà
Le mail est à la fois indispensable (car universel), et maudit. La confidentialité intégrale est techniquement impossible. Plus de sécurité, comme la signature des mails (par le serveur avec DKIM, par l’utilisateur avec GPG ou S/MIME), ou le TLS sur tout le chemin sont possibles.
La confiance dans l’hébergeur est incontournable.
Il y a deux points bloquants pour atteindre le meilleur : les applications mails (dont les webmails) qui ne gère pas forcément toutes les fonctionnalités possibles et l’ergonomie pour les utilisateurs.
Le plus simple est d’utiliser Signal, même si l’authentification de son interlocuteur n’est pas magique :
Il faut fournir un code, via un QRcode par exemple, ou en faisant une vision pour vérifier qu’il a la bonne tête.
Prenez soin de vous, amis paranos.