¿Qué es una clave de licencia de software?
Una clave de licencia de software es una cadena de caracteres que demuestra que una instalación específica de tu software está autorizada a funcionar — normalmente ligada a una compra, una cuenta, o un dispositivo concreto. Es el mecanismo que convierte "cualquiera con el instalador puede usarlo para siempre" en "solo quien pagó puede usarlo". La clave en sí suele carecer de significado — una cadena aparentemente aleatoria como SLK-7X9K-2MPQ-R4WT-BH3N — su poder viene de lo que la verifica: un servidor que puede confirmar que es válida, no usada (o dentro de su límite de activaciones), y ligada al producto correcto. Una clave que nadie verifica es solo una contraseña sin nadie vigilando la puerta.
¿Cómo funciona realmente una clave de licencia?
Hay dos momentos en los que una clave de licencia importa: la activación y la verificación. La activación ocurre una sola vez — un cliente introduce su clave, tu app llama a un servidor de licencias, el servidor confirma que la clave es válida y no supera su límite de dispositivos, y luego registra que ese dispositivo concreto (normalmente mediante una huella de hardware) queda activado. La verificación ocurre en cada arranque posterior — tu app comprueba que la activación sigue siendo válida, ya sea llamando de nuevo al servidor o, mejor, comprobando un lease firmado guardado localmente desde la última verificación exitosa, para que la app siga funcionando offline durante una ventana fijada (normalmente 3-7 días) sin conexión a internet. La firma importa: una simple marca local guardada en un archivo puede editarla cualquiera con un editor de texto, mientras que un lease firmado criptográficamente (Ed25519 es el estándar moderno para esto) puede verificarse como auténtico sin una llamada de red, pero no puede falsificarse sin la clave privada, que nunca sale de tu servidor.
Clave de licencia vs product key vs serial key: ¿cuál es la diferencia real?
En el uso cotidiano se intercambian constantemente, pero tienen orígenes distintos y, a veces, significados distintos según quién use el término:
Clave de licencia
El término moderno y general — normalmente ligado a una cuenta o compra, verificado contra un servidor en vivo, y a menudo revocable. Es lo que la mayoría del software SaaS e indie entiende hoy por licencias.
Product key
Usado históricamente para software en caja/retail (Windows, Office) — una clave introducida una vez durante la instalación, a menudo validada una sola vez y rara vez comprobada después.
Número de serie / serial key
El más antiguo de los tres términos — originalmente solo un identificador único por copia vendida, frecuentemente sin ninguna validación en el servidor, por lo que los seriales se volvieron tan fáciles de filtrar y compartir.
Clave de activación
No es realmente una categoría aparte — normalmente es solo otro nombre para cualquiera de las anteriores, usado específicamente para desbloquear/activar una copia en el primer arranque.
Tipos de claves de licencia
El tipo que necesitas depende por completo de cómo vendes y quién usa tu software:
| Type | How it works | Best for |
|---|---|---|
| Un solo dispositivo (node-locked) | Una clave, un dispositivo. Activarla en un segundo dispositivo falla, o desactiva el primero. | Apps de escritorio vendidas a particulares — el modelo más común para software indie. |
| Flotante / por puestos | Un grupo de N activaciones simultáneas compartidas por un equipo; un puesto se libera cuando alguien desactiva o se desconecta. | Herramientas B2B vendidas por equipo en vez de por persona. |
| Suscripción / por tiempo | La clave (o la cuenta detrás de ella) deja de verificarse con éxito cuando termina el período de facturación, sin importar el dispositivo. | Productos SaaS y de ingresos recurrentes — encaja de forma natural con Stripe o similares. |
| Clave de prueba | Se verifica con éxito durante una ventana fija (7/14/30 días) desde la primera activación, y luego se detiene — lógica separada de una clave de pago, no solo una clave de pago con un temporizador que nadie hace cumplir. | Dejar que la gente pruebe antes de comprar sin regalar el producto de pago. |
¿Deberías construir tu propio sistema de licencias, o usar un servicio?
Construirlo tú mismo
Factible, y muchos desarrolladores lo hacen — pero "solo comprobar una clave" se convierte silenciosamente en una base de datos de claves y activaciones, una API que tu app pueda llamar desde cualquier lugar, una forma de revocar una clave (los contracargos, el fraude y los reembolsos pasan), y una lógica de prueba que no se pueda resetear reinstalando. Nada de esto puede vivir de forma segura solo dentro de la app, ya que un usuario decidido puede parchear cualquier comprobación puramente offline. Una vez enumerado todo, es un pequeño servicio backend que ahora posees para siempre — hosting, uptime y mantenimiento — para una función que no es tu producto real.
Usar un servicio de licencias
Una API de licencias alojada (SublimeKeys es un ejemplo) te da endpoints de activate/verify/deactivate, un panel para emitir claves manualmente o automáticamente en cada venta, verificación offline mediante leases firmados, y revocación, sin que tengas que alojar nada. El equilibrio es sencillo: un pequeño coste recurrente (a menudo con un plan gratuito para empezar) a cambio de no volver a tocar un código de licencias nunca más. Para la mayoría de desarrolladores indie, el producto real vale más su tiempo que reinventar esta rueda concreta.
Errores comunes de licencias que cometen los desarrolladores indie
Comprobar la clave solo una vez, al instalar
Sin verificación continua, una clave compartida más un instalador filtrado significan copias gratis ilimitadas para siempre.
Sin plan para el modo offline
Los sistemas que solo verifican online bloquean a los clientes que pagan en el momento en que se cae el wifi, generando tickets de soporte, no seguridad.
Archivos de licencia locales sin firmar
Un archivo JSON en disco que dice {"licensed": true} no es una comprobación de licencia — es una sugerencia, editable con el Bloc de notas.
Sin vía de revocación
Sin una forma de invalidar una clave específica, un solo contracargo o una clave filtrada no se pueden deshacer de forma limpia.
Tratar las pruebas como un temporizador, no un estado
Una prueba que solo comprueba "días desde la instalación" se resetea al reinstalar; la lógica de prueba real debe vivir en el servidor.
Preguntas frecuentes
¿Necesito un sistema de claves de licencia para una app gratuita?
No — las claves de licencia existen específicamente para restringir el acceso de pago. Una app gratuita no tiene nada que comprobar.
¿Se puede crackear una clave de licencia?
Cualquier comprobación que se ejecute enteramente en el dispositivo del usuario puede, con el tiempo, ser parcheada por alguien lo bastante decidido — el objetivo realista no es hacerlo imposible, sino elevar el esfuerzo por encima de lo que requiere compartirla casualmente, ofreciendo a la vez una experiencia fluida a quien paga.
¿Cuál es la diferencia entre activación y verificación?
La activación ocurre una sola vez, cuando una clave se usa por primera vez en un dispositivo. La verificación ocurre en cada arranque posterior, confirmando que la activación sigue siendo válida.
¿Pueden las claves de licencia funcionar sin conexión a internet?
Sí, si el sistema soporta verificación offline — normalmente mediante un lease firmado criptográficamente y guardado localmente tras la última comprobación online exitosa, válido durante una ventana fija (días, no indefinidamente).
¿Es una clave de licencia lo mismo que el DRM?
Están relacionados pero no son idénticos — el DRM suele implicar una restricción técnica más profunda (cifrado, bloqueos de hardware). Un sistema de clave de licencia puede ser ligero (una comprobación al arrancar) sin el resto de lo que el DRM suele implicar.
About
Patrick Chen — desarrollador indie detrás de Sublimearts.io. Construyó SublimeKeys después de escribir este mismo código de comprobación de licencias para ReelNox Studio y darse cuenta de que cualquier otro desarrollador indie que vendía software de pago resolvía el mismo problema desde cero.