# Random Challenge Sequencer

> Generar secuencias aleatorias de desafíos de liveness para prevenir ataques de replay grabado

- Skill: `davidcastagnetoa/random-challenge-sequencer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add davidcastagnetoa/random-challenge-sequencer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/davidcastagnetoa/random-challenge-sequencer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: davidcastagnetoa (https://skillmd.com/u/davidcastagnetoa)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/davidcastagnetoa/random-challenge-sequencer

---


# random_challenge_sequencer

Genera una secuencia aleatoria e imprevisible de challenges activos para cada sesión, haciendo imposible que un atacante grabe y reproduzca la respuesta correcta.

## When to use

Usar al inicio de cada sesión de liveness para determinar qué challenges se solicitarán al usuario.

## Instructions

1. Definir el pool de challenges disponibles: `['blink_2x', 'turn_left', 'turn_right', 'smile', 'nod']`.
2. Para cada sesión, seleccionar aleatoriamente 2-3 challenges: `selected = random.sample(pool, k=2)`.
3. Usar `secrets.SystemRandom()` (no `random.random()`) para mayor entropía criptográfica.
4. Incluir el timestamp y session_id en la semilla para que la secuencia sea irrepetible.
5. Almacenar la secuencia esperada en Redis con TTL de 120 segundos: `SETEX session:{id}:challenges 120 {challenges}`.
6. El frontend recibe los challenges encriptados; no en texto plano.
7. Validar que cada challenge se completa en el orden correcto.

## Notes

- Rotar el pool de challenges periódicamente para evitar que atacantes conozcan todas las opciones.
- No reusar la misma secuencia aunque el usuario repita la sesión.
