Authentification à deux facteurs pour services Web par Alexandre Rimthong

Authentification à deux facteurs pour services Web par Alexandre Rimthong

OWASP Montréal - 24 octobre - Authentification à deux facteurs pour services Web

PRÉSENTATEUR PRINCIPAL: Alexandre Rimthong

RÉSUMÉ: Qu'est-ce que l'authentification à multiples facteurs et comment l'implanter dans un service web? La présentation fera d'abord un bref survol sur les principes d'authentification et les stratégies mises en place dans l'industrie. Par la suite, nous plongerons dans deux exemples concrets en utilisant des technologies gratuites ou peu coûteuses avec Google Authenticator et Yubikey.

BIO: Consultant TI dans une coopérative de solidarité se spécialisant dans le développement Web et la continuité des opérations de jour, amateur de sécurité et gladiateur des hackothons locaux la nuit. On le retrouve normalement à contribuer dans des projets de données ouvertes ou dans un projet de startup s'il n'est pas dans une compétition de sécurité ou de programmation. Présentement au sein de l'équipe OWASP Montréal, via l'équipe académique de l'UQAM.

QUAND: 24 octobre 2013 à 18h00

OÙ: Pavillon Président-Kennedy 201, Avenue du Président-Kennedy, J2X 3Y7 Local PK-1630

WEBCAST: http://www.youtube.com/watch?v=1h7Dp23zfpA

ÉQUIPE ACADÉMIQUE AGEEI-UQAM - http://www.ageei.org/
PROGRAMME:
18:00-18:15 Accueil
18:15-18:20 Mot de bienvenue par le leader du chapitre (Jonathan M.)
18:20-19:00 Présentation principale : Auth. à deux facteurs
19:00-19:15 Période de questions

https://github.com/bushibytes/owasp-multifacteurs

09905cce02942fb076f958f4b69fd8f6?s=128

OWASP Montréal

October 24, 2013
Tweet

Transcript

  1. Authentification à deux facteurs Stratégies d’applications Web

  2. Présentateur Alexandre Rimthong Consultant TI de jour (CODE3) Passionné de

    sécurité les weekends
  3. Ma paranoia, en tant que gars de sécu Précautions habituelles

    en mots de passe Two-factor ALL THE THINGS
  4. En tant que développeur, je crée! Comment protéger nos utilisateurs?

    Comment rendre ça FACILE?
  5. De quoi parlerons nous? Authentification à deux facteurs Comment le

    supporter dans des app web Comment rendre ça facile pour les utilisateurs
  6. Comment? Revision rapide sur l’auth à multiple facteurs Un OTP,

    avec solution physique Une solution TOTP gratuite Look at it in action Et bien sûr, du code porn non censuré (Démo Coffeescript Node-JS)
  7. Alors, qu’est-ce que l’auth à 2 facteurs En fait, 3

    facteurs possibles: Qqch qu’on CONNAIT Qqch qu’on POSSÈDE Qqch qu’on EST Pourquoi les combiner?
  8. Les mots de passe sont merdiques On les oublie Sont

    réutilisés Peuvent être devinés ou brute-forcés Souvent interceptés, parfois volés d’ une entreprise De plus en plus faciles à craquer!
  9. Qui utilise le multi-facteur? Google Facebook Yahoo Même les jeux!

    Lastpass
  10. Je suis convaincu, allons-y! Solution OTP avec un appareil physique

    Solution TOTP avec un téléphone intelligent
  11. Yubikey Clée USB physique Génère un OTP Plusieurs modèles Facile

    à utiliser (détecté comme un clavier) Environ 25$
  12. Huh, c’est quoi un OTP? One time password! Généré selon

    des standards Yubico ont leur propre standard
  13. YUBI-OTP Décortiqué Ressemble à: ccccccbggtftcbvvdfcfbctrclbjnlcuhbuhjfufgurj Les 32 derniers: • ID

    privé • compteur • timestamp • compt session • num aléatoire • checksum Premier caractères sont ID public Chiffré AES-128, encodé ModHex
  14. Yubikey supporte aussi Changer les clés AES HOTP Challenge-Response Private

    Identity
  15. Comment l’auth fonctionne? Faire son propre serveur Utiliser celui de

    Yubico's (version facile)
  16. Contacter Yubico Image source: http://www.yubico.com/products/yubikey-hardware/yubikey/technical-description/

  17. Ce que le client (webapp) envoie https://api2.yubico.com/wsapi/2.0/verify?id=#{clientId}&otp=#{otp}&nonce=# {nonce} Requête http(s)

    simple avec: • Un client ID • OTP (complet) à authentifier • Un nonce (16-40 caractères)
  18. Ce que le client (webapp) reçoit h=31ZEjT/5tFowIZwEhnQjAkt++0g= t=2013-02-27T17:04:44Z0364 otp=ccccccbggtftcbvvdfcfbctrclbjnlcuhbuhjfufgurj nonce=1234567890ABCDEF

    sl=25 status=OK
  19. Inconvénients • Pas toujours accès à un port USB •

    Je suis pas riche, j’ai pas 25$
  20. Pourquoi pas une solution TOTP gratuite? Google Authenticator Codes basés

    sur le temps Facile à lire et entrer Supporte: • iPhone • Android • Blackberry Image du play store
  21. GA génère des TOTP Une variante de HOTP, utilisant le

    temps comme un message. A brief history of time
  22. HOTP et OATH HOTP (RFC4226), algorithme de l’initiative OATH Open

    AuTHentication Initiative
  23. Algorithme HOTP Basé sur HMAC Hachage de clé privée, permet

    l’identification et l’ intégrité C : Facteur variable (compteur) K: Secret partagé (clé) HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))
  24. Et puis TOTP? Change le facteur variable d’HOTP T: Facteur

    variable (temps) K: Secret partagé (clé) T: Temps présent / X X= Step (habituellement 30 secs) HOTP(K,T) = Truncate(HMAC-SHA-1(K,T))
  25. Qu’est-ce que le secret partagé? VOUS le générez! (8 bytes)

    ... et encodé en Base32
  26. Base32? But what if I'm too lazy? :( Encodage lisible

    pour l’humain Différentes versions Google utilise RFC3548
  27. Générer un QR Code avec Google Charts https://chart.googleapis.com/chart?cht=qr &chs=200x200 &chl=otpauth://totp/admin@twofactortest

    ?secret=JBSWY3DPEHPK3PXP
  28. Qu’est-ce que le truncate? HOTP standard 6 caractères Derniers 4

    bits sont un décalage Prendre 4 bytes, commençant au décalage & avec 0X7FFFFFFF (convertir 31 bit unsigned int) Convertir en int, prendre les 6 derniers caractères.
  29. Comment fonctionne l’auth? Le téléphone calcule le code tronqué L’app

    web calcule le code tronqué Profit!
  30. Inconvénients Compteurs peuvent être réutilisés Un peu d’huile de coude

    Horloges synchronisées Une clé par webapp
  31. Modules! Plusieurs modules existent en PHP, Python, Ruby. Django a

    des modules qui supportent Yubikey et Google Authenticator. Le gem Devise pour Rails peut supporter Yubikey avec Yubikey_Authenticatable. Plusieurs libs qui supportent TOTP
  32. Demo! Application NodeJS Serveur Express Mémoire non persistante En Coffeescript

    Déconnage Litcoffee car je suis un hipster https://github.com/bushibytes/owasp-multifacteurs