Credenciales de vida corta — la alternativa a revocación
Una estrategia simple para evitar el costo operativo de mantener listas de revocación: emitir credenciales con vida corta. Si la credencial vence en 1 día, 1 semana, o 1 hora, no hace falta revocarla — simplemente expira.
Este patrón es especialmente útil para ciertos casos de uso gov.
El concepto
| Vida típica | Caso |
|---|---|
| 1 hora | Token de sesión, acceso a portales |
| 1 día | Constancia para un trámite específico ese día |
| 1 semana | Credencial profesional para una semana específica |
| 1 mes | Constancia mensual de pago, certificado de no deuda |
| 1 año | Credencial estándar |
La regla operativa: la credencial vence rápido + se re-emite frecuentemente si sigue vigente.
Las ventajas
Cinco ventajas operacionales:
Sin status list
No hay que mantener listas de revocación. El sistema es más simple.
Privacy mejorada
El verifier no consulta el emisor para confirmar vigencia. Sin canal de tracking.
Auto-revocación
Si el emisor no quiere re-emitir, no lo hace. La credencial se "revoca" sola.
Menos infraestructura
Sin endpoints de status, sin actualización constante de lists.
Updates automáticos
Cada re-emisión refleja el estado actual de los datos del titular.
Las desventajas
El patrón típico de implementación
Una constancia con vida corta:
{
"validFrom": "2026-05-18T00:00:00Z",
"validUntil": "2026-05-19T23:59:59Z",
"credentialSubject": {
"name": "Juan Pérez",
"constatado": "Vigente al 18 de mayo de 2026"
}
}
La credencial vence en 24 horas. Si el holder la necesita el 19 de mayo, descarga una nueva.
El refresh service
Para que el holder no tenga que renovar manualmente, sistemas modernos implementan un refresh service: la wallet automáticamente pide una nueva credencial al emisor antes de que la anterior venza.
Este servicio requiere:
- Wallet capaz de detectar credenciales próximas a vencer.
- Endpoint del emisor que permita renovación rápida.
- Política de renovación clara (criterios para emitir la nueva).
Combinación con status list
Una estrategia híbrida: vida corta + status list para casos atípicos.
- Credenciales emitidas con validUntil de 30 días.
- En casos extraordinarios (fraude, etc.), se incluye además en una status list.
- 99% de los casos solo dependen de la fecha de vencimiento.
- El 1% restante se maneja con status list.
Esto reduce significativamente el tamaño y la complejidad de la status list mientras mantiene la capacidad de revocación rápida cuando hace falta.
Casos donde brilla
Cuatro casos donde credenciales de vida corta son la elección obvia:
Constancias para trámites puntuales
"Constancia de domicilio para presentar en banco hoy" — vence en 24-48 horas. Si la necesita otro día, otra.
Beneficios sociales periódicos
Beneficio mensual que se verifica cada mes. Una nueva credencial cada mes.
Acceso a eventos / servicios
Pase para un evento. Vence al final del evento. Sin necesidad de revocación.
Verificación temporal
"Estoy autorizado a hacer X hasta tal fecha". Vence automáticamente.
Cuándo NO usar
Cuatro casos donde el patrón no aplica:
- Identidad ciudadana base (DNI digital). Debe ser estable por años.
- Diplomas universitarios. Tienen valor permanente.
- Licencias permanentes (matrícula profesional). No se renuevan diariamente.
- Documentos de viaje. Validez de 5-10 años.
Para estos, status list es la estrategia correcta.
El benchmark internacional
| Sistema | Patrón usado |
|---|---|
| EUDI Wallet (UE) | Mix — corto + status list |
| AAMVA mDL (EE.UU.) | Status list nativo de ISO 18013-5 |
| Estonia e-Health | Vida corta para recetas |
| SovraGov (Sovra stack) | Mix según tipo de credencial |
La sabiduría: no elegir uno; combinar según el caso de uso.
Implementación
// Re-emitir credencial con vida corta
async function refreshShortLivedCredential(originalCredId: string) {
const original = await getOriginalCredential(originalCredId);
// Verificar que el holder sigue siendo elegible
const currentStatus = await getCurrentStatus(original.subject);
if (currentStatus !== "active") {
// No re-emitir
return null;
}
// Emitir nueva credencial con datos actualizados + vida corta
return await issueCredential({
...original,
validFrom: new Date(),
validUntil: addDays(new Date(), 30),
credentialSubject: {
...original.credentialSubject,
currentStatus: currentStatus,
},
});
}
Referencias
Relacionados
- ¿Cómo se revoca una credencial? — la alternativa con status list
- Revocar credenciales sin perder privacidad — el formato concreto
- Trust Frameworks — qué son y para qué — el contexto de confianza

