On peut se poser la question: pourquoi quelqu'un qui prétend donner des conseils en cyber-sécurité a-t-il un site web qui n'utilise pas HTTPS ?  Est-ce un charlatan ?

La raison est simple: l'hébergeur de mon site (strato.de) n'accepte que les certificats d’authenticité qu'il vend lui-même à un tel prix, que cela triplerait mon prix d'hébergement.  Il existe bel et bien des certificats gratuits mais mon hébergeur ne les accepte pas.  On comprend, c'est une question commerciale.

Alors, est-ce que je suis inconscient ou négligeant en proposant un site en HTTP clair maintenant que la mode sécuritaire est vers le tout-https ?  La réponse est non, et c'est un exercice utile de voir pourquoi.

D'abord, quelle est la différence entre HTTP et HTTPS ?  HTTP est un protocole qui permet à un navigateur internet (le "client", comme Edge, Firefox, Safari...) de:

  1. recevoir des informations d'un serveur web et de les afficher sur l'écran
  2. éventuellement, d'envoyer des informations de la part de l'utilisateur vers le serveur web

 Pour cela, le client et le serveur échangent des paquets d'information via une connexion internet (une connexion TCP/IP).  En HTTP, ces paquets d'information sont "en clair", c'est à dire, tous les appareils qui font la liaison internet entre l'ordinateur du client, et le serveur, et beaucoup d'appareils connectés aux mêmes réseaux, peuvent lire ces paquets.  Certains sur le chemin direct peuvent même les modifier ou les envoyer ailleurs.

En HTTPS, on fait la même chose qu'en HTTP, mais les paquets sont cryptés et signés.  Ainsi, tous les appareils peuvent lire les paquets, mais cette fois, ils ne comprennent pas le contenu ; et autant que les appareils directement sur le lien entre client et serveur pourraient modifier ou envoyer ailleurs ces paquets, le client et/ou le serveur vont vite s'en rendre compte car les signatures ne vont plus être les bonnes.

Il va de soi que cette protection est très utile... si les informations envoyées sont confidentielles.  Ces informations peuvent être des informations confidentielles que le serveur veut vous envoyer (par exemple, vos résultats médicaux), ou peuvent être des informations personnelles que vous envoyez au serveur.  Par contre. pour des informations publiquement disponibles, cela ne sert à rien.  Mon site n'est pas interactif et il est public, à un seul point près: le formulaire de contact.  Mes pages sont publiques: quelle serait l'utilité de vous envoyer ces pages sous forme cryptée, alors que tout le monde peut les voir ?

Pour le formulaire de contact, par contre, on peut se poser la question, mais là, mon site vous envoie une page qui crypte les informations (votre adresse e-mail, le contenu de votre message etc...) localement en javascript, avant de l'envoyer au serveur qui peut le déchiffrer.  Ainsi, mon site implémente quelque chose qui ressemble à HTTPS "sous le capot", sans que je dois acheter un certificat cher à mon hébergeur.  Vous pouvez le voir quand vous envoyez le message: dans chaque champs, il apparaît "encrypted".  Le lien est donc bien chiffré, même si votre navigateur ne le sait pas (il ne comprend pas que le code javascript qu'il exécute est un algorithme de chiffrement).  Votre navigateur va donc vous dire que le lien n'est pas sûr car je n'utilise pas le cryptage standard dans votre navigateur (https) mais le code de cryptage javascript sur la page. 

Cela dit, cette technique a bien une faille: il se peut que vous n'êtes pas sur le bon site, que vous vous trouvez sur le site d'un imposteur par un aiguillage frauduleux le long du lien direct entre vous et le présupposé serveur.  Si vous pensez que ce risque est réel (je ne le pense pas), alors il vaut mieux utiliser un e-mail chiffré, récupérez ma clé PGP et envoyez-moi un message chiffré par e-mail. La protection que le site vous donne dans le cas où vous utilisez le formulaire de contact (et sinon, il n'y a rien à protéger), est celle contre l'espionnage sur le réseau, qui est largement la menace la plus importante.  Il ne protège pas contre une "conspiration" de certains hébergeurs et/ou opérateurs de réseau... mais un certificat signé par ces mêmes entités ne protège pas non plus, et c'est bien la faille fondamentale dans TLS, le protocole sur lequel HTTPS est construit: la faille est dans la confiance qu'on peut accorder à l’autorité de certificats la moins fiable, et toujours accepté par les navigateurs.  Un certificat frauduleux, donné par une de ces autorités (commerciales) qui signe pour le faux "entrop-x.com" vous fera aussi croire que vous êtes sur le bon site. 

Une variante de cette faille "se trouver sur un autre site que le bon", et qui nécessite donc une malveillance ou un défaut de la part de votre fournisseur de services internet, ou de ses partenaires, est l'injection, dans les pages que vous visitez, de publicités.  Ça c'est fait.  Si vous voyez des publicités sur mon site, ce n'est pas moi, il n'y en a pas, c'est votre fournisseur de services internet qui fait ça.  Changez de fournisseur.  On peut quelque part dire que votre fournisseur a créé un faux site entrop-x.fr qui s'inspire du mien, mais auquel il a ajouté des publicités.  C'est aussi quelque chose qui est rendu plus difficile avec https car alors votre fournisseur de services internet aurait besoin d'une autorité de certificat coopérative.  Le vrai souci n'est alors pas mon site, mais un fournisseur de services internet crapuleux.

Ainsi, pour ce site, acheter un certificat cher n'apporterait pas une protection importante supplémentaire pour vous.  Le jour où je peux utiliser un certificat gratuit, je passerai en https.