← Blog
Tutorial9 de Julio de 2026·7 min de lectura

Cómo verificar una licencia de software offline sin confiar en un archivo del disco.

Tu app está en un portátil sin wifi — un vuelo, un cliente con una red blindada, una máquina que no debería llegar a internet en absoluto. Si tu verificación de licencia necesita ida y vuelta al servidor cada vez, falla justo cuando tu usuario necesita que funcione. Aquí está cómo verificar una licencia completamente offline, sin simplemente confiar en lo que diga un archivo local.

Por qué "solo cachear el último resultado" no funciona en realidad

La solución obvia es recordar la última verificación exitosa en un archivo local o en el registro, y saltarse la llamada de red la próxima vez. Resuelve el problema offline, pero no verifica nada — es una cadena en el disco que cualquier usuario con un editor de texto puede cambiar de false a true. Tampoco expira limpiamente (un archivo copiado funciona para siempre en una segunda máquina), y no puede decirte cuándo se validó realmente por última vez. Has cambiado "sin soporte offline" por "soporte offline que en realidad no es una verificación" — el archivo es confiado, no verificado.

Por qué construir tu propia verificación offline real es más difícil que cachear una bandera

Una verificación offline real significa que la app debe poder demostrar que una licencia es válida sin preguntarle a un servidor, usando solo datos que solo podrían haber venido de ese servidor. Eso necesita un par de claves privada/pública (el servidor firma, la app solo tiene la mitad pública), un payload firmado compacto con la clave de licencia, el ID de máquina y una expiración que la app pueda comprobar contra el reloj, una forma de hacer detectable la manipulación — cambia un byte y la firma debe fallar — y una decisión sobre cuánto tiempo un resultado firmado pero desactualizado sigue siendo confiable antes de que la app se vea forzada a contactar al servidor de nuevo. Nada de esto es criptografía exótica, pero conectarlo correctamente — verificar la firma antes incluso de analizar el payload, comprobar cada claim dentro de él, elegir una ventana de expiración sensata — es exactamente el tipo de cosa fácil de equivocar sutilmente una vez y nunca notarlo.

Leases firmados: el servidor firma, la app solo verifica

Esto es lo que hace la verificación offline de SublimeKeys. Cada llamada activate/verify devuelve un lease — un pequeño token firmado con Ed25519 que contiene la clave de licencia, el ID de máquina, el ID de producto y una expiración, válido por 7 días. Tu app lo cachea localmente y comprueba la firma contra una clave pública que va incluida dentro de tu propio binario — la clave privada nunca sale de nuestro servidor, así que no hay nada en el disco del usuario que pueda editarse para convertirse en un lease válido. Un lease manipulado falla la verificación de firma inmediatamente, antes incluso de que se analice su contenido. Cuando la ventana de 7 días expira, la siguiente comprobación va online silenciosamente, obtiene un lease fresco, y el ciclo se repite — así que una máquina completamente offline permanece verificablemente licenciada hasta por una semana, y una licencia revocada se detecta la próxima vez que la máquina se reconecta.

Cómo añadirlo — 3 pasos con los SDKs oficiales

1pip install sublimekeys (Python) o npm install sublimekeys (Node.js/Electron) — ambos SDKs incluyen la clave pública y la lógica de verificación integradas
2Llama a activate() una vez con la clave del usuario — guarda un lease firmado localmente, sin código extra
3Llama a verify() en cada lanzamiento posterior — comprueba primero el lease en caché, completamente offline, y solo llama a la API cuando la ventana de confianza de 7 días expira

Qué te aporta esto en realidad

Tu app verifica una licencia en microsegundos con cero llamadas de red en un día normal, sigue funcionando correctamente durante una semana en modo avión o en una red corporativa blindada, y aun así detecta una licencia revocada o reembolsada dentro de los 7 días tras la reconexión de la máquina — sin que escribas una sola línea de criptografía tú mismo, hospedes un sistema de gestión de claves, o inventes tu propio formato de token que alguien eventualmente encuentra la forma de editar.

A quién le sirve esto realmente

✈️

Usuarios en viaje

Consultores, técnicos de campo, cualquiera cuyo portátil pase tiempo real offline entre vuelos y clientes.

🏢

Redes corporativas blindadas

Máquinas detrás de firewalls que bloquean llamadas API salientes a cualquier cosa no incluida explícitamente en whitelist.

🐍

Herramientas de escritorio Python

pip install sublimekeys — verificación offline integrada en el SDK oficial.

Apps Electron

npm install sublimekeys — misma verificación con lease firmado, cero dependencias nativas.

🔒

Entornos air-gapped / regulados

Máquinas que nunca deben llegar a internet, solo sincronizarse ocasionalmente.

Prueba SublimeKeys gratis →1 producto · 25 claves · Sin tarjeta de crédito · keys.sublimearts.io

About

Patrick Chen — desarrollador indie detrás de Sublimearts.io. Construyó la verificación offline en SublimeKeys después de darse cuenta de que toda app de escritorio vendida a usuarios en viaje o empresariales eventualmente choca con el mismo muro de "sin internet".

Did you find this helpful?