Par Florent FREMONT, LeadDev MAIF

"Se connecter" (2FA)

Sommaire

Qu'est ce que l'authentification ?

1

Authentification& MFA

Qu'est ce que Time-based One-time Password ?

2

TOTP, what ?

Sur une application Java Spring Boot et un front en reactJs, nous allons mettre en place TOTP.

3

Démo

L'Authentification

Mécanisme impliquant 2 entités :

- Un prouveur qui cherche à prouver son identité.

- Un vérifieur qui doit être capable d'assurer la validité et l'identité.

  • robustesse du mot de passe souvent trop légère
  • la déduction peut être facile (même login sur plusieurs apps...)
  • attaque brute force possible
  • exposition du risque globalement élevé par rapport à des services sensibles
  • le recours à un coffre-fort décale le problème 

Auth. login / mot de passe

Les limites

Authentification multifacteur

Il existe 3 catégories de facteurs :

  • connaissance : "ce que je sais"
  • possession : "ce que je possède"
  • inhérent : "ce que je suis"

"Une authentification multifacteur permet de prouver l'identité d'un utilisateur par vérification de plusieurs éléments, appelés facteurs d'authentification" (ANSSI)

Création

Utilisation

Révocation

Authentification forte ≠ MFA

- ANSSI

cryptographie

L'authentification est un mécanisme fortement dépendant du contexte

– ANSSI

⚠️ pensez à journaliser les échecs

TOTP RFC 6238 

Time-Based One-Time Password Algorithm 

"This document describes an extension of the One-Time Password (OTP) algorithm, namely the HMAC-based One-Time Password (HOTP) algorithm" (RFC 4226)

  • Basé sur une fonction de hashage
  • Utilisation du temps Unix
  • Exploite Base32 (rfc 4648)
  • S'appuie sur HMAC (rfc2104), hachage à clé, dans notre cas exploite SHA
  • Besoin d'une clé secrète

Fondements

👋 S'il se base sur le timestamp... ça change toutes les secondes ?

Dans le détail

Dans le détail

Interval 30s (recommandation rfc)

RFC 4226 section 4 Requirement 6 requires a minimum key length of 128 bits, and a recommend of 160 bits.

 

The key is represented as a base32 string, which stores 5 bits per character, so the string in the QR code should be at least 26 characters long (128/5 rounded up), preferably 32 characters.

Longeur de clé

Google Authenticator

https://github.com/google/google-authenticator

Démo

http://localhost:8080

se-connecter-2fa

By Florent Fremont

se-connecter-2fa

  • 81