Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

1) Threat Model & “Hollywood Masks” — Reality Check

Pourquoi des masques ultra‑réalistes échouent en face‑à‑face : physique des matériaux, indices visuels multi‑spectraux, dynamique vivante, et défenses logicielles (PAD/Liveness).
🕵️
Synthèse
PADBeginnerRGB • NIR • Depth
Même les masques silicone haut de gamme ne répliquent pas correctement la micro‑texture cutanée, la réponse spectrale (NIR/IR), la structure 3D fine (nez/oreilles), ni les signaux biomédicaux (PPG, respiration). Les systèmes modernes combinent capteurs (RGB+NIR+ToF) et algorithmes (CNN/ViT) pour séparer le vivant du polymère.
🧪
Protocoles de test (extraits)
ISO/IEC 30107‑3APCER/BPCER
Banque d’attaques 2D/3D, masques partiels, éclairages variés, distance 30–150 cm, lunettes/maquillage, latence cible < 350 ms.
🏗️
Architecture de référence (section 1)
Edge + CloudTEE
Caméra RGB+NIR+ToF → PAD multi‑modal → Embedding visage → Matching → Score → MFA adaptatif. Templates chiffrés en Secure Enclave/TEE.
1. Physique
2. Taxonomie
3. Pipeline
4. Hardware
5. Évaluation
6. API
7. Légal

1.1 Matériaux & propriétés

  • Silicone/latex : indice de réfraction, brillance différente de la peau, faible diffusion sous‑cutanée.
  • Peau humaine : couches (épiderme/derme) avec chromophores (mélanine, hémoglobine) → spectre distinct.
  • Vieillissement : micro‑craquelures/plis dynamiques impossibles à synchroniser parfaitement avec la mimique.

1.2 Indices visibles (RGB)

  • Micro‑reliefs : pores, rides fines, spéculaire vs diffuse.
  • Jonctions critiques : paupière‑masque, narines, oreilles, ligne capillaire.
  • Occlusion dents/langue lors de la parole, bave/salivation absentes ou non‑naturelles.

1.3 NIR/IR & Thermique

  • Absorption NIR par hémoglobine → motifs PPG invisibles sur silicone.
  • Thermique : gradients respiration nez/bouche, fronts vasculaires.
  • Réflectance du polymère stable vs variations micro‑vasculaires humaines.

1.4 Indices 3D & dynamique

  • Profondeur (stéréo/ToF) : cavité nasale, tragus/antitragus, cartilages; masques lissent ces volumes.
  • Micro‑expressions : latence clignements, contraction orbiculaire, asymétries naturelles.
  • Synchronie audio‑visuelle : phonèmes vs articulation; dérive des lèvres.
Indice pratique — oreille : géométrie riche, difficile à contrefaire; utilisez un crop oreille 64×64 pour un sous‑classifieur PAD 3D.

1.5 Contre‑mesures rapides (UX minimale)

Demande d’inclinaison tête + clignement + lecture chiffre → fusion score liveness.
Flash NIR aléatoire faible puissance → réponse pupille + PPG.
Capture oreille/profil 3/4 à T0 et T0+1 s → cohérence forme/profondeur.
TypeCoûtComplexitéSignaturesDéfenses
Masque complet silicone€€€HauteBrillance, jonctions, PPG nulRGB+NIR+ToF, micro‑expressions
Masque partiel (haut/bas)€€MoyenneIncohérence texture zone non couverteDéfis actifs, crops multiples
Masque imprimé 3D€€MoyenneVolumes rigides, peau statiqueThermique/PPG, specular maps
Make‑up extrême/ProthèsesFaibleTeint homogène non naturelAnalyse couleur/constance éclairage
Arbre d’attaque (extrait) - Objectif: passer PAD face-to-face - Ressources: budget {€..€€€}, temps {jours..semaines}, accès capteur {RGB,NIR,ToF} - Voies: (A) masque complet (B) partiel (C) prothèses (D) deepfake + écran (rejeté en présentiel) - Risques: détection PPG/thermique, profondeur, défi actif, latence > 350 ms

3.1 Pré‑traitements

  1. Détection visage multi‑spectrale (RGB+NIR).
  2. Alignement 5‑points, normalisation illumination (Retinex), débruitage ToF.
  3. Extraction crops : yeux, nez, bouche, oreille; patchs 32–64 px.

3.2 Classifieurs

  • CNN/ViT PAD RGB (textures), PAD NIR (vasculaire), PAD ToF (relief).
  • Réseau PPG (1D) à partir de séries temporelles par pixel (green‑channel rPPG).
  • RNN pour séquence micro‑mouvements (clignements).

3.3 Fusion

score = w_rgb*s_rgb + w_nir*s_nir + w_tof*s_tof + w_ppg*s_ppg + w_motion*s_motion decision = (score >= θ_pad) ? LIVE : SPOOF

3.4 Pseudocode (extrait)

def liveness(frame_rgb, frame_nir, depth, seq_rgb): face = detect_face(frame_rgb, frame_nir) crops = extract_crops(face) s_rgb = cnn_rgb(crops.rgb) s_nir = cnn_nir(crops.nir) s_tof = cnn_depth(depth[face]) s_motion = blink_rnn(seq_rgb[face]) s_ppg = rppg(seq_rgb[face]) return fuse(s_rgb, s_nir, s_tof, s_motion, s_ppg)

3.5 Seuils & métriques

  • Calibrer θ sur DET (cible EER < 2% en conditions labo; < 5% terrain).
  • Reporter APCER/BPCER/ACER par type d’attaque et par capteur.
  • Déploiement : monitorer dérive domaine (caméra/éclairage).

4.1 BOM minimal

  • Caméra RGB 60 fps, global shutter recommandé.
  • Caméra NIR 850 nm + filtre passe‑bande; LED NIR 850 nm < 1 mW/cm².
  • Module ToF (QVGA) 30 fps, portée 0.2–1.5 m.
  • Thermique (option) 80×60 pour respiration.
  • MCU pour contrôle LED (random flicker) + synchro capteurs.

4.2 Calibration

- Matrices intrinsèques/extrinsèques RGB/NIR/ToF - Stéréocalibration profil 3/4 (améliore oreille/nez) - Mesure SNR capteurs; test MTF avec mire 1951 USAF

4.3 Sécurité oculaire

Respect des limites d’irradiance NIR; PWM contrôlé; temps d’exposition < 200 ms par flash.

4.4 Placement & UX

  • Distance optimale 40–60 cm; marque visuelle à l’écran.
  • Message vocal/texte pour défi actif; durée totale < 4 s.
  • Gestion lunettes/masques sanitaires : basculer sur iris/voix si visage partiel.

4.5 Schéma (ASCII)

[RGB Cam] --\ [NIR Cam] ---+--> [Sync + Preproc] --> [PAD Fusion] --> [Embedding/Match] --> [Decision/MFA] [ToF Cam] --/ ^ [LED NIR] <----/ (stimuli)
  • Jeux internes avec masques silicone variés (épaisseur, couleur, partiels).
  • Cross‑sensor : au moins 3 caméras différentes par modalité.
  • Stratification par éclairage (chaud/froid/contre‑jour) et accessoires (lunettes/chapeaux).
MesureButCible
APCERTaux d’acceptation d’attaque< 2–3% labo, < 5% terrain
BPCERTaux de rejet du vivant< 5%
ACERMoyenne (APCER+BPCER)/2< 4%
LatencyUX & coûts< 350 ms PAD, < 4 s scénario complet

6.1 API REST (exemple)

POST /api/identity/pad\nContent-Type: application/json\n{\n "session_id": "S-9843",\n "frames_rgb": ["b64...", "..."],\n "frames_nir": ["b64...", "..."],\n "depth": ["b64..."],\n "metadata": {"device":"cam_v3","lighting":"indoor"}\n}\n\nResponse 200\n{\n "score": 0.87,\n "decision": "LIVE",\n "apcer_est": 0.018,\n "latency_ms": 214\n}

6.2 WebAuthn/FIDO (passkeys)

Combiner PAD avec authentification forte (clé + biométrie on‑device). Les templates biométriques ne quittent pas l’appareil; seule l’attestation/clé publique est serveur.

6.3 Journalisation (privacy‑first)

event=PAD decision=LIVE score=0.87 apcer_est=0.018 bpcert_est=0.022 device=cam_v3\nstore_frames=false pii=false retention_days=0

6.4 Observabilité

  • Dash latence par modalité; alarmes dérive score moyen.
  • A/B seuils; rollback si BPCER > 7% pendant 30 min.
  • Échantillons synthétiques anonymisés pour ré‑entraînement.
  • Finalité explicite, consentement, minimisation des données.
  • DPIA pour biométrie; stockage sur‑appareil privilégié.
  • Équité : tests par phototypes, âges, genres; explicabilité du refus.
Message utilisateur (exemple)\n« Nous vérifions que vous êtes bien une personne réelle via une détection de vivacité. Aucune image n’est stockée. Cette étape dure ~3 secondes. »
📚
Base de connaissance — Détails techniques & playbooks
Ouvrir pour parcourir des dizaines de sections : matériaux, signaux, pipelines, tests, checklists, snippets, et scénarios.