Le HTTPS, ce n’est pas automatique !

Suite aux révélations d’Edward Snowden l’année dernière, on a vu fleurir peu à peu des sites qui proposent un accès en HTTPS. Pour les plus novices d’entre nous, le HTTPS c’est le moyen d’accéder au web de façon chiffrée. En gros, c’est grâce à ça que vous pouvez vous rendre sur Google Facebook les sites Internet sans que de (méchants) gens ne puissent intercepter ce que vous voyez.
Si, à la base, l’idée de proposer un tel accès à un site Internet est louable, j’aimerais tout de même rappeler que le HTTPS, ce n’est pas automatique !

Depuis quelques temps je tombe sur de plus en plus de liens HTTPS pour des sites avec certificats auto-signés. Parfois même il n’est pas possible d’accéder au site sans devoir valider le certificat. Stop !

Capture d'écran d'une mise en garde d'un certificat non fiable

Si vous prenez la capture d’écran ci-dessus, vous devriez noter quelques mots importants : « untrusted », « can’t be verified », « error », « risks ». Un champ lexical très orienté ; un champ lexical qui vous met en garde. La sécurité est quelque chose de compliqué et qui ne se fait pas qu’à moitié. Une faille, si minime soit-elle, ouvre bien souvent la porte à de plus gros problèmes.
Ici le problème est que vous ne pouvez pas savoir que le certificat qu’on vous demande d’accepter est bien celui du propriétaire du site. Si vous voyez un tel écran, vous devriez refuser le certificat à moins que vous ne puissiez vérifier qu’il s’agit bien d’un certificat valide. Il incombe donc au propriétaire du site de vous fournir les informations nécessaires pour cette vérification. Sachant que celles-ci passeront quasiment certainement par un accès non-sécurisé, une attaque de l’homme du milieu reste possible.

Le risque que je vois à long terme, c’est de conforter les gens dans le fait qu’ils peuvent accepter n’importe quel certificat parce que « de toutes manières, j’ai confiance en ce site ». Un tel comportement finira par devenir dangereux si la personne se rend sur le site de sa banque et qu’elle ne se pose pas la question de pourquoi ce message s’affiche.

Amis webmasters, il n’y a pas de solution magique :

  • Soit vous passez par une autorité de certification (AC) pour signer vos certificats. Il en existe des gratuits.
  • Soit vous gardez l’accès en HTTPS pour un usage personnel tout en prévenant vos visiteurs qu’ils peuvent l’utiliser… à leurs risques et périls ! Personnellement je ne le mets pas en avant sur mes sites et me réserve le HTTPS pour les zones d’authentification et d’administration.

En aucun cas vous ne devriez imposer l’accès en HTTPS si vous utilisez un certificat auto-signé. C’est simple : lorsque je tombe sur un tel site, je le ferme.

Les révélations de Snowden ont fait bouger beaucoup de choses, assurons-nous que celles-ci aillent dans le bon sens.

{14} Thoughts on “Le HTTPS, ce n’est pas automatique !

  1. Autant je suis tout à fait d’accord avec le fait que les certificat auto-signé ne soit pas la meilleur des solutions.

    Autant je pense que c’est mieux que rien. Cela permet au moins de voir les changements (et donc les éventuelles usurpations d’identité).

    D’autre part le fait d’utiliser une autorité de confiance, n’est pas un gage de sécurité absolue. Ces autorités sont des entreprises qui peuvent subir des pressions.

    • Attention, je n’ai pas dit qu’une autorité de confiance est un gage de sécurité et effectivement elles peuvent subir des pressions et être faillible. Néanmoins il faut bien voir ce que je reproche vraiment : le fait de forcer l’utilisation d’un certificat HTTPS au point que ça devienne une norme. J’en ai accepté un paquet au début avant de me rendre compte que finalement je ne lisais même plus l’encart. Il faut bien comprendre que la signature d’un certificat par une autorité de confiance n’a pas été mise en place par hasard : c’est pas pour faire chier mais pour renforcer la sécurité.

      Il y a une chose que j’ai oublié de préciser dans l’article : bien souvent il n’y a pas d’intérêt pour le visiteur à utiliser HTTPS. Il vient lire un article et s’en va aussitôt sans rentrer aucune information personnelle / critique. Alors effectivement ça permet de faire en sorte que la NSA ne sache pas exactement sur quelle page tu es allé, mais si j’ai horreur d’avoir l’impression d’être observé par la NSA, j’ai tout autant horreur de la mouvance actuelle qui se résume à « Pour vivre heureux, vivons cachés ».

  2. Tu as plus confiance dans les autorités centralisées ?

    Une méthode pas mal est certificate-patrol, tant que le site ne change pas son certificat, il ne dis rien. On doit donc faire confiance la première fois (comme avec ssh).

    https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/

    Il faudrait ajouter à ce système un phase de transition a deux certif afin de pouvoir basculer en douceur les certificats tous les deux ans par exemple… Mais je ne pense pas que TLS supporte cela ! C’est plus un système centralisé qu’un système ou chacun doit mettre sa confiance.

    • Comme je le dis dans mon commentaire précédent : la signature d’un certificat par une autorité de confiance n’a pas été mise en place par hasard. S’il y a effectivement des failles dans le système actuel, on ne fait que les agrandir en forçant les gens à accepter nos certificats auto-signés. Pourquoi aurais-je plus confiance dans le mec qui signe lui-même ses certificats que dans une « autorité centralisée » ?

      Je ne cherchais en tout cas pas à dire que les AC sont la solution ultime, je dis juste qu’actuellement, oui, c’est la solution en place qui marche le mieux et que passer outre ne fera qu’affaiblir la sécurité des sites.

      Pour certificate-patrol tu n’apportes pas une solution à ce que je reproche, tu le dis toi-même : « On doit donc faire confiance la première fois (comme avec ssh). ». Et pour faire confiance, tu es censé vérifier la signature (que ce soit avec SSH ou HTTPS). Si tu ne peux pas le vérifier, alors tu accordes potentiellement ta confiance à quelqu’un de malveillant ;)

  3. Le HTTPS a le mérite d’apporter un chiffrement de bout en bout, ce qui permet de ne pas permettre au premier admin réseau de voir quelles pages tu lis, ton identifiant Facebook et les photos de ta copine en bikini.
    Ca protège aussi contre la modification du contenu (par Free qui enlève les pubs ou d’autres avec des idées plus embêtantes)

    Sans le certificat, il peut y avoir une usurpation d’identité, certes. Mais en HTTP c’est pire !!

    Le navigateur devrait revoir ses alertes (par exemple en affichant des étoiles dans la barre d’url):
    1 étoile : HTTP
    2 étoile : HTTPS autosigné première visite
    3 étoile : HTTPS autosigné autres visites
    4 étoile : HTTPS signé par une AC connue.

    Par contre, imposer l’HTTPS avec un certificat autosigné c’est mal, ne serait ce que pour le référencement je suppose.

  4. Tout à fait d’accord, je ne suis pas en mesure à l’oeil nu de valider un certificat personnellement…

    Par contre le système de paiement pour être sécurisé est inacceptable, je verrais bien à la place un système d’évaluation par les pairs : je déclare mes amis comme étant bien propriétaires de leurs certificats, ils font de même avec moi, et plus de gens nous certifient, plus le score de confiance est haut. Ainsi, on se passe des « autorités de certification », on est en p2p, et on établit un réel système de confiance. Exactement comme avec les clefs PGP.

    Une telle initiative existe-elle déjà ?

  5. D’une part je trouve le titre de ton article bien mal choisi, au premier abord j’ai cru que tu allais dénoncer le https partout, en fait tu dénonce une mauvaise pratique de mise en place de https.

    D’autre part tu dis en commentaire « bien souvent il n’y a pas d’intérêt pour le visiteur à utiliser HTTPS ». Il y a TOUJOURS un intérêt, même si tu n’envoie aucune info à un site tu veux quand même être sûr que ces infos sont bien celles du site en question, et là je rebondis sur le troll des autres commentaires remettant en question le système actuel des autorités de confiance.
    Certes ce n’est pas un système parfait mais il a le mérite de garantir un minimum de sécurité avec un minimum de contraintes pour l’utilisateur. CACert est une belle initiative, mais tant qu’il faudra reconnaitre manuellement cette autorité dans nos navigateurs, ce sera une contrainte utilisateur forte.

  6. Un certificat auto-signé garantit que la communication ne peut pas être interceptée si on n’est pas en possession de la clé privée. Ce qui n’est pas garanti, c’est qui possède la clé utilisée pendant la communication. C’est effectivement une forme de protection imparfaite.

    Si le certificat est signé par une autorité de certification, tout repose sur la confiance que tu accordes à l’autorité en question. Est-ce que tu connais précisément toutes les autorités de certification installées sur ton système? et dans ton navigateur? Quel est le niveau de sécurité de chacune? Peut-on réellement faire confiance à des autorités installés dans des pays où les gouvernements imposent aux entreprises de communiquer toutes sortes d’informations confidentielles?

    L’indice le plus fiable reste la vérification du fingerprint indiquant que le certificat n’a pas changé. Or, pour des sites comme Gmail le certificat change très souvent et de façon irrégulière…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">