Tema 48: Combinatoria aplicada a criptografía y seguridad

Comprender cómo el conteo de posibilidades influye en la protección de claves, contraseñas y comunicaciones.

1. Combinatoria y seguridad

La seguridad informática depende, entre otros factores, de que un atacante no pueda probar todas las claves posibles en un tiempo razonable.

La combinatoria permite calcular el tamaño del espacio de claves y analizar cómo cambia al modificar la longitud, el alfabeto o las restricciones.

2. Espacio de contraseñas

Si una contraseña tiene longitud n y cada posición puede contener uno de k símbolos, permitiendo repeticiones, existen:

kn contraseñas posibles.

Con 10 dígitos y una longitud de 6, hay 106 códigos posibles. Aumentar una posición multiplica el espacio por k.

3. Símbolos permitidos

El tamaño del alfabeto puede incluir letras, números y símbolos especiales. Si se usan 26 letras minúsculas, 26 mayúsculas, 10 dígitos y 10 símbolos, el alfabeto tiene 72 posibilidades por posición.

El conteo debe reflejar las reglas reales: si se exige al menos un dígito, no alcanza con aplicar directamente kn; hay que contar y excluir las cadenas que no cumplen la condición.

4. Contraseñas sin repetición

Si no se permite repetir símbolos, la cantidad de cadenas de longitud n tomadas de un alfabeto de k símbolos es:

V(k, n) = k(k - 1)(k - 2) ... (k - n + 1)

En muchos sistemas sí se permiten repeticiones, por lo que esta fórmula debe utilizarse solo cuando la regla esté explícitamente presente.

5. Condiciones mediante complemento

Para contar contraseñas que contienen al menos un dígito, se puede restar el caso contrario:

Total - contraseñas sin dígitos

Si hay k símbolos totales y l símbolos que no son dígitos, el resultado es kn - ln.

Con varias condiciones puede ser necesario aplicar inclusión y exclusión.

6. Fuerza bruta

Un ataque por fuerza bruta prueba sistemáticamente candidatos hasta encontrar una clave válida. El conteo combinatorio estima cuántos candidatos debe recorrer en el peor caso y, en promedio, aproximadamente la mitad.

La velocidad de prueba, la longitud de la clave y el tamaño del alfabeto determinan el tiempo necesario para recorrer el espacio.

7. Tiempo estimado de búsqueda

Si existen N claves y se prueban R candidatos por segundo, el peor tiempo aproximado es:

Tiempo = N / R

Para un cálculo promedio bajo un orden aleatorio, el tiempo esperado es aproximadamente N/(2R). Es una estimación matemática, no una garantía sobre un sistema real.

8. Entropía combinatoria

La entropía de un espacio uniforme de N posibilidades se expresa en bits como:

H = log2(N)

Para un espacio kn, H = n log2(k).

La entropía permite comparar espacios de claves con diferentes longitudes y alfabetos.

9. Claves criptográficas

Una clave formada por b bits tiene 2b valores posibles. La seguridad ideal frente a una búsqueda exhaustiva depende de que el espacio sea suficientemente grande y de que las claves se generen de forma impredecible.

No basta con escribir una clave larga si sus valores se eligen con patrones fáciles de anticipar.

10. Colisiones

Una colisión ocurre cuando dos entradas producen el mismo resultado en una función que tiene menos valores posibles que entradas. El principio del palomar garantiza que las colisiones aparecen cuando se supera la capacidad de salida.

El problema del cumpleaños muestra que una colisión puede ser probable mucho antes de haber usado todas las posibilidades.

11. Paradoja del cumpleaños

Con 365 posibles días, la cantidad de pares entre n personas es C(n, 2). Cada par puede coincidir, por lo que la probabilidad de al menos una coincidencia aumenta rápidamente.

Este razonamiento se aplica a identificadores, hashes y espacios de valores donde se buscan dos elementos con la misma salida.

12. Salting y espacio efectivo

Un valor aleatorio adicional, conocido como salt, modifica el cálculo de una contraseña antes de almacenarla. No aumenta mágicamente la cantidad de contraseñas elegibles, pero evita que una misma contraseña produzca siempre el mismo resultado y dificulta reutilizar tablas precalculadas.

La combinatoria analiza posibilidades; la seguridad completa también depende de protocolos, almacenamiento, límites de intentos y generación aleatoria.

13. Ejemplo de conteo

La siguiente función calcula el tamaño de un espacio de cadenas con repetición y su entropía aproximada.

function espacioDeClaves(alfabeto, longitud) {
  const cantidad = Math.pow(alfabeto, longitud);
  const bits = longitud * Math.log2(alfabeto);
  return { cantidad: cantidad, bits: bits };
}

console.log(espacioDeClaves(10, 6));

14. Simulación: tamaño del espacio de claves

Selecciona un alfabeto y una longitud para comparar la cantidad de claves posibles, la entropía y un tiempo aproximado de búsqueda.

Configura los valores y pulsa «Analizar espacio».
MedidaResultado

15. Buenas prácticas

Para aumentar el espacio efectivo se deben elegir claves suficientemente largas, usar fuentes aleatorias, evitar patrones previsibles y proteger los mecanismos de verificación.

Los cálculos combinatorios sirven para evaluar escenarios, pero no deben interpretarse como una autorización para probar credenciales o sistemas ajenos.

16. Resumen

La combinatoria permite medir espacios de contraseñas y claves, estimar búsquedas exhaustivas, calcular entropía y analizar colisiones. Las fórmulas de potencias, variaciones, complemento e inclusión-exclusión ayudan a modelar las restricciones de los sistemas de seguridad.