Web : Stockage de mot de passe LOG619 Automne 2011 Olivier Bilodeau



Documents pareils
OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Étudiant : Nicolas Favre-Félix IFIPS Info 3. Les One Time Passwords, Mots de passe à usage unique

Journées MATHRICE "Dijon-Besançon" DIJON mars Projet MySafeKey Authentification par clé USB

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Mot de passe sécurisé, systèmes d'authentification S/Key et par jeton de contrôle, protocoles d'authentification pour PPP : PAP, CHAP et EAP

INF4420: Éléments de Sécurité Informatique

Les Protocoles de sécurité dans les réseaux WiFi. Ihsane MOUTAIB & Lamia ELOFIR FM05

Meilleures pratiques de l authentification:

Protocoles d`authentification. Refik Molva et Yves Roudier. Institut EURECOM, BP 193 Sophia Antipolis Cedex - France

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Attaques Wi-Fi WPA. Séparer le bon grain de l ivraie dans le buzz ambiant. Cédric Blancher. sid@rstack.org Rstack Team

Les principes de la sécurité

Gestion des clés. Génération des clés. Espaces de clés réduits. Mauvais choix de clés. Clefs aléatoires. Phrases mots de passe

Sécurité des applications web. Daniel Boteanu


MONNIER Marie /2009 WPA

Note technique. Recommandations de sécurité relatives aux mots de passe

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI

HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet.

Authentification de messages et mots de passe

Oauth : un protocole d'autorisation qui authentifie?

La sécurité dans les grilles

BlackBerry Business Cloud Services. Guide de référence sur les stratégies

Optimisations des SGBDR. Étude de cas : MySQL

Sécurité des réseaux IPSec

Plateforme PAYZEN. Définition de Web-services

Sécurité des applications Retour d'expérience

StorageTek Tape Analytics

Faiblesses des méthodes d administration en environnement Windows et état des lieux de l outillage intrusif 1/50

Bibliographie. Gestion des risques

Présenté par : Ould Mohamed Lamine Ousmane Diouf

Concept Compumatica Secure Mobile

Cours 14. Crypto. 2004, Marc-André Léger

Laboratoire de Haute Sécurité. Télescope réseau et sécurité des réseaux

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Charte d installation des réseaux sans-fils à l INSA de Lyon

Sécurité d IPv6. Sécurité d IPv6. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr

Les fichiers de configuration d'openerp

Sécurité des réseaux sans fil

Sécurité des Systèmes d Information. TD1: Principes Fondamentaux

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Sécurité des réseaux wi fi

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

ISMS. (Information Security Management System) LOGO Institution. Politique de télétravail Versie /06/2008

Mise en place d une info-structure étendue et sécurisée à base de logiciels libres

Le protocole RADIUS Remote Authentication Dial-In User Service

Cahier d exploitation

LES ACCES ODBC AVEC LE SYSTEME SAS

Découvrir les vulnérabilités au sein des applications Web

Mysql. Les requêtes préparées Prepared statements

Le stockage local de données en HTML5

PASS v2.0 : solution d authentification unique basée sur les composants Shibboleth Service Provider v2.5.1 et Identity Provider v2.3.

(Third-Man Attack) PASCAL BONHEUR PASCAL 4/07/2001. Introduction. 1 Domain Name Server. 2 Commandes DNS. 3 Hacking des serveurs DNS

Gestion des Clés. Pr Belkhir Abdelkader. 10/04/2013 Pr BELKHIR Abdelkader

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

Flexible Identity. authentification multi-facteurs. authentification sans token. Version 1.0. Copyright Orange Business Services mai 2014.

Application 1- VBA : Test de comportements d'investissements

L'écoute des conversations VoIP

Revue de code Sécuritéou Test d Intrusion Applicatif. Quel est le plus efficace pour évaluer un niveau de sécurité applicatif?

AEROHIVE NETWORKS PRIVATE PRESHARED KEY. Le meilleur compromis entre sécurité et souplesse d utilisation pour l accès aux réseaux Wi-Fi OCTOBRE 2009

Guide de configuration pour accès au réseau Wifi sécurisé 802.1X

BIG DATA APPLIQUÉES À LA SÉCURITÉ. Emmanuel MACÉ Akamai Technologies

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Installation d'un TSE (Terminal Serveur Edition)

Tutorial et Guide TeamViewer

L'AAA, késako? Bruno Bonfils, fr.org>, Novembre Sous ce terme d'apparence barbare est regroupé l'ensemble des concepts suivants :

Services Réseau SSH. Michaël Hauspie. Licence Professionnelle Réseaux et Télécommunications

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Présentation du PL/SQL

Chapitre 7. Sécurité des réseaux. Services, attaques et mécanismes cryptographiques. Hdhili M.H. Cours Administration et sécurité des réseaux

Projet Sécurité des SI

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

Guide Utilisateur pour accès au réseau WiFi sécurisé 802.1X

1. Présentation de WPA et 802.1X

Attaques applicatives

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

FACULTE DES SCIENCES ET TECHNIQUES FES SAIS MASTER SYSTEMES INTELLIGENTS ET RESEAUX MST SIR 2014 TP WIFI. Encadré par PR.

La prise de conscience de la Cyber Sécurité est en hausse

Sécurité des bases de données Nicolas Jombart Alain Thivillon

HP ProtectTools Manuel de l utilisateur

Can we trust smartphones?

Installation d'un serveur RADIUS

Sécurité de la ToIP Mercredi 16 Décembre CONIX Telecom

Gestion des utilisateurs et de leurs droits

OPAL un système d'authentification par mots de passe non réutilisables

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Définition des Webservices Ordre de paiement par . Version 1.0

1 Présentation de la solution client/serveur Mobilegov Digital DNA ID BOX

Module pour la solution e-commerce Magento

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Ministère de l'approvisionnement et des Services. Guide de l'utilisateur de Web Express de RSA (version 1.2)

Surveillance stratégique des programmes malveillants avec Nessus, PVS et LCE

Tutoriel DNSSEC. Stéphane Bortzmeyer, AFNIC. Présenté par : JRES Nantes, 4 décembre {Stephane.Bortzmeyer,Mohsen.Souissi}@afnic.

Transcription:

Web : Stockage de mot de passe LOG619 Automne 2011 Olivier Bilodeau 1

Plan Historique du Web Problème du stockage de mots de passe La menace Le craquage de mots de passes Évolution d'une solution et ses problèmes Conclusion 2

Historique du Web - mot de passes Rappel: 3 façon de faire de l'authentification Quelque chose que l'on { sait, a, est } { a, est } requièrent: Accès sur un canal autre pour échapper au mitm (téléphone) Accès à la personne physique (biométrie) Infrastructures à clés publiques (PKI) Accès a des jetons matériels (hardware tokens) Qui sont: Trop coûteux pour la compagnie Peu commode Trop coûteux pour le client Conséquence: L'authentification sur le Web est basée sur quelque chose que l'on sait. => mot de passes 3

Le problème "The storage of passwords in a recoverable format makes them subject to password reuse attacks by malicious users. If a system administrator can recover a password directly, or use a brute force search on the available information, the administrator can use the password on other accounts." -- CWE-257: Storing Passwords in a Recoverable Format Un attaquant peut attaquer une organisation à partir d'un mot de passe laissé par un utilisateur sur un autre site qui a été compromis et qui était vulnérable à CWE-257 Il est facile pour un employé administrateur mal intentionné d'utiliser l'accès de quelqu'un d'autre 4

Précision de la menace Passif vs actif Nous nous intéressons à un attaquant qui a obtenu accès au contenu de la base de données. Donc qui peut faire des attaques passives sans avoir a interagir avec la victime. Les attaques actives sur la session ou les mots de passe sont beaucoup plus complexe à réaliser car le site en question doit être rejoint ce qui fait qu'il peut décider de bloquer un compte ou un IP après plusieurs tentatives de connexion infructueuses. 5

Solution 0 - stocker en clair Compromettre la base de données équivaut à obtenir tous les mots de passe de tous les utilisateurs Usurper un utilisateur est trivial Inacceptable CWE-522: Insufficiently Protected Credentials 6

Solution 1 - hachage naïf Utiliser une fonction de hachage pour stocker le mot de passe Pourquoi pas chiffrer? Car ne résout pas la vulnérabilité de l'employé malicieux qui aura accès à la clé. if (md5($user_password) == $db_password) { return true; } else { return false; } 7

Solution 1 - Problèmes Mots de passes identiques faciles à identifier o md5('bozo') == md5('bozo') = e1c8d6347c0c24e5cbc60e508f3fc1b5 Vulnérable aux attaques par dictionnaire Vulnérable aux attaques par rainbow tables Le problème ici c'est que les mots de passe stockés dans votre base de données partagent le même domaine de possibilités que tous les mots de passe stockés avec le même algorithme de hachage à travers le monde. Donc vous êtes vulnérable au 'hash pre-computation'. CWE-759: Use of a One-Way Hash without a Salt 8

Craquage de mots de passe Attaque par dictionnaire (dictionary attacks) o Passer tous les mots d'une liste à travers le même algorithme de hachage afin d'obtenir la même valeur que dans la base de données o Listes génériques style dictionnaire o Listes spécialisés tirés de statistiques o On peut adapter les listes selon le contexte connu du mot de passe (taille min/max, chiffre obligatoire, etc.) o Limité par la vitesse d exécution de la fonction de hachage o Outils: john the ripper o Exemples de listes http://www.skullsecurity.org/wiki/index.php/passwords Attaque exhaustive (brute-force attack) o On tente itérativement toutes les valeurs de mots de passe crédibles o Plus complet mais beaucoup plus long o Outils: john, crunch 9

Craquage de mots de passe (suite) Rainbow tables o Calcul d'avance de plusieurs millions d'empreintes stockés de façon à éviter les redondances et rendre les recherches rapides o Compromis temps vs mémoire o Plusieurs sont disponibles sur Internet: http://www.freerainbowtables.com/en/tables2/ o Des front end Web existent: http://rainbowtables.g3nius.org/ o Temps à craquer dépend de la grosseur de la table et de la vitesse de cherche dans la table Performance (des attaques exhaustives ou par dictionnaire) o L'utilisation de cartes graphiques (GPU) pour craquer les mots de passe ont amélioré grandement les performances des attaques o "Recovery speed on ATI HD 5970 peaks at 5600M/s MD5 hashes and 2300M/s SHA1 hashes" "J'ai deux cartes ATI en crossfire, je fais environ 5 milliard d'empreintes par seconde pour du MD5." -- Anonyme en 2011 10

Solution 2 - hachage + sel naïf L'ajout d'un sel (salt) consiste à concaténer une chaîne aléatoire au mot de passe avant de l'envoyer dans la fonction de hachage Le sel est stocké avec le mot de passe dans la base de données define('salt', '377fba9d324d42e92dd21a003ec414a9'); function computehash($plaintext) { return sha1(salt. $plaintext); } Résoud le problème des rainbow tables populaires Complexifie l'attaque dictionnaire et exhaustives 11

Solution 2 - Problèmes Permet toujours le pré-calcul de rainbow tables car le sel (salt) est global Permet d'attaquer la base de données en entier avec une attaque de dictionnaire ou exhaustive car le sel est global Mot de passes identiques vont toujours être évidents à l'oeil CWE-760: Use of a One-Way Hash with a Predictable Salt 12

Solution 3 - hachage + sel Ajouter le sel (salt) sur chaque mot de passe au lieu de globalement. On stocke le sel directement dans le champ password. Les attaquant doivent maintenant tenter de craquer chaque entrée de la table de mot de passe séparément define('salt_length', 9); function generatehash($plaintext, $salt = null) { if ($salt == null) { $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH); } else { $salt = substr($salt, 0, SALT_LENGTH); } return $salt. sha1($salt. $plaintext); } C'est une très bonne solution! Améliorations possibles? 13

Solution 4 - key stretching Problème: Les fonctions de hachage ont été conçues pour être performantes pourtant la vitesse est votre ennemi ici car rapide veut dire qu'un attaquant peut rapidement faire son attaque exhaustive Solution o En plus du sel par mot de passe, o On fait 1000 itérations de l'empreinte dans une boucle o ou encore, on concatène 1000 fois le mot de passe et le sel avant de faire l'empreinte Ici on ralentit l'attaquant de 1000 fois mais on ne peut se permettre se genre de ressources pour authentifier un usager Presque parfait, que manque-t-il? 14

Solution 5 - planifier pour l'avenir Problème: Toutes les solutions stockent l'empreinte dans un format inflexible qui ne permet pas de changer la technique d'empreinte dans l'avenir Solution o Se faire un petit standard interne pour contenir un id de version de votre technique qui décrit le format utilisé o Laisser assez de place dans la colonne pour pouvoir grossir l'empreinte o ex: $1$salt$hash$ 1 = md5 avec 100 itérations et un salt de 64 bit o Planifier la migration du format de mot de passe lorsqu'un utilisateur s'authentifie si id = 1 et default id = 2 on le passe a version 2 15

Les extras PBKDF2 (RFC2898) o meilleure pratique couvrant exactement la solution établie dans ses diapositives o la technique de WPA2 valider un mot de passe d'un nouvel utilisateur contre des dictionnaires populaires comptes 'canary' avec des login / pass / emails obscurs o Vous informe si vous êtes compromis. Séparer sur des serveurs différents l'authentification des comptes et le reste de l'application o pour que l'interface soit très limitée et prévienne toute injection ou XSS possible 16

Le futur Hachage adaptatif (Adaptive hashing) o L'avantage principal c'est qu'on peut le rendre paramétrable. À mesure que les ordinateurs sont plus rapides, la technique de hachage reste difficile à compromettre. o ex: bcrypt scrypt o Nouveau type de problèmes "memory-hard" donc non seulement difficile sur le CPU mais aussi sur la mémoire vive de façon à ce que ce soit difficile d'implémenter une machine matérielle concentrée sur le crackage de mot de passe (FPGA). 17

Conclusion La réutilisation de mots de passe est un fait confirmé. Afin de défendre ses utilisateurs, il faut appliquer une méthode de hachage appropriée L'idéal c'est de ne pas inventer son propre stockage de mot de passe o Par ex: les gens réputés de Openwall on fait phpass qui est une implémentation des meilleurs pratiques (basé sur bcrypt) en PHP sous licence domaine publique: http://www.openwall.com/phpass/ Si vous faites "j'ai oublié mon mot de passe" et que vous recevez votre mot de passe en clair, pensez-y bien! 18

Réfé rences Password Reuse Is All Too Common, Research Shows, http://www.pcworld.com/businesscenter/article/2193 03/password_reuse_is_all_too_common_research_shows.ht ml CWE-257: Storing Passwords in a Recoverable Format, http://cwe.mitre.org/data/definitions/257.html Password lists, http://www.skullsecurity.org/wiki/index.php/passwords Rainbow Tables, http://en.wikipedia.org/wiki/rainbow_table Free Rainbow Tables, http://www.freerainbowtables.com/en/tables2/ IGHASHGPU, attaques exhaustives par GPU, http://www.golubev.com/hashgpu.htm 19

Réfé rences CWE-522: Insufficiently Protected Credentials, http://cwe.mitre.org/data/definitions/522.html CWE-759: Use of a One-Way Hash without a Salt, http://cwe.mitre.org/data/definitions/759.html CWE-760: Use of a One-Way Hash with a Predictable Salt, http://cwe.mitre.org/data/definitions/760.html CAPEC-49: Password Brute Forcing, http://capec.mitre.org/data/definitions/49.html The Importance of Being Canonical, Robert David Graham, http://erratasec.blogspot.com/2009/02/importance-of-being-canonical.html Enough With The Rainbow Tables: What You Need To Know About Secure Password Schemes, Thomas Ptacek, http://chargen.matasano.com/chargen/2007/9/7/enough-withthe-rainbow-tables-what-you-need-to-know-about-s.html PHP Security Consortium: Password Hashing, http://phpsec.org/articles/2005/passwordhashing.html Portable PHP password hashing framework, Openwall, http://www.openwall.com/phpass/ Passwords lists and dictionaries, http://www.skullsecurity.org/wiki/index.php/passwords Stronger Key Derivation via Sequential Memory-Hard Functions, Colin Percival, http://www.tarsnap.com/scrypt/scrypt.pdf 20