En términos matemáticos, si f es una función de trampilla, entonces existe cierta información secreta t , tal que dada f ( x ) y t , es fácil calcular x . Consideremos un candado y su llave. Es trivial cambiar el candado de abierto a cerrado sin usar la llave, empujando el grillete en el mecanismo de la cerradura. Sin embargo, para abrir el candado fácilmente se requiere el uso de la llave. Aquí la llave t es la trampilla y el candado es la función de la trampilla.
Un ejemplo de una trampa matemática simple es "6895601 es el producto de dos números primos. ¿Cuáles son esos números?" Una solución típica de " fuerza bruta " sería tratar de dividir 6895601 por muchos números primos hasta encontrar la respuesta. Sin embargo, si a uno le dicen que 1931 es uno de los números, puede encontrar la respuesta ingresando "6895601 ÷ 1931" en cualquier calculadora. Este ejemplo no es una función trampa robusta - las computadoras modernas pueden adivinar todas las respuestas posibles en un segundo - pero este problema de muestra podría mejorarse utilizando el producto de dos primos mucho más grandes .
Las funciones de trampilla adquirieron importancia en criptografía a mediados de la década de 1970 con la publicación de técnicas de cifrado asimétrico (o de clave pública) por parte de Diffie , Hellman y Merkle . De hecho, Diffie y Hellman (1976) acuñaron el término. Se habían propuesto varias clases de funciones y pronto se hizo evidente que las funciones de trampilla son más difíciles de encontrar de lo que se pensaba inicialmente. Por ejemplo, una sugerencia temprana fue utilizar esquemas basados en el problema de suma de subconjuntos . Esto resultó ser bastante inadecuado.
A partir de 2004 [actualizar], las familias de funciones de trampilla más conocidas son las familias de funciones RSA y Rabin . Ambas se escriben como exponenciación módulo un número compuesto y ambas están relacionadas con el problema de la factorización prima .
No se sabe que las funciones relacionadas con la dureza del problema del logaritmo discreto (ya sea módulo un primo o en un grupo definido sobre una curva elíptica ) sean funciones trampa, porque no se conoce información de "trampa" sobre el grupo que permita el cálculo eficiente de logaritmos discretos.
Una puerta trampa en criptografía tiene el significado específico mencionado anteriormente y no debe confundirse con una puerta trasera (con frecuencia se usan indistintamente, lo cual es incorrecto). Una puerta trasera es un mecanismo deliberado que se agrega a un algoritmo criptográfico (por ejemplo, un algoritmo de generación de pares de claves, un algoritmo de firma digital, etc.) o a un sistema operativo, que permite que una o más partes no autorizadas eludan o subviertan la seguridad del sistema de alguna manera.
Definición
Una función trampa es una colección de funciones unidireccionales { f k : D k → R k } ( k ∈ K ), en la que todos K , D k , R k son subconjuntos de cadenas binarias {0, 1} * , que satisfacen las siguientes condiciones:
Existe un algoritmo de muestreo de tiempo polinomial probabilístico (PPT) Gen st Gen(1 n ) = ( k , t k ) con k ∈ K ∩ {0, 1} n y t k ∈ {0, 1} * satisface | t k | < p ( n ), en el que p es algún polinomio. Cada t k se denomina trampilla correspondiente a k . Cada trampilla se puede muestrear de manera eficiente.
Dado un valor de entrada k , también existe un algoritmo PPT que genera x ∈ D k . Es decir, cada D k se puede muestrear de manera eficiente.
Para cualquier k ∈ K , existe un algoritmo PPT que calcula correctamente f k .
Para cualquier k ∈ K , existe un algoritmo PPT A st para cualquier x ∈ D k , sea y = A ( k , f k ( x ), t k ), y entonces tenemos f k ( y ) = f k ( x ). Es decir, dada la trampilla, es fácil invertir.
Para cualquier k ∈ K , sin trampilla t k , para cualquier algoritmo PPT, la probabilidad de invertir correctamente f k (es decir, dado f k ( x ), encontrar una preimagen x' tal que f k ( x' ) = f k ( x )) es insignificante. [3] [4] [5]
Si cada función en la colección anterior es una permutación unidireccional, entonces la colección también se denomina permutación de trampa . [6]
Ejemplos
En los dos ejemplos siguientes, siempre asumimos que es difícil factorizar un número compuesto grande (ver Factorización de enteros ).
Si se conoce la factorización de , entonces se puede calcular . Con esto se puede calcular la inversa de , y luego, dado , podemos encontrar . Su dureza se desprende del supuesto RSA. [7]
Supuesto de residuo cuadrático de Rabin
Sea un número compuesto grande tal que , donde y son primos grandes tales que , y se mantienen confidenciales para el adversario. El problema es calcular dados tales que . La trampa es la factorización de . Con la trampa, las soluciones de z se pueden dar como , donde . Consulte el teorema del resto chino para obtener más detalles. Tenga en cuenta que dados los primos y , podemos encontrar y . Aquí las condiciones y garantizan que las soluciones y pueden definirse bien. [8]
^ Bellare, M (junio de 1998). "Funciones de trampa de muchos a uno y su relación con los criptosistemas de clave pública". Avances en criptología — CRYPTO '98 . Apuntes de clase en informática. Vol. 1462. págs. 283–298. doi :10.1007/bfb0055735. ISBN 978-3-540-64892-5.S2CID215825522 .
^ Notas del Pasista, definición 56.1
^ Notas de la conferencia de Goldwasser, definición 2.16
^ Ostrovsky, págs. 6-10, definición 11
^ Notas de Pass, def 56.1; def 7 de Dodis, conferencia 1.
^ Notas de la conferencia de Goldwasser, 2.3.2; notas de Lindell, pág. 17, Ej. 1.