¿Qué diferencias interesantes hay entre la teoría y la práctica de la seguridad y la criptografía?
Por supuesto, lo más interesante serán ejemplos que sugieran nuevas vías para la investigación teórica basada en la experiencia práctica :).
Las respuestas pueden incluir (pero no están limitadas a):
- Ejemplos donde la teoría sugiere que algo es posible pero que nunca se usa en la práctica
- Ejemplos donde la teoría sugiere que algo es seguro que no es seguro en la práctica
- Los ejemplos de algo de uso práctico generalizado tienen poca teoría detrás.
...
Consideración
Si su respuesta es esencialmente de la forma "La teoría trata sobre los asintóticos, pero la práctica no lo es", entonces la teoría debería ser realmente central o la respuesta debería incluir ejemplos específicos donde la experiencia práctica en instancias del mundo real difiera de las expectativas basadas en la teoría
Un ejemplo que conozco: evaluación de circuito seguro. Muy poderoso en teoría, pero demasiado complicado para usarlo en la práctica, porque implicaría tomar su código, desenrollarlo en un circuito y luego realizar una evaluación segura de cada puerta de una en una.
fuente
Respuestas:
Oh chico, por dónde empezar.
El grande es definitivamente cajas negras. Los investigadores de criptomonedas se preocupan por cosas como el problema de desinstalación del Modelo aleatorio de Oracle. Los investigadores de seguridad están en el otro extremo y desean que todo se pueda utilizar como una caja negra, no solo funciones hash. Esta es una fuente constante de tensión.
Para ilustrar, si observa el análisis formal de los protocolos de seguridad, por ejemplo , la lógica BAN , verá que el cifrado simétrico se trata como un "cifrado de bloque ideal". Aquí hay una sutil distinción: la lógica BAN (y otras técnicas de análisis de protocolo) no pretenden ser pruebas de seguridad; más bien, son técnicas para encontrar fallas. Por lo tanto, no es estrictamente cierto que el modelo de cifrado ideal esté involucrado aquí. Sin embargo, es empíricamente cierto que la mayoría del análisis de seguridad tiende a limitarse al modelo formal, por lo que el efecto es el mismo.
Ni siquiera hemos hablado de practicantes todavía. Estos tipos generalmente ni siquiera tienen la menor idea de que las cripto primitivas no están destinadas a ser cajas negras, y dudo que esto vaya a cambiar alguna vez: décadas de intentar golpear esto en sus cabezas no ha hecho una diferencia.
Para ver qué tan grave es el problema, considere este aviso de seguridad relacionado con la falsificación de firma de API. El error se debe en parte al ataque de extensión de longitud en la construcción Merkle-Damgard (que es algo realmente muy básico) y afecta a Flickr, DivShare, iContact, Mindmeister, Myxer, RememberTheMilk, Scribd, Vimeo, Voxel, Wizehhive y Zoomr. Los autores señalan que esta no es una lista completa.
Creo que los practicantes merecen la mayor parte de la culpa de este triste estado de cosas. Por otro lado, tal vez los teóricos de la criptografía también necesiten repensar su posición. Su línea ha sido: "las cajas negras son imposibles de construir; ni siquiera lo vamos a intentar". A lo que digo, dado que está claro que sus construcciones se usarán (mal) como cajas negras de todos modos, ¿por qué no al menos intentar que estén lo más cerca posible de las cajas negras?
El artículo Merkle-Damgard Revisited es un gran ejemplo de lo que estoy hablando. Estudian la noción de seguridad de que "la función de hash de longitud arbitraria H debe comportarse como un oráculo aleatorio cuando el bloque de construcción de longitud fija se ve como un oráculo aleatorio o un cifrado de bloque ideal". Este tipo de investigación teórica tiene el potencial de ser muy útil en la práctica.
Ahora veamos su ejemplo de evaluación de circuitos. Ruego no estar de acuerdo con su razonamiento. No es como si tomaras un binario compilado y lo convirtieras ciegamente en un circuito. Más bien, aplicaría la evaluación de circuito solo a la función de comparación subyacente, que generalmente es bastante simple. Fairplay es una implementación de evaluación de circuitos. Un colega mío que trabajó con él me dice que es sorprendentemente rápido. Si bien es cierto que la eficiencia es un problema con la evaluación de circuitos (y sí sé de instancias del mundo real donde fue rechazada por este motivo), está lejos de ser un espectáculo espectacular.
La segunda razón por la que no estoy de acuerdo con usted es que si piensa en algunos de los escenarios típicos de la vida real en los que posiblemente desee llevar a cabo una evaluación de circuito ajeno, por ejemplo, cuando dos compañías están decidiendo si fusionar, los costos computacionales los involucrados son triviales en comparación con el esfuerzo humano general y el presupuesto.
Entonces, ¿por qué nadie usa la evaluación genérica de la función segura en la práctica? Gran pregunta Esto me lleva a mi segunda diferencia entre teoría y práctica: ¡la confianza realmente existe en la práctica! No todo debe hacerse en el modelo paranoico. El conjunto de problemas que la gente realmente quiere resolver usando cripto es mucho, mucho más pequeño de lo que imaginan los criptógrafos.
Conozco a alguien que comenzó una empresa que intentaba vender servicios de cómputo multiparte seguros a clientes empresariales. Adivina qué, nadie lo quería. La forma en que abordan estos problemas es firmar un contrato que especifique lo que puede y no puede hacer con los datos, y que destruirá los datos una vez que haya terminado de usarlos para el propósito previsto. La mayoría de las veces, esto funciona bien.
Mi último punto de diferencia entre teoría y práctica es sobre PKI. Los documentos de cifrado con frecuencia escriben una frase en alguna parte que dice "asumimos una PKI". Desafortunadamente, los certificados digitales para usuarios finales (a diferencia de los sitios web o empleados en un contexto corporativo, donde existe una jerarquía natural) nunca se materializaron. Este artículo clásico describe la hilaridad que se produce cuando le pides a personas normales que usen PGP. Me han dicho que el software ha mejorado mucho desde entonces, pero el diseño subyacente y los problemas arquitectónicos y las limitaciones humanas no son muy diferentes hoy en día.
No creo que los criptógrafos deberían hacer algo diferente como consecuencia de esta falta de una PKI del mundo real, excepto para ser conscientes del hecho de que limita la aplicabilidad del mundo real de los protocolos criptográficos. Lo tiré porque es algo que estoy tratando de arreglar.
fuente
La respuesta de Randomwalker es muy buena. Mi brecha favorita entre la teoría y la práctica es el modelo de oráculo aleatorio. Esto parece una heurística muy segura en la práctica (suponiendo que las personas no hagan algo estúpido y al menos hagan una extensión de longitud propiamente, ver también la respuesta de randomwalker) pero no tenemos ningún resultado teórico positivo al respecto. De hecho, todos los resultados teóricos sobre esta heurística son negativos. Creo que esta es una gran pregunta de investigación y espero que algún día se prueben algunos resultados positivos interesantes sobre este modelo.
Con respecto a la ofuscación hasta donde yo sé, incluso en la práctica, aunque es de uso generalizado, la ofuscación no se considera tan segura como el cifrado, y no se considera prudente usar la ofuscación para ocultar un secreto a largo plazo y muy sensible. (A diferencia del cifrado que usa el oráculo aleatorio, que las personas se sienten cómodas de usar para esto). Entonces, en ese sentido, la brecha entre la teoría y la práctica no es tan grande. (es decir, la ofuscación es un área enormemente interesante que estamos lejos de comprender tanto en teoría como en la práctica).
fuente
El cifrado homomórfico y la comunicación segura entre varias partes son dos de los grandes descubrimientos recientes en criptografía que aún no se han estudiado lo suficiente para que sean prácticos: los esfuerzos de investigación como PROCEED se están moviendo en esta dirección para identificar qué tipo de modelo de programación podríamos usar para escribir esto. tipo de cálculo, así como encontrar optimizaciones para los algoritmos criptográficos centrales que los hacen funcionar en un tiempo razonable. Esta es una ocurrencia bastante común en criptografía: comenzamos con algoritmos simples (comparativamente) que tardan mucho tiempo en ejecutarse, y luego los criptógrafos pasan años usando las matemáticas para optimizar los algoritmos cada vez más.
fuente
Ejemplos donde la teoría sugiere que algo es posible pero que nunca se usa en la práctica:
Es bastante fácil encontrar ejemplos de cosas que se resuelven en teoría, pero (1) son demasiado ineficientes para usar en la práctica o (2) a nadie le importa. Ejemplos: (1) pruebas genéricas de conocimiento cero, (2) firmas innegables. De hecho, mire cualquier conferencia de cifrado y al menos la mitad de los documentos probablemente caigan en una de estas categorías.
Ejemplos donde la teoría sugiere que algo es seguro que no es seguro en la práctica:
Esta pregunta es un poco vaga, por lo que no estoy seguro de si esto responde, pero hay muchos ejemplos de esquemas 'demostrablemente seguros' que se rompen en la práctica porque la definición de seguridad no coincidía con el escenario de implementación. Solo en los últimos años hubo ataques contra (variantes probables de) SSH e IPSec, entre otros.
Los ejemplos de algo de uso práctico generalizado tienen poca teoría detrás:
Supongo que te refieres al mundo de las criptomonedas, no al mundo de la seguridad general. Un buen ejemplo son las firmas DSS, que no tienen prueba de seguridad.
fuente
Hay muchas compañías comerciales que ofrecen soluciones de ofuscación binarias, y también hay varias soluciones de código abierto. Los métodos exactos para la ofuscación, por supuesto, se mantienen en secreto; El paradigma de ofuscación que prevalece en la industria es heurístico, por lo que conocer los algoritmos utilizados para ofuscar un binario en este contexto generalmente garantizará alguna ventaja en la desofuscación. La ofuscación en la industria se conoce como "seguridad a través de la oscuridad".
Existen enfoques teóricos para el problema de la ofuscación que formalizan los deseos de la industria, pero se basan en una noción de seguridad estrictamente más fuerte basada en la intratabilidad computacional (imagine reemplazar las pruebas de equivalencia de enteros y cadenas por pruebas de equivalencia de funciones unidireccionales). En particular, el estudio de la ofuscación de puntos composable se ha avanzado para tratar de resolver el problema de ofuscación interesante para la industria. Desafortunadamente, el modelo teórico más extendido para la ofuscación basado en un modelo inspirado en hardware a prueba de manipulaciones recibió un resultado de imposibilidad en 2001 por Barak et al en el documento " Sobre la (im) posibilidad de ofuscar programas ". (Desde entonces, otros modelos también han tenido resultados imposibles)
En este momento, la teoría de la ofuscación del programa está en un estado de cambio, que requiere un nuevo modelo (probablemente menos restrictivo). De hecho, el principal problema con la teoría es la falta de un modelo acordado (y, por lo tanto, de funcionarios formales). El reciente advenimiento del cifrado totalmente homomórfico puede proporcionar esa base (esto es puramente especulación por parte de este autor).
Para aclarar, la ofuscación coincide con su tercer ejemplo: "Los ejemplos de algo de uso práctico generalizado tienen poca teoría detrás". La ofuscación se usa ampliamente hoy tanto por la industria como por aquellos con propósitos más nefastos. La ofuscación en la industria no se basa actualmente en ninguna teoría rigurosa a pesar de los intentos.
fuente
Existe una brecha significativa incluso cuando se trata de primitivas básicas como los generadores pseudoaleatorios. Considere, por ejemplo, las funciones pseudoaleatorias. En la práctica, las personas usan cosas como AES , que difieren de los candidatos teóricos (Goldreich, Goldwasser, Micali; Naor, Reingold; etc.) en varias dimensiones: Primero, los parámetros son completamente diferentes, por ejemplo, AES puede tener una longitud de clave que es igual a la longitud de entrada , lo cual es desconocido en construcciones teóricas. Quizás lo más importante es que AES (y muchos otros cifrados de bloque) siguen el llamado paradigma de red de sustitución-permutación, que es bastante diferente de la forma en que funcionan las construcciones teóricas (por ejemplo, las mencionadas anteriormente).
Creo que lo anterior es un ejemplo, vea por ejemplo este documento con Eric Miles (del cual esencialmente se toma esta respuesta).
fuente