Hay un sentido en el que puede definir la fuerza de un algoritmo de cifrado particular¹: en términos generales, la fuerza es el número de intentos que deben realizarse para romper el cifrado. Más precisamente, la fortaleza es la cantidad de cómputo que se necesita hacer para encontrar el secreto. Idealmente, la fuerza de un algoritmo es el número de intentos de fuerza bruta que deben realizarse (ponderados por la complejidad de cada intento, o reducidos si algún tipo de paralelización permite varios intentos de compartir parte del trabajo); a medida que mejoran los ataques al algoritmo, la fuerza real disminuye.
Es importante darse cuenta de que el "algoritmo de cifrado particular" incluye considerar un tamaño de clave específico. Es decir, no está lanzando RSA contra AES, sino RSA de 1024 bits (con un modo de relleno específico) con AES-256 (con un modo de encadenamiento específico, IV, etc.). En ese sentido, puede preguntar: si tengo una copia de mis datos cifrados con el algoritmo A con valores dados de los parámetros P y Q (en particular el tamaño de la clave), y una copia cifrada con el algoritmo B con los parámetros P y R, entonces ¿Cuál de (A, Pval₁, Qval₁) y (B, Pval₂, Rval₂) es probable que se rompa primero?
En la práctica, muchos protocolos implican el uso de múltiples primitivas criptográficas. Diferentes primitivas tienen diferentes usos posibles, e incluso cuando varias primitivas pueden cumplir una función determinada, puede haber una que sea más adecuada que otras. Al elegir una primitiva criptográfica para un propósito determinado, el proceso de decisión es algo así:
- ¿Qué algoritmos pueden hacer el trabajo? → Puedo usar A o B o C.
- ¿Qué fuerza necesito? → Quiero 2 operaciones N , así que necesito el tamaño de clave L A para primitiva A, L B para primitiva B, L C para C primitiva
- Dadas mis restricciones (velocidad bruta, latencia, eficiencia de la memoria, ...), cuál de estos (L A -bit A o L B -bit B o L < sub> C -bit C) es mejor?
Por ejemplo, digamos que su requisito es un protocolo para intercambiar datos con una parte en la que no confía. Entonces, la criptografía simétrica no puede hacer el trabajo por sí sola: necesita alguna forma de compartir la clave. La criptografía asimétrica como RSA puede hacer el trabajo, si permite que las partes intercambien claves públicas por adelantado. (Esta no es la única posibilidad, pero no entraré en detalles aquí). Por lo tanto, puede elegir la longitud de la clave RSA que tenga la fuerza adecuada para su aplicación. Sin embargo, el RSA es lento y engorroso (por ejemplo, no hay protocolos estándar para aplicar el cifrado RSA a un flujo, principalmente porque nadie se ha molestado porque sería tan lento). Muchos protocolos comunes relacionados con la criptografía de clave pública lo utilizan solo para intercambiar un secreto de duración limitada: una clave de sesión para algún algoritmo de criptografía simétrica. Esto se conoce como cifrado híbrido . De nuevo, elige la longitud de la clave de sesión de acuerdo con la fuerza deseada. En este escenario, las dos primitivas involucradas tienden a tener la misma fuerza.
¹
La misma noción se aplica a otros usos de la criptografía, como la firma o el hash.