Vincent HURTEVENT – UCBL - 2016 Authentification TP: Decouverte d’une application PHP permettant l’auto création d’un compte utilisateur et de son authentification Vincent HURTEVENT – UCBL - 2016
Identification Désigne de façon unique une entité Une personne login, certificat, URL, email Un service URL, certificat Un ordinateur IP, nom DNS Dans une stratégie SSO, il est essentiel de faire le choix d’un identifiant world wide -> email S’assurer de l’unicité de l’identifiant, de son existence S’assurer du propriétaire de l’identifiant
Authentification = Contrôle d’identité Valider l’authenticité de l’entité, de l’utilisateur Utiliser une information que seul l’utilisateur connaît Mot de passe Utiliser une information unique que seul l’utilisateur possède Certificat Utiliser une information qui caractérise l’utilisateur Empreinte Utiliser une information que seul l’utilisateur peut produire Signature Simple, forte, 2FA, MFA, eDIAS Authentification simple Authentification forte eDIAS : https://www.ssi.gouv.fr/entreprise/reglementation/confiance-numerique/le-reglement-eidas/ MFA, 2FA TP: Authentification simple, mono facteur, le mot de passe Sécuriser
Attaque sur mot de passe en clair Visuellement lors de la saisie Capture réseau Keylogger/Form Grabbing Vol du mot de passe stocké A écouter : Podcast Le Comptoir Sécu avec Hydraze de la team Hashcat : http://www.comptoirsecu.fr/2016/05/episode-36-les-mots-de-passe/ France Culture LSD : https://www.franceculture.fr/emissions/lsd-la-serie-documentaire/lespionnage-sur-ecoute-34-la-guerre-economique-comme-la-guerre
Attaque sur mot de passe en clair Visuellement lors de la saisie Eduquer l’utilisateur Keylogger/Form Grabbing Eduquer l’utilisateur, Antimalware, grille de saisie Capture réseau Eduquer l’admin sys et réseau Vol du mot de passe stocké Eduquer le développeur
Attaque sur mot de passe protégé Bruteforce Dictionnaire Pattern/Masque/Statistiques Stockage de hashs précalculés Stockage partiels de hashs précalculé (Rainbow Tables) En ligne Limiter le nombre d’actes, captcha, ban, log Hors ligne Rendre le stockage du mot de passe le plus résistant aux attaques
Fonction a sens unique + Effet d’avalanche : https://fr. wikipedia != Fonction de hachage perceptuelle (son, image): https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf
Fonctions de hachage pour calcul d’intégrité, somme de contrôle
Password cracking, performances 8x Nvidia GTX 1080 Hashcat Benchmarks Hashcat v3.00-beta-145-g069634a, Nvidia driver 367.18 Hashtype H/s NTLM 334.0 GH/s MD5 200.3 GH/s SHA-256 23012.1 MH/s PBKDF2-HMAC-SHA256 (1000 tours) 9473.2 kH/s Bcrypt (5 tours) 105.7 kH/s Argon2 NA Agon2d (GPU) – Argon2i (attaque par canal auxiliaire) Spécifications Argon2 : https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf Constructeur spécialisé dans des solutions HPC de cracking de mot de passe : https://sagitta.pw/ Rainbow Tables : http://project-rainbowcrack.com/performance_perfect/performance_md5_mixalpha-numeric_1-9.png
Quel hash pour mot de passe Argon2 Si disponible Bcrypt* (10/12) Toujours une excellente solution PBKDF2 (10000) Si nécessité d’homologation US (NIST) Attention au nombre de tours
OWASP - Password_Storage_Cheat_Sheet https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet https://www.youtube.com/watch?v=zUM7i8fsf0g https://crackstation.net/hashing-security.htm
Stockage du mot de passe H = hash(Sel+MotdePasse) Sel long ! : de même longueur que le hash Contenu aléatoire Unique En PHP >5 password_hash() http://php.net/manual/fr/function.password-hash.php Password_verify() http://php.net/manual/fr/function.password-verify.php
Credits : https://xkcd.com/936/
Force d’un mot de passe ANSSI https://www.ssi.gouv.fr/administration/precautions-elementaires/calculer-la-force-dun-mot-de-passe/ Testeur de mot de passe https://github.com/dropbox/zxcvbn Démonstrateur https://dl.dropboxusercontent.com/u/209/zxcvbn/test/index.html OWASP – Authentication Cheat Sheet https://www.owasp.org/index.php/Authentication_Cheat_Sheet
OWASP - Input Validation Cheat Sheet https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet OWASP - SQL Injection Prevention Cheat Sheet https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP - Blocking_Brute_Force_Attacks Principes généraux pour sécuriser une application et les entrées de formulaire https://www.owasp.org/index.php/Blocking_Brute_Force_Attacks Délais, CAPTCHA : https://www.google.com/recaptcha/intro/index.html
Workflow de création de compte 1. Formulaire sécurisé d’identification Double saisie de l’identifiant 2. Vérification de l’identifiant Vérification syntaxique, de son unicité dans le système Existence réelle Création d’un token unique limité dans le temps transmis par mail L’utilisateur valide le token 3. Initialisation du mot de passe Double saisie Evaluation du mot de passe 4. Stockage du mot de passe Protection à l’enregistrement en masse
Worklow d’authentification 1. Formulaire sécurisé d’authentification 2. Recherche de l’utilisateur dans la base et récupération du sel et du hash de mot de passe 3. Sel+Hash du mot de passe saisi par l’utilisateur 4. Comparaison
OWASP - Forgot Password Cheat Sheet https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet
OWASP - Session Management Cheat Sheet https://www.owasp.org/index.php/Session_Management_Cheat_Sheet