27
LP SIL – WCE : LP SIL – WCE : Projet Industriel et Projet Industriel et Cours HTTPS Par EHRLICH Fabien & HENARD David 16/02/2011

Cours HTTPS pour UnPointZero

Embed Size (px)

DESCRIPTION

Cours sur le protocole HTTPS par EHRLICH Fabien & HENARD David pour UnPointZero

Citation preview

Page 1: Cours HTTPS pour UnPointZero

LP SIL – WCE : LP SIL – WCE : Projet Industriel etProjet Industriel et

Cours HTTPSPar EHRLICH Fabien & HENARD David

16/02/2011

Page 2: Cours HTTPS pour UnPointZero

Rappel : HTTP

Présentation d’HTTPS

Fonctionnement de TLS

Déploiement

Faiblesses et Renforcements

Page 3: Cours HTTPS pour UnPointZero
Page 4: Cours HTTPS pour UnPointZero

HyperText Transfer Protocol Créé en 1990 pour le World Wide Web Développé par Tim Berners-Lee avec les adresses web et le langage

HTML Protocole de communication client/serveur Appartient à la couche application

Peut fonctionner sur n’importe quelle connexion fiable

Le protocole TCP sert comme couche de transport

Port 80 par défaut

Les clients HTTP (navigateurs web) se connectent à des serveurs HTTP (Apache HTTP Server, IIS)

Page 5: Cours HTTPS pour UnPointZero

Versions : 1990: HTTP/0.9

Version élémentaire (méthode GET uniquement) Prévision de l’utilisation des types MIME

1996: RFC 1945 – HTTP/1.0 Standard de l’IETF (Internet Engineering Task Force) Support des serveurs HTTP virtuels Gestion du cache Authentification (Basic et Digest)

1997: RFC 2068 – HTTP/1.1 & 1999: RFC 2616 – HTTP/1.1 Support du transfert en pipeline Négociation du type de contenu (format de données, langue)

Page 6: Cours HTTPS pour UnPointZero

Le W3C a clos l’activité HTTP depuis la version HTTP/1.1 stable

Fonctionnement : Le client envoie une requête au serveur (méthode GET

par exemple) Traitement et réponse du serveur (contenu HTML par

exemple) Si HTTP/1.1 : keep-alive (connexions persistantes)

permettant d’envoyer plusieurs requêtes asynchrones (pipelining)

Fermeture de la connexion

Page 7: Cours HTTPS pour UnPointZero
Page 8: Cours HTTPS pour UnPointZero

HTTPSecured : Association de HTTP avec SSL

Vérification de l'identité du site grâce à un certificat d'authentification

HTTP vs HTTPS : Utilisation du port 443 par défaut Sécurisation eavesdropping Compatibilité HTTP Basic uniquement

Confidentialité et Intégrité des données

Page 9: Cours HTTPS pour UnPointZero

Très utilisé pour les transactions financières : banque en ligne, achat en ligne, ...

Sécurisation complète des données, empêche les actions malveillantes de part et d'autres des tunnels

Certificat de type X.509

Page 10: Cours HTTPS pour UnPointZero

Structuration d'un certificat :VersionNuméro de sérieAlgorithme de signature du certificatDN du délivreur (autorité de certification)Validité (dates limite)

Pas avantPas après

DN du détenteur du certificatInformations sur la clé publique :

Algorithme de la clé publiqueClé publique proprement dite

Identifiant unique du signataire (optionnel, X.509v2)Identifiant unique du détenteur du certificat (optionnel, X.509v2)Extensions (optionnel, à partir de X.509v3)

Liste des extensionsSignature des informations ci-dessus par l'autorité de certification

Page 11: Cours HTTPS pour UnPointZero
Page 12: Cours HTTPS pour UnPointZero
Page 13: Cours HTTPS pour UnPointZero
Page 14: Cours HTTPS pour UnPointZero

SSL, devenu TLS après un rachat de brevet par IETF, est un protocole de sécurisation des échanges de données sur Internet

TLS assure 3 choses : Confidentialité : impossibilité d’espionner les informations Intégrité : impossibilité de truquer les informations Authentification : assure l’identité

TLS consiste en 2 protocoles : TLS Handshake protocol : négociation des clés et

protocoles de chiffrement communs avant de communiquer TLS Record protocol : chiffrement des informations et

contrôles

Page 15: Cours HTTPS pour UnPointZero
Page 16: Cours HTTPS pour UnPointZero

Négociation TLS (Handshake) :Au début de la communication le client et le serveur

s'échangent: La version SSL La liste des méthodes de chiffrement (sym et asym) et de signature Les méthodes de compression Des nombres aléatoires Les certificats.

Client et serveur essaient d'utiliser le protocole de chiffrement le plus puissant

Diminution du niveau jusqu'à trouver un protocole commun aux deux

Début de l’échange de données

Page 17: Cours HTTPS pour UnPointZero

Communication TLS (Record) Expéditeur :

Découpage des données en paquets Compression des paquets Signature par cryptogramme Chiffrement des données Envoi

Récepteur : Déchiffrage des données Vérification de la signature Décompression des paquets Réassemblage des paquets

Page 18: Cours HTTPS pour UnPointZero

TLS utilise : Chiffrement asymétriques (RSA, Diffie-Hellman) : clés de

sessionChiffrement symétrique (DES, 3DES, IDEA, RC4...) : chiffrement

des données Signature cryptographique des messsages (HMAC, utilisant

MD5, SHA...) pour vérifier la contrainte d’intégrité

La liste des systèmes utilisés est visible depuis le navigateur sur une page HTTPS.

Page 19: Cours HTTPS pour UnPointZero
Page 20: Cours HTTPS pour UnPointZero

Déploiement à la racine du serveur

SSLv2, SSLv3 & TLS v1.0 sont parfaitement gérés par la plupart des navigateurs, mis à part Internet Explorer (v6/v7)

Récupération du type de ressource grâce à Apache : création automatique d'une variable d'environnement interne nommée HTTPS de valeur "on"

Limiter l'accès de certains fichiers au protocole HTTPS :

Dans le cas d'un serveur virtuel :<VirtualHost ...:80>

# ...RedirectPermanent page.html https://www.monsite.com/page.html

</VirtualHost>

Page 21: Cours HTTPS pour UnPointZero

Limiter l'accès de certains fichiers au protocole HTTPS :Depuis un fichier .htaccess :

RewriteEngine OnRewriteCond %{HTTPS} !=onRewriteRule secure[/_].* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Via PHP :<?php

if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') { header('Location: https://' . $_SERVER['SERVER_NAME'] .$_SERVER['REQUEST_URI']); exit;}

?>

Page 22: Cours HTTPS pour UnPointZero
Page 23: Cours HTTPS pour UnPointZero

Faiblesses HTTPS : Attaque du type man in the middle

Présentée par Moxie Marlinspike à la BHC 2009 Attaque invisible et très efficaceChangement des liens https:// en http://

Failles de sécurité internes Présentées par Mark Zusman (Intrepidus Group) et

Alexander Sotirov (phmsecurity.com) à la BHC 2009 Facilité d’obtention d’un certificat (phishing, ect) Contournement des certificats EV

Page 24: Cours HTTPS pour UnPointZero

Standard RFC2246 :« An upper limit of 24 hours is suggested for session ID lifetimes,

since an attacker who obtains a master_secret may be able to impersonate the compromised party until the corresponding session ID is retire ».

Certaines versions d’IE renégocient toutes les 2 minutes

Renforcements : Redirection systématique vers HTTPS depuis le serveur Mises à jour des navigateurs pour forcer le protocole Plus grande vigilance et remise en question de VeriSign

HTTPS cohabite avec S-HTTP : S-HTTP est plus flexible et s’intègre plus au protocole HTTP HTTPS est beaucoup plus simple à mettre en place ce qui en fait

le leader incontesté

Page 25: Cours HTTPS pour UnPointZero
Page 26: Cours HTTPS pour UnPointZero

Le cadenas garantie la sureté ?indique que les communications entre votre navigateur et le

site web sont sûrespersonne ne peut les espionner, et personne ne peut

trafiquer les communicationsIl ne garantie rien d'autre !

Image du fourgon blindé:Assure la sécurité du transport et uniquement du

transportNe garantie pas que la banque utilise de bons coffre-forts et

qu'elle les ferme bienNe garantie pas que la banque ne fait pas de malversationsDes truands peuvent louer les services d'un fourgonRester vigilant

Page 27: Cours HTTPS pour UnPointZero

TLS est nécessaire pour : Une boutique en ligne (commandes et cartes de

crédit) Proposer une connexion protégée Traiter des données sensibles Répondre aux normes relatives à la confidentialité

et à la sécurité des données Protéger la confidentialité des données Acquérir la confiance des utilisateurs