Un generador de claus[1] (en anglès keygen, contracció de key generator) és un petit programa que genera claus de producte (product key) o números de sèrie (serial number) per al programari. Els generadors de claus són produïts per grups de craqueig, i són disponibles en diverses webs pirates.
Normalment els keygens són fitxers executables (en format *. exe) que s'executen sense necessitat de ser instal·lats, en ser executats generen un codi perquè un determinat programa de programari de pagament en la seva versió de prova (Shareware) pugui oferir els continguts complets del programa.
En alguns països, l'ús d'un keygen per activar el programari és il·legal.
Cal ressaltar que qualsevol d'aquests programes keygen o també els cracks són potencialment perillosos, ja que solen portar virus, és a dir, en el cas de ser legal el seu ús, és millor vigilar la seva execució i verificar bé la seva descàrrega des d'una pàgina de confiança.
El primer keygen que va aparèixer a la xarxa va ser l'any 1985 quan acabat estaven apareixent els ordinadors i Internet, el seu creador va ser Irving Chang i el programa a desbloquejar era un simple joc que era previ pagament (El joc era una màquina de casino, tragamonedas en el seu nom vulgar).
L'autor d'un keygen acostuma a usar un desassemblador per veure el codi en llenguatge d'assemblador d'un determinat programa, o bé de l'instal·lador d'un programa. Un cop s'obté l'accés al codi del programa, es troba la localització de la subrutina responsable de verificar que la clau que s'entra a l'hora de registrar un programa és vàlida. Fent servir aquesta informació, l'algorisme es pot modificar per enginyeria inversa per generar claus vàlides, i això s'utilitza com a keygen.
És molt comú pensar que un generador de claus i un crack són el mateix. El cert és que, tot i que s'utilitzen per al mateix, fan servir sistemes diferents: mentre que un keygen és un executable que genera un codi per poder desbloquejar el programa, un crack simplement fa una modificació sobre el programa per poder-lo "executar amb normalitat".
Per a esquemes de protecció de claus més febles no és necessari dur a terme aquesta reversió complexa del codi, ja que el mateix codi de verificació de claus de l'aplicació original es pot copiar directament i incorporar-se en el keygen. Els sistemes febles de protecció a vegades generen una clau correcta interna per comparar amb la clau introduïda per l'usuari, per poder comparar si la clau introduïda és correcta.
Altres keygens utilitzen una tècnica de força bruta per crear claus vàlides. En aquests casos, el keygen utilitza una tècnica de cerca de claus com a atac contra el software de validació, provant moltes possibles combinacions per segon fins que una produeix una clau vàlida.
Alguns cops, els keygen tenen codi incorporat que permet canviar el codi del programa que volen atacar, per tal de fer possible que el keygen funcioni. De totes maneres, això no és habitual, i en aquests casos es tracta d'un keygen que funcionen en conjunció amb un crack.
Els creadors dels programes generadors de claus introdueixen en aquesta aplicació l'algoritme utilitzat per generar els codis de desbloqueig, i permet a l'usuari obtenir infinits codis. Actualment, les empreses fabricants del programari més demanat utilitzen altres mètodes per al desbloqueig de les versions de prova, que exigeixen a l'usuari registrar el producte telefònicament abans d'activar-lo completament. A més a més, alguns programes, sobretot els més cars, tenen un codi únic per a cada unitat, fet que evita l'ús d'algorismes per part del fabricant, i impossibilita l'ús de qualsevol generador de claus.
Un altre mètode utilitzat per part dels fabricants, i, potser el que més evita la falsificació, és el de diferenciar entre versió de prova i versió definitiva. Un cop acabat el període d'avaluació, el programa només pot ser desinstal·lat, i per seguir utilitzant-lo l'usuari ha de tornar a descarregar la versió completa previ pagament.