cybercursus

Authentification à deux facteurs : TOTP, ce qui la contourne

11 min · Avancé · 7 août 2026

Sommaire
  1. Un deuxième facteur, indépendant du mot de passe
  2. Comment un code TOTP se calcule réellement
  3. Ce qui contourne malgré tout un 2FA

Un deuxième facteur, indépendant du mot de passe

Un mot de passe (chapitre 1) prouve « ce que tu connais ». Un 2FA basé sur TOTP ajoute « ce que tu possèdes » : un secret partagé une seule fois avec ton application d’authentification (généralement via un QR code), qui permet ensuite de générer un code à usage unique, hors ligne, sans aucune connexion réseau.

Comment un code TOTP se calcule réellement

TOTP combine deux éléments vus dans le cours sur la cryptographie : une fonction de hachage (via HMAC, une variante qui intègre une clé secrète) et une notion de temps découpé en tranches fixes.

python
import hmac, hashlib, struct, time, base64

def totp(secret_b32, temps=None, periode=30, chiffres=6):
  cle = base64.b32decode(secret_b32.upper())
  tranche = int((temps or time.time()) // periode)
  message = struct.pack(">Q", tranche)
  empreinte = hmac.new(cle, message, hashlib.sha1).digest()
  decalage = empreinte[-1] & 0x0F
  code_brut = struct.unpack(">I", empreinte[decalage:decalage + 4])[0] & 0x7fffffff
  return str(code_brut % (10 ** chiffres)).zfill(chiffres)

# Secret partage une seule fois, au moment du scan du QR code
secret = "JBSWY3DPEHPK3PXP"

print("Code TOTP actuel :", totp(secret))
print("Code dans 30s (tranche suivante) :", totp(secret, temps=time.time() + 30))
print("Ce code change automatiquement toutes les 30 secondes, sans reseau.")

Le secret ne change jamais : seule la tranche de temps utilisée dans le calcul évolue, ce qui suffit à produire un code totalement différent à chaque tranche, exactement comme l’effet avalanche du chapitre 2 du cours sur la cryptographie.

Ce qui contourne malgré tout un 2FA

Danger

La technique la plus efficace ne casse aucune mathématique : le phishing en temps réel présente une fausse page de connexion à la victime, récupère mot de passe et code TOTP au moment même où elle les saisit, et les relaie instantanément vers le vrai site avant l’expiration du code.

Trois autres angles fréquents :

  • Absence de limitation de tentatives : un code à 6 chiffres ne représente qu’un million de possibilités, un nombre bien trop faible sans limitation stricte des essais.
  • Codes de secours mal protégés : les codes de récupération fournis à l’activation du 2FA contournent totalement TOTP s’ils sont stockés sans précaution.
  • Jeton « se souvenir de cet appareil » : un cookie de confiance qui dispense du 2FA pendant plusieurs jours redevient une cible aussi intéressante qu’un vol de session classique (chapitre 2) s’il est mal protégé.
D'où un code TOTP tire-t-il le fait de changer toutes les 30 secondes ?
Quelle est la technique la plus efficace pour contourner un 2FA basé sur TOTP, malgré sa présence ?

Pour aller plus loin

Commentaires

Recherche