Cos'è una chiave di licenza software?
Una chiave di licenza software è una stringa di caratteri che dimostra che una specifica installazione del tuo software è autorizzata a funzionare — di solito legata a un acquisto, un account, o un dispositivo specifico. È il meccanismo che trasforma "chiunque abbia l'installer può usarlo per sempre" in "solo chi ha pagato può usarlo". La chiave in sé è di solito priva di significato — una stringa apparentemente casuale come SLK-7X9K-2MPQ-R4WT-BH3N — il suo potere viene da cosa la controlla: un server che può confermare che è valida, non usata (o entro il suo limite di attivazioni), e legata al prodotto giusto. Una chiave che nessuno controlla è solo una password senza nessuno a guardia della porta.
Come funziona davvero una chiave di licenza?
Ci sono due momenti in cui una chiave di licenza conta: l'attivazione e la verifica. L'attivazione avviene una sola volta — un cliente inserisce la sua chiave, la tua app chiama un license server, il server conferma che la chiave è valida e non ha superato il limite di dispositivi, poi registra che questo specifico dispositivo (di solito tramite un'impronta hardware) è ora attivato. La verifica avviene a ogni avvio successivo — la tua app controlla che l'attivazione sia ancora valida, chiamando di nuovo il server oppure, meglio, controllando una lease firmata salvata localmente dall'ultima verifica riuscita, così l'app funziona anche offline per una finestra prestabilita (di solito 3-7 giorni) senza connessione internet. La firma conta: un semplice flag locale salvato in un file può essere modificato da chiunque con un editor di testo, mentre una lease firmata crittograficamente (Ed25519 è lo standard moderno per questo) può essere verificata come autentica senza una chiamata di rete, ma non può essere falsificata senza la chiave privata, che non lascia mai il tuo server.
Chiave di licenza vs product key vs serial key: qual è la differenza reale?
Nell'uso comune vengono scambiati continuamente, ma hanno origini distinte e, a volte, significati distinti a seconda di chi usa il termine:
Chiave di licenza
Il termine moderno e generale — di solito legato a un account o a un acquisto, verificato contro un server live, e spesso revocabile. È quello che la maggior parte dei SaaS e del licensing software indie intende oggi.
Product key
Storicamente usato per il software in scatola/retail (Windows, Office) — una chiave inserita una volta durante l'installazione, spesso validata una volta e raramente controllata dopo.
Numero di serie / serial key
Il più vecchio dei tre termini — originariamente solo un identificatore unico per ogni copia venduta, spesso senza alcuna validazione lato server, motivo per cui i seriali sono diventati così facili da far trapelare e condividere.
Chiave di attivazione
Non è davvero una categoria a parte — di solito è solo un altro nome per uno dei precedenti, usato specificamente per sbloccare/attivare una copia al primo avvio.
Tipi di chiavi di licenza
Il tipo di cui hai bisogno dipende interamente da come vendi e da chi usa il tuo software:
| Type | How it works | Best for |
|---|---|---|
| Single-machine (node-locked) | Una chiave, un dispositivo. Attivarla su un secondo dispositivo fallisce, oppure disattiva il primo. | App desktop vendute a privati — il modello più comune per il software indie. |
| Floating / a posti | Un pool di N attivazioni simultanee condivise in un team; un posto si libera quando qualcuno disattiva o va offline. | Strumenti B2B venduti per team invece che per persona. |
| Abbonamento / a tempo | La chiave (o l'account dietro di essa) smette di verificarsi con successo una volta scaduto il periodo di fatturazione, indipendentemente dal dispositivo. | Prodotti SaaS e a ricavo ricorrente — si abbina naturalmente a Stripe o simili. |
| Chiave trial | Si verifica con successo per una finestra fissa (7/14/30 giorni) dalla prima attivazione, poi si ferma — logica separata da una chiave a pagamento, non solo una chiave a pagamento con un timer che nessuno controlla. | Lasciare che le persone provino prima di comprare senza regalare il prodotto a pagamento. |
Meglio costruire il proprio sistema di licensing, o usare un servizio?
Costruirlo da soli
Fattibile, e molti sviluppatori lo fanno — ma "controlla solo una chiave" diventa silenziosamente un database di chiavi e attivazioni, un'API che la tua app possa chiamare da qualsiasi posto, un modo per revocare una chiave (chargeback, frodi, rimborsi capitano), e una logica trial che non si può resettare reinstallando. Niente di tutto questo può vivere in sicurezza solo dentro l'app stessa, dato che un utente determinato può patchare via qualsiasi controllo puramente offline. Messo tutto in fila, è un piccolo servizio backend che ora possiedi per sempre — hosting, uptime e manutenzione — per una funzionalità che non è il tuo vero prodotto.
Usare un servizio di licensing
Un'API di licensing in cloud (SublimeKeys ne è un esempio) ti dà endpoint activate/verify/deactivate, una dashboard per emettere chiavi manualmente o automaticamente a ogni vendita, verifica offline tramite lease firmate, e revoca, senza che tu debba ospitare nulla. Il compromesso è semplice: un piccolo costo ricorrente (spesso con un piano gratuito per iniziare) in cambio di non dover più toccare un codebase di licensing. Per la maggior parte degli sviluppatori indie, il vero prodotto vale più del loro tempo che reinventare questa specifica ruota.
Errori comuni di licensing che fanno gli sviluppatori indie
Controllare la chiave solo una volta, all'installazione
Senza verifica continua, una chiave condivisa più un installer trapelato significano copie gratuite illimitate per sempre.
Nessuna gestione offline
I sistemi verificabili solo online bloccano i clienti paganti nel momento in cui cade il wifi, generando ticket di supporto, non sicurezza.
File di licenza locali non firmati
Un file JSON su disco che dice {"licensed": true} non è un controllo di licenza — è un suggerimento, modificabile col Blocco Note.
Nessun percorso di revoca
Senza un modo per invalidare una chiave specifica, un singolo chargeback o una chiave trapelata non possono essere annullati in modo pulito.
Trattare i trial come un timer, non uno stato
Un trial che controlla solo "giorni dall'installazione" si resetta reinstallando; la vera logica trial deve vivere lato server.
Domande frequenti
Mi serve un sistema di chiavi di licenza per un'app gratuita?
No — le chiavi di licenza esistono specificamente per limitare l'accesso a pagamento. Un'app gratuita non ha nulla da controllare.
Una chiave di licenza può essere craccata?
Qualsiasi controllo che gira interamente sul dispositivo dell'utente può, prima o poi, essere patchato via da qualcuno abbastanza determinato — l'obiettivo realistico non è renderlo impossibile, ma alzare lo sforzo oltre quello richiesto dalla condivisione casuale, offrendo allo stesso tempo un'esperienza fluida e senza intoppi a chi paga.
Qual è la differenza tra attivazione e verifica?
L'attivazione avviene una sola volta, quando una chiave viene usata per la prima volta su un dispositivo. La verifica avviene a ogni avvio successivo, confermando che l'attivazione sia ancora valida.
Le chiavi di licenza possono funzionare senza connessione internet?
Sì, se il sistema supporta la verifica offline — di solito tramite una lease firmata crittograficamente e salvata localmente dopo l'ultimo controllo online riuscito, valida per una finestra prestabilita (giorni, non indefinitamente).
Una chiave di licenza è la stessa cosa del DRM?
Sono correlati ma non identici — il DRM di solito implica una restrizione tecnica più profonda (crittografia, blocchi hardware). Un sistema a chiave di licenza può essere leggero (un controllo all'avvio) senza il resto di ciò che il DRM tipicamente implica.
About
Patrick Chen — sviluppatore indie dietro Sublimearts.io. Ha costruito SublimeKeys dopo aver scritto questo stesso codice di controllo licenza per ReelNox Studio e essersi reso conto che ogni altro sviluppatore indie che vendeva software a pagamento risolveva lo stesso problema da zero.