Primitiva criptográfica - Cryptographic primitive

Las primitivas criptográficas sonalgoritmos criptográficos de bajo nivel bien establecidosque se utilizan con frecuencia para crear protocolos criptográficos parasistemas de seguridad informática . Estas rutinas incluyen, pero no se limitan a, funciones hash unidireccionales y funciones de cifrado .

Razón fundamental

Al crear sistemas criptográficos , los diseñadores utilizan primitivas criptográficas como sus bloques de construcción más básicos. Debido a esto, las primitivas criptográficas están diseñadas para realizar una tarea muy específica de una manera definida con precisión y altamente confiable.

Dado que las primitivas criptográficas se utilizan como bloques de construcción, deben ser muy fiables, es decir, funcionar de acuerdo con su especificación. Por ejemplo, si un reclamaciones de rutina de cifrado que se puede romper solamente con X número de operaciones de computadora, y se rompen con significativamente menos de X operaciones, luego de que criptográfica primitiva ha fallado. Si se descubre que una primitiva criptográfica falla, casi todos los protocolos que la utilizan se vuelven vulnerables. Dado que crear rutinas criptográficas es muy difícil y probarlas para que sean confiables lleva mucho tiempo, esencialmente nunca es sensato (ni seguro) diseñar una nueva primitiva criptográfica que se adapte a las necesidades de un nuevo sistema criptográfico. Las razones incluyen:

  • Es posible que el diseñador no sea competente en las consideraciones matemáticas y prácticas involucradas en las primitivas criptográficas.
  • El diseño de una nueva primitiva criptográfica requiere mucho tiempo y es muy propenso a errores, incluso para los expertos en la materia.
  • Dado que los algoritmos en este campo no solo deben estar bien diseñados, sino que también deben ser probados bien por la comunidad de criptólogos, incluso si una rutina criptográfica se ve bien desde el punto de vista del diseño, podría contener errores. Resistir con éxito tal escrutinio da cierta confianza (de hecho, hasta ahora, la única confianza) de que el algoritmo es lo suficientemente seguro para su uso; Las pruebas de seguridad para primitivas criptográficas generalmente no están disponibles.

Las primitivas criptográficas son similares en algunos aspectos a los lenguajes de programación . Un programador de computadoras rara vez inventa un nuevo lenguaje de programación mientras escribe un nuevo programa; en su lugar, utilizarán uno de los lenguajes de programación ya establecidos para programar .

Las primitivas criptográficas son uno de los componentes básicos de todo sistema criptográfico, por ejemplo, TLS , SSL , SSH , etc. Los diseñadores de sistemas criptográficos , al no estar en condiciones de demostrar definitivamente su seguridad, deben tomar las primitivas que utilizan como seguras. La elección de la mejor primitiva disponible para su uso en un protocolo suele proporcionar la mejor seguridad disponible. Sin embargo, las debilidades de composición son posibles en cualquier sistema de cifrado y es responsabilidad del diseñador (s) evitarlas.

Combinando primitivas criptográficas

Las primitivas criptográficas, por sí mismas, son bastante limitadas. No pueden considerarse, propiamente, un sistema criptográfico. Por ejemplo, un algoritmo de cifrado simple no proporcionará ningún mecanismo de autenticación ni ninguna verificación explícita de la integridad del mensaje. Solo cuando se combinan en protocolos de seguridad , se puede abordar más de un requisito de seguridad. Por ejemplo, para transmitir un mensaje que no solo está codificado, sino que también está protegido contra modificaciones (es decir, es confidencial y está protegido por integridad ), se puede usar una rutina de codificación, como DES , y una rutina hash como SHA-1 en combinación. Si el atacante no conoce la clave de cifrado, no puede modificar el mensaje de modo que los valores de resumen del mensaje sean válidos.

La combinación de primitivas criptográficas para crear un protocolo de seguridad es en sí misma una especialización completa. La mayoría de los errores explotables (es decir, inseguridades en los sistemas criptográficos) no se deben a errores de diseño en las primitivas (suponiendo siempre que se eligieron con cuidado), sino a la forma en que se utilizan, es decir, un mal diseño de protocolo y una implementación defectuosa o no lo suficientemente cuidadosa. . El análisis matemático de protocolos, en el momento de escribir este artículo, no está maduro. Hay algunas propiedades básicas que se pueden verificar con métodos automatizados, como la lógica BAN . Incluso existen métodos para la verificación completa (por ejemplo, el cálculo SPI ) pero son extremadamente engorrosos y no se pueden automatizar. El diseño de protocolos es un arte que requiere un conocimiento profundo y mucha práctica; incluso entonces los errores son comunes. Un ejemplo ilustrativo, para un sistema real, se puede ver en la página de noticias sobre vulnerabilidades de OpenSSL aquí .

Primitivas de uso común

Ver también

Referencias

  • Levente Buttyán, István Vajda: Kriptográfia és alkalmazásai (Criptografía y sus aplicaciones), Typotex 2004, ISBN  963-9548-13-8
  • Menezes, Alfred J: Manual de criptografía aplicada, CRC Press, ISBN  0-8493-8523-7 , octubre de 1996, 816 páginas.
  • Crypto101 es un curso de introducción a la criptografía, disponible gratuitamente para programadores de todas las edades y niveles de habilidad.