Una clave de producto típica es solo un gran número representado como una serie de caracteres alfanuméricos.
Podemos considerar que una clave de producto como G7DJ-JS3A-C83A es un número base-36, que se representaría como 2132915801149434358 en decimal. (Las claves de producto reales probablemente no usarán los 36 caracteres alfanuméricos, ya que existe la posibilidad de confundir I y L y 1, o O y 0, al leer el número de la etiqueta)
En los viejos tiempos, el instalador tomaba ese número y hacía algo de lógica de validación en la computadora cliente (digamos una suma de comprobación simple). Esta lógica es necesariamente lo más opaca posible, ya que toda la seguridad del mecanismo de licencias se basa en esto. Sin embargo, no importa lo complicado que sea, es susceptible de ser diseñado mediante ingeniería inversa, lo que permite a las personas crear generadores de claves [1]: programas que buscan en el espacio de posibles claves y generan uno que pasará la prueba.
En la era de Internet, a las claves de producto generalmente solo se les da una rápida comprobación de estado en la computadora cliente antes de ser enviadas al servidor del editor para su verificación. Esto permite al editor imponer más restricciones, como las licencias de una sola máquina.
- ¿Cuáles son / fueron sus principales preguntas sobre Cloud Computing?
- Firewalls: Mi lugar de trabajo bloquea todos los sitios .com, pero no ha bloqueado los sitios con direcciones .net. ¿Cómo puedo evitar esta restricción y ver los sitios de transmisión de video?
- ¿Qué es la computación verde?
- ¿En qué se diferencian los estudiantes de CSE de los otros departamentos de las empresas de TI?
- ¿Qué lenguajes de programación se deben aprender para tener éxito en el mundo de TI (tecnología de la información)?
En este caso, los generadores de claves son menos efectivos, ya que el editor mantiene una lista de todas las claves de producto válidas que hayan emitido. Aunque los números podrían seguir siendo conformes a una regla simple para propósitos de validación, las claves que realmente se han emitido serían un pequeño subconjunto de las claves numéricamente “válidas”. Para darle una idea, una clave de producto típica de 25 caracteres tiene alrededor de [math] 33 ^ {25}> 10 ^ {37} [/ math] valores posibles. Supongamos que su lógica de validación simple (visible para el cliente) elimina el 80% de las del espacio de claves potencial; todavía tiene alrededor de [math] 2 \ times 10 ^ {35} [/ math] valores que son “válidos y posiblemente emitidos”. Incluso si vendió 10 mil millones ([math] 10 ^ {10} [/ math]) copias de su software, las posibilidades de que alguien adivine una de las 10 mil millones de claves ‘válidas y emitidas’ están en algún lugar alrededor de 0.00000000000000000000000005%.
[1] O, lo que es peor, localice el bit de código que realiza la validación y, en lugar de intentar realizar ingeniería inversa, solo edítelo para que siempre devuelva una respuesta de “válido”.