Attack vectors covered
| Attack | How it’s caught |
|---|---|
| Printed photo | Texture analysis detects flat/paper surfaces. No landmark motion across frames. |
| Photo on screen | Moire pattern detection, screen pixel grid artifacts, unnatural glow and reflections. |
| Video replay | Cross-frame luminance analysis detects zero natural variation. Background pixel-diffing catches static overlays. |
| 3D printed mask | Depth cue analysis — real selfies have natural depth-of-field (sharp face, slightly blurred background). Masks show uniform sharpness. |
| Deepfake video | Temporal consistency analysis catches morphing artifacts. Face descriptor comparison across frames flags identity shifts. |
| Photo cutout overlay | Background thumbnail comparison across frames — identical backgrounds flag static cutout overlays. |
How it works
Liveness verification runs two independent layers:Layer 1: Token-based challenge-response
A cryptographic liveness token is generated for each verification session. The token is HMAC-signed with a server-side secret and includes:- Session timestamp (prevents replay across sessions)
- Challenge nonce (prevents pre-recorded responses)
Layer 2: Visual liveness analysis
When liveness frames are provided (multiple captures from the verification session), Tuteliq runs four parallel sub-analyzers:Landmark Motion (35%)
Tracks 7 key facial landmarks (nose tip, chin, brow midpoint, eye corners, mouth corners) across frames. Real people show natural micro-movements. Static photos show zero displacement. Abnormal independent landmark movement flags physiological impossibility.
Texture Analysis (25%)
Crops the face region and applies Laplacian kernel to measure sharpness variance. Real skin has texture (pores, fine lines). Printed photos and screens appear unnaturally smooth or show printer dot patterns. Moire detection at multiple scales catches screen recapture.
Depth Cues (15%)
Compares Laplacian variance between face region and background. Real selfies show natural depth-of-field — sharp face, slightly blurred background. Flat media (screens, prints) show roughly equal sharpness everywhere. A sharpness ratio near 1.0 across all frames is suspicious.
Cross-Frame Consistency (25%)
Compares 128-dimensional face descriptors across all frames (must be same person, distance < 0.55). Compares mean luminance across frames (real = slight natural variation; screen = zero variation). Diffs background thumbnails across frames (identical = cutout overlay).
Combined score
Each sub-analyzer produces a pass/fail result. The combined liveness score is a weighted average:Face matching
Face matching runs alongside liveness detection as part of identity verification:- Face detection on both the document photo and the live selfie using 68-point facial landmarks
- 128-dimensional face descriptor extraction from both faces
- Euclidean distance comparison with a configurable similarity threshold (default: 0.6)
- Match result includes similarity score for transparency
User experience
The verification UI guides users through a brief liveness check:- Look straight at the camera
- Turn head left and right
- Blink when prompted
- Smile for the camera
Response data
When liveness analysis completes, the verification response includes:| Field | Description |
|---|---|
valid | Overall liveness result |
visual_score | Combined visual liveness score (0.0-1.0) |
visual_checks.landmark_motion | Facial landmarks showed natural movement |
visual_checks.texture | Face texture consistent with real skin |
visual_checks.depth_cues | Natural depth-of-field detected |
visual_checks.cross_frame | Consistent identity and natural variation across frames |
Next steps
Document Checks
45-country document validation and MRZ parsing.
Fraud Prevention
Multi-layer cross-referencing and authenticity analysis.