L’affaire Snowden
Edward Joseph Snowden, né le 21 juin 1983, est un informaticien américain, ancien employé de la Central Intelligence Agency (CIA) et de la National Security Agency (NSA), qui a révélé les détails de plusieurs programmes de surveillance de masse américains et britanniques.
À partir du 6 juin 2013, Snowden rend publiques par l’intermédiaire des médias, notamment The Guardian et The Washington Post, des informations classées top-secrètes de la NSA concernant la captation des métadonnées des appels téléphoniques aux États-Unis, ainsi que les systèmes d’écoute sur internet des programmes de surveillance PRISM, XKeyscore, Boundless Informant et Bullrun du gouvernement américain et les programmes de surveillance Tempora, Muscular et Optic Nerve du gouvernement britannique. Pour justifier ses révélations, il a indiqué que son « seul objectif est de dire au public ce qui est fait en son nom et ce qui est fait contre lui ».
HTTPS ET NSA
En septembre 2013, plusieurs journaux révèlent, grâce aux documents fournis par Edward Snowden, que la NSA, via son programme Bullrun, cherche à casser ou affaiblir le protocole HTTPS ou ses mises en œuvre par les constructeurs de matériel et de logiciel, rendant accessible en clair aux services américains de nombreuses communications pourtant chiffrées.
HTTPS – HyperText Transfer Protocol Secure
L’HyperText Transfer Protocol Secure, plus connu sous l’abréviation HTTPS — littéralement « protocole de transfert hypertexte sécurisé » — est la combinaison du HTTP avec une couche de chiffrement comme SSL ou TLS.
HTTPS permet au visiteur de vérifier l’identité du site web auquel il accède, grâce à un certificat d’authentification émis par une autorité tierce, réputée fiable (et faisant généralement partie de la liste blanche des navigateurs internet). Il garantit théoriquement la confidentialité et l’intégrité des données envoyées par l’utilisateur (notamment des informations entrées dans les formulaires) et reçues du serveur. Il peut permettre de valider l’identité du visiteur, si celui-ci utilise également un certificat d’authentification client.
HTTPS est généralement utilisé pour les transactions financières en ligne : commerce électronique, banque en ligne, courtage en ligne, etc. Il est aussi utilisé pour la consultation de données privées, comme les courriers électroniques, par exemple.
Depuis le début des années 2010, le HTTPS s’est également généralisé sur les réseaux sociaux.
Par défaut, le protocole HTTPS fonctionne sur le port TCP 443
Source : Wikipedia
TLS et SSL
Transport Layer Security (TLS), et son prédécesseur Secure Sockets Layer (SSL), sont des protocoles de sécurisation des échanges sur Internet. Le protocole SSL a été développé à l’origine par Netscape. L’IETF, en a poursuivi le développement en le rebaptisant Transport Layer Security (TLS). On parle parfois de SSL/TLS pour désigner indifféremment SSL ou TLS.
TLS (ou SSL) fonctionne suivant un mode client-serveur. Il permet de satisfaire aux objectifs de sécurité suivants :
- l’authentification du serveur ;
- la confidentialité des données échangées (ou session chiffrée) ;
- l’intégrité des données échangées ;
- de manière optionnelle, l’authentification du client (mais dans la réalité celle-ci est souvent assurée par le serveur).
Implémentations TLS
Plusieurs implémentations de l’algorithme TLS sont disponibles dans plusieurs langages avec différentes licences. On pense à OpenSSL, LibreSSL, Mozilla NSS et GnuTLS :
Un aperçu de OpenSSL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
The OpenSSL toolkit includes: libssl (with platform specific naming): Provides the client and server-side implementations for SSLv3 and TLS. libcrypto (with platform specific naming): Provides general cryptographic and X.509 support needed by SSL/TLS but not logically part of it. openssl: A command line tool that can be used for: Creation of key parameters Creation of X.509 certificates, CSRs and CRLs Calculation of message digests Encryption and decryption SSL/TLS client and server tests Handling of S/MIME signed or encrypted mail And more... |
Le bogue Heartbleed affecte OpenSSL
Attaque de l’homme du milieu
Un chercheur en sécurité informatique, connu sous le pseudonyme de Moxie Marlinspike, a développé une attaque du type Attaque de l’homme du milieu (« Man in the middle » en anglais), afin de contourner le chiffrement de HTTPS.
Le pirate se positionne entre le client et le serveur et change les liens https: en http:, ainsi le client envoie ses informations en clair via le protocole HTTP et non HTTPS. Ce type d’attaque a été présenté par Marlinspike à la Blackhat Conference 2009.
Certificats gratuits
L’industrie entière reconnaît l’important de sécuriser les communications entre clients et serveurs. Des options gratuites sont maintenant disponibles, le propriétaire d’un site web n’a donc plus de raison valable d’échanger des données en clair (sans encryptage).
StartSSL par StartCOM inc.
StarSSL offre des certificats gratuits pour tous les développeurs web. Le contrat est simple, vous fournissez vos informations de contact, un courriel de vérification est envoyé à l’administrateur du domaine et un certificat est délivré. Ce certificat est complètement gratuit et est valide pour 1 an. Suite à l’expiration du certificat, il est possible de renouveler gratuitement.
StartSSL™ Certificates; Public Key Infrastructure
Let’s Encrypt
Let’s Encrypt est une initiative qui vise aussi à sécuriser le Web en fournissant des certificats gratuits utilisés afin d’offrir le HTTPS.
Voici quelques principes clés de Let’s Encrypt :
Gratuit : Tous les propriétaires de domaine peuvent utiliser Let’s Encrypt afin d’obtenir un certificat fiable à 0$.
Automatique: Votre serveur web peut interagir avec Let’s Encrypt afin d’obtenir un certificat de façon sécuritaire et le configurer facilement. Un script peut procéder au renouvellement automatique du certificat.
Sécuritaire : Let’s Encrypt offre un service, en tant que plate-forme, qui respecte les meilleures pratiques TLS et aide les opérateurs à sécuriser leur site.
Transparent : Tous les certificat fournis ou retirés (revoked) sont enregistrés et disponibles pour inspection par tous.
Démo Let’s Encrypt sur Youtube
Extension HTTPS Everywhere
HTTPS Everywhere est une extension pour navigateur web qui permet d’étendre l’usage du SSL/TLS sur certains sites. Elle active le SSL sur les pages où ce protocole est normalement désactivé. Ceci ne peut évidemment fonctionner que si le site en question supporte déjà le SSL. L’extension est maintenue conjointement par le projet Tor et l’EFF depuis 2010.
Classes de validation
Afin d’augmenter la confiance d’un internaute, un propriétaire de site web peut acheter et installer un certificat ayant un plus haut niveau de validation, on parle de classe de validation. Les sections suivantes présentent 3 classes de validation : DV, OV et EV.
Validation de domaine (DV)
Une autorité de certification délivre un certificat digital X.509 de classe DV (Domaine Validation) à un acheteur si cet acheteur peut répondre à un critère :
- Démontrer qu’il est en mesure d’administrer le domaine pour lequel le certificat est demandé.
https://en.wikipedia.org/wiki/Domain-validated_certificate
Validation de l’organisation (OV)
Une autorité de certification délivre un certificat digital X.509 de classe OV (Organization Validation) à l’acheteur s’il peut répondre à deux critères :
- Démontrer qu’il est en mesure d’administrer le domaine pour lequel le certificat est demandé.
- Démontrer que l’organisation a une existence légale.
Validation étendue (EV)
Afin d’obtenir un certificat EV (Extended validation), l’acheteur doit persuader le fournisseur qu’il peut répondre à ce critère :
- Démontrer que l’organisation a une existence légale.
Cette validation n’est pas automatisée, elle demande les services d’une personne, d’un vérificateur.
Lorsqu’un navigateur charge une URL d’un domaine ayant un certificat de type EV, le nom de l’entreprise sera affiché dans la barre URL en vert.
Entrust offre plusieurs autres forfaits et types de certificats.
https://www.entrust.com/ssl-certificate-comparison/
Migrer vers HTTPS
Voici quelques conseils afin de migrer votre application vers HTTPS.
Pour un environnement de développement local
- Éviter les liens absolus.
- Mettre en place le protocole HTTPS sur votre poste local.
- Assurez-vous que toutes les ressources de votre page (images, js, css, CDN et ressources externes) sont disponibles en HTTPS.
- Tester sur tous les navigateurs, puisqu’il réagissent différemment et possèdent des règles différentes en ce qui concerne le HTTPS.
- Vérifier la console du développeur, vous pourriez y retrouver des erreurs et des avertissements.
- Mettre en place une suite de tests fonctionnels automatisés.
Pour un environnement de production
- Magasiner un certificat avec le niveau de validation qui vous convient.
- Mettre en place le certificat sur votre serveur web en production.
- Tester le nouveau site HTTPS.
- Finalement, définir une règle afin de rediriger tous les utilisateurs du site vers le HTTPS automatiquement. Cette règle est configurée dans le code de votre app web ou comme une directive pour votre serveur web (Apache, NginX, IIS, …).
Likes Facebook
La solution est d’utiliser la balise og:url, afn de spécifier l’URL à utiliser pour le compte des Likes.
1 |
<meta property="og:url" content="https://example.com/old-url" /> |
https://developers.facebook.com/docs/plugins/faqs#moving-urls
Il est aussi possible d’utiliser le code HTTP 301, 302 (redirect) afin d’indiquer que l’URL a été déplacé.
Si vous désirez une application fonctionnelle sur HTTP et HTTPS, il est fortement recommandé d’utiliser les liens absolus débutant par // monServeur.com/monImage.jpg
Conclusion
Soyez un bon développeur consciencieux, pensez à vos utilisateurs et à la protection de leur vie privée. De plus, en mettant en place un accès HTTPS, Google vous récompensera en augmentant votre positionnement dans le Page Rank.
Références
- Transport Layer Security – Wikipedia, the free encyclopedia
- HTTPS – Wikipedia, the free encyclopedia
- HyperText Transfer Protocol Secure — Wikipédia
- https://en.wikipedia.org/wiki/Comparison_of_TLS_implementations
- Root certificate – Wikipedia, the free encyclopediaX.509 – Wikipedia, the free encyclopedia
- Public key certificate – Wikipedia, the free encyclopedia
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!