El ataque Coppersmith describe una clase de ataques criptográficos a la clave pública del criptosistema RSA basados en el método Coppersmith . La peculiaridad de usar este método para ataques RSA incluye casos en los que el exponente público es pequeño o cuando la clave privada es parcialmente conocida.
La clave pública del criptosistema RSA es un par de números naturales , donde es el producto de dos números primos y , y el número es un exponente público. Un número entero ( , donde es la función de Euler de ) coprima con valor . Por lo general , los números primos se toman como calidad y contienen una pequeña cantidad de bits individuales en notación binaria, por ejemplo, los números primos de Fermat 17, 257 o 65537.
La clave secreta se determina a través del exponente privado . El número es multiplicativamente inverso al número módulo , es decir, el número satisface la relación:
.
El par se publica como una clave pública RSA ( ing . RSA public key ), y el par desempeña el papel de una clave privada RSA ( ing . RSA private key ) y se mantiene en secreto.
Sea y un polinomio normalizado de grado . Deje , . Entonces, dado el par, el atacante efectivamente encontrará que todos los enteros son satisfactorios . El tiempo de ejecución está determinado por la ejecución del algoritmo LLL en una red de dimensión , donde . [2]
PruebaSea un número natural , que definiremos más adelante. definamos
Usamos los polinomios para y como base de nuestra red . Por ejemplo, cuando y obtenemos una matriz reticular dividida por filas:
,
donde "—" denota elementos fuera de la diagonal distintos de cero cuyo valor no afecta al determinante . El tamaño de esta red es , y su determinante se calcula de la siguiente manera:
Requerimos eso . esto implica
que se puede simplificar a
,
donde y para todos . Si tomamos , entonces obtenemos a, por lo tanto, y . En particular, si queremos resolver para un , es suficiente tomar , donde . [3]
Supongamos que un remitente envía el mismo mensaje en forma encriptada a un cierto número de personas , cada una de las cuales usa el mismo pequeño exponente de codificación , digamos , y diferentes pares , y . El remitente cifra el mensaje utilizando la clave pública de cada usuario y lo envía al destinatario correspondiente. Entonces, si el adversario escucha el canal de transmisión y recopila los textos cifrados transmitidos , entonces podrá recuperar el mensaje .
Prueba [4]Supongamos que el enemigo interceptó y , dónde . Suponemos que son primos relativos , de lo contrario el máximo común divisor distinto de la unidad significaba encontrar un divisor de uno de . Aplicando el teorema chino del resto a y obtenemos , tal que , que tiene el valor . Sin embargo, sabiendo que , obtenemos . Por lo tanto , es decir, el adversario puede descifrar el mensaje tomando la raíz cúbica de .
Para recuperar un mensaje con cualquier valor del exponente de codificación abierta , es necesario que el adversario intercepte los textos cifrados .
Suponga una clave pública RSA , donde la longitud es -bits. Tomemos mucho . Deje que el mensaje no sea más que bits de largo. Definamos and , donde y son enteros distintos , y y .Si el adversario recibe ambos cifrados de (pero no recibe o ), entonces puede recuperar el mensaje de manera efectiva .
Prueba [2]Definamos y . Sabemos que cuando , estos polinomios tienen una raíz común. En otras palabras, esta es la raíz del "resultante" . grado con mayor frecuencia . Además, . Por lo tanto, es una raíz de módulo pequeño , y el adversario puede encontrarla eficientemente usando el teorema de Coppersmith . Una vez conocido, el ataque de Franklin-Reiter puede usarse para cubrir , por lo tanto, y .