La mayoría de productos usan algoritmos personalizados por sus equipos de programadores. Un algoritmo básicamente es una ecuación matemática, donde tú le metes ciertos valores y tras una operación matemática te da un resultado.
En este caso los valores iniciales suelen ser tus datos (como tu nombre, correo, compañia, etc) y el resultado es la clave. Tanto la compañía tiene acceso al algoritmo como cada programa lo trae. Cuando compras el programa ellos usan alguno de tus datos para calcularte una calve y te la dan. Luego el programa te pide tus datos y la clave, y simplemente vuelve a calcularla con los datos que metiste y la compara con la clave que probaste, si no coinciden no se activa o se registra.
Ese es básicamente el funcionamiento. Los crackers que generan los "keygen" lo que hacen es buscar en el programa (digamos que desarmándolo) cuál es el algoritmo que usa, para luego copiarlo. Obviamente la parte del programa que lo contiene suele ser la que más protege cada compañía con cosas como una encriptación extra y así).
La otra forma es inferirla digamos que por "fuerza bruta": si tu tienes los datos de entrada y el resultado para los mismos, y juntas muchas de estas combinaciones, tras un análisis matemático se podría inferir cuál es el algoritmo. pero obviamente esta opción suele ser la más difícil.
Obviamente algunos programas traen otras protecciones antipiratería y así.