# Keygen

Het woord keygen is een afkorting afgeleid van de Engelse term key generator. Heel vaak is voor software een licentiecode nodig. Bij illegaal gedownloade software zit vaak een keygen. Deze genereert een licentiecode op basis van een ingevulde naam. Er zit een algoritme achter dat de naam omzet naar een licentiecode. Een echte keygen hoeft niet illegaal te zijn, maar een keygen is illegaal en dus verboden als het gaat om een programma dat ontsleuteld moet worden waarop de auteur het auteursrecht nog heeft. Als het auteursrecht is verlopen, is de desbetreffende keygen niet (meer) illegaal, omdat iedereen de dan aan het publiek domein vervallen software mag gebruiken. Keygens zijn altijd toegewijde programma's. Dit betekent dat je een keygen niet voor alle software ter wereld kunt gebruiken, maar slechts voor de bedoelde software.

## Werking

Veel software vraagt enkel tijdens de installatie om een licentiecode. De installatiesoftware past een algebraïsche functie op de licentiecode toe om deze te controleren. Zo kan dit algoritme bijvoorbeeld definiëren dat de licentiecode 5 cijfers moet bevatten die als controlecijfer 25 hebben, en dat er 3-5 letters moeten zijn die, wanneer ze worden omgezet in hun numerieke equivalenten, een controlesom van 42 hebben.
Om een keygen te maken wordt er gebruikgemaakt van een disassembler die naar de assembler code van het programma kijkt door ofwel de software zelf ofwel de installer te bekijken. Wanneer er toegang is tot de programmacode van het programma is het niet moeilijk om de subprogramma's die verantwoordelijk zijn voor de verificatie van de licentiecode terug te vinden. Met deze kennis kan men het algoritme namaken dat gebruikt wordt om geldige licentiecodes te maken (reverse engineering). Dit algoritme wordt dan geïmplementeerd in de keygen.
Het probleem met deze methode is dat als het bedrijf een database heeft met alle geldige licentiecodes, je toegang moet hebben tot de database om deze licentiecode geldig te kunnen maken.

## Problemen met keygens

Naast de ethische en de juridische aspecten spelen nog twee problemen bij het gebruik van keygens: productactivatie en online controle van de licentiecode.
De licentiecodes die gegenereerd zijn met een keygenerator kunnen mogelijk niet werken met software dat internet gebruikt (zoals voor software updates). Dit is omdat de gebruiker elke keer zijn licentiecodes moet verifiëren wanneer de software verbinding maakt met de server en de licentiecode ongeldig kan zijn door verschillende redenen.
Een reden kan zijn dat de cracker mogelijk het originele algoritme verkeerd geïnterpreteerd heeft waardoor een licentiecode gegenereerd werd die "goed genoeg" was om de software te kunnen installeren, maar niet volledig in orde zodat niet alle toekomstig gegenereerde licentiecodes juist zullen zijn.
Een andere reden kan zijn dat de softwareontwikkelaars alleen licentiecodes aanvaarden waarvan ze weten dat ze werden verstrekt bij de verkoop van hun software of ze gebruiken een online registratie die een voor de software juiste licentiecode toch niet aanvaard.
Als derde reden kan er een tweede, niet gepubliceerd, algoritme zijn dat door de makers gebruikt wordt om online de licentiecode te controleren. De software zelf heeft geen weet van dit extra algoritme en accepteert dus meer sleutels dan de eigenlijke geldige sleutels. Bij het vorige voorbeeld kan het extra algoritme zijn dat de tekens 0, 7, 9, C en K nooit toegestaan zijn.
Als vierde reden kan een bedrijf ophouden met bestaan door een faillissement. In dat geval is er geen ondersteuning meer en om wat aan het programma te hebben , is een juiste keygen voor dat programma zelfs legaal geworden als de auteursrechten op het eigenlijke programma is verlopen.
Een laatste reden (vooral gebruikt bij spelletjes met online hulp) is dat de keygen een geldige licentiecode maakt, maar dat de licentiecode al in gebruik is door een persoon die hem legaal gebruikt of door iemand anders die van zijn keygen dezelfde licentiecode kreeg dit is op te lossen door nog een keer op 'generate' te klikken. Dan krijgt men een nieuwe code. Dit maakt dat het bijna altijd mogelijk is een goede licentiecode te vinden, omdat er zo veel mogelijke codes zijn, die allemaal online hun key gebruiken. Door dit probleem zijn er gebruikers die hun licentiecodes ruilen als ze de software niet meer willen gebruiken.
Licentiecodes voor massively multiplayer online games (MMOG's) zijn verschillend; meestal is elke licentiecode gegenereerd door de verkoper en bij het product verstrekt zodanig dat de licentiecode niet gewoon zichtbaar is (zoals bij een krasbiljet). Deze licentiecodes worden meestal uniek gelinkt aan een account van een speler wanneer de licentiecode gebruikt wordt en dan worden ze op "gebruikt" gezet in de database zodat ze niet nogmaals gebruikt kunnen worden. Door gebruik te maken van deze methode zijn MMOG's meestal geen slachtoffer van piraterij.

## Oplossingen door softwareontwikkelaars

Softwareontwikkelaars hebben geprobeerd deze piraterij te voorkomen door productactivatie in te voeren via internet of telefoon. Nieuwe keygens hebben ook al de mogelijkheid deze activatie te omzeilen. Sommige softwareontwikkelaars (zoals Adobe) gebruiken een telefoonactivatie waarbij je een speciale code moet geven als je belt. Deze nieuwe keygens hebben de mogelijkheid om deze code in te geven en het antwoord op de code terug te geven. Andere ontwikkelaars hebben geen productactivatie ingevoerd maar proberen het moeilijker te maken om het algoritme terug te vinden. Er zijn ook ontwikkelaars die hun software enkel laten werken als hun USB-stick aangesloten is maar ook dat kan softwarematig omzeild worden.