Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

OWASP Montréal

October 24, 2013
Tweet

More Decks by OWASP Montréal

Other Decks in Programming

Transcript

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

    View Slide

  2. Présentateur
    Alexandre Rimthong
    Consultant TI de jour (CODE3)
    Passionné de sécurité les weekends

    View Slide

  3. Ma paranoia, en tant que gars de sécu
    Précautions
    habituelles en
    mots de passe
    Two-factor ALL THE THINGS

    View Slide

  4. En tant que développeur, je crée!
    Comment
    protéger nos
    utilisateurs?
    Comment
    rendre ça
    FACILE?

    View Slide

  5. De quoi parlerons nous?
    Authentification à deux facteurs
    Comment le supporter dans des app web
    Comment rendre ça facile pour les utilisateurs

    View Slide

  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)

    View Slide

  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?

    View Slide

  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!

    View Slide

  9. Qui utilise le
    multi-facteur?
    Google Facebook
    Yahoo
    Même
    les jeux!
    Lastpass

    View Slide

  10. Je suis convaincu, allons-y!
    Solution OTP avec un appareil physique
    Solution TOTP avec un téléphone intelligent

    View Slide

  11. Yubikey
    Clée USB physique
    Génère un OTP
    Plusieurs modèles
    Facile à utiliser (détecté comme un clavier)
    Environ 25$

    View Slide

  12. Huh, c’est quoi un OTP?
    One time password!
    Généré selon des
    standards
    Yubico ont leur propre
    standard

    View Slide

  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

    View Slide

  14. Yubikey supporte aussi
    Changer les clés AES
    HOTP
    Challenge-Response
    Private Identity

    View Slide

  15. Comment l’auth fonctionne?
    Faire son propre serveur
    Utiliser celui de Yubico's
    (version facile)

    View Slide

  16. Contacter Yubico
    Image source: http://www.yubico.com/products/yubikey-hardware/yubikey/technical-description/

    View Slide

  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)

    View Slide

  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

    View Slide

  19. Inconvénients
    ● Pas toujours accès à un port USB
    ● Je suis pas riche, j’ai pas 25$

    View Slide

  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

    View Slide

  21. GA génère des TOTP
    Une variante de HOTP,
    utilisant le temps comme
    un message.
    A brief history of time

    View Slide

  22. HOTP et OATH
    HOTP (RFC4226),
    algorithme de l’initiative
    OATH
    Open AuTHentication
    Initiative

    View Slide

  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))

    View Slide

  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))

    View Slide

  25. Qu’est-ce que le secret partagé?
    VOUS le générez! (8 bytes)
    ... et encodé en Base32

    View Slide

  26. Base32?
    But what if I'm too lazy? :(
    Encodage lisible pour l’humain
    Différentes versions
    Google utilise RFC3548

    View Slide

  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

    View Slide

  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.

    View Slide

  29. Comment fonctionne l’auth?
    Le téléphone calcule le code tronqué
    L’app web calcule le code tronqué
    Profit!

    View Slide

  30. Inconvénients
    Compteurs peuvent être réutilisés
    Un peu d’huile de coude
    Horloges synchronisées
    Une clé par webapp

    View Slide

  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

    View Slide

  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

    View Slide