Las primitivas criptográficas son algoritmos criptográficos de bajo nivel bien establecidos que se utilizan con frecuencia para crear protocolos criptográficos para sistemas de seguridad informática . [1] Estas rutinas incluyen, entre otras, funciones hash unidireccionales y funciones de cifrado .
Razón fundamental
Al crear sistemas criptográficos , los diseñadores utilizan primitivos criptográficos como sus bloques de construcción más básicos. Por este motivo, los primitivos criptográficos están diseñados para realizar una tarea muy específica de una manera definida con precisión y altamente confiable.
Dado que los primitivos criptográficos se utilizan como bloques de construcción, deben ser muy fiables, es decir, funcionar de acuerdo con sus especificaciones. Por ejemplo, si una rutina de cifrado afirma que sólo se puede descifrar con X número de operaciones de la computadora, y se descifra con significativamente menos de X operaciones, entonces ese primitivo criptográfico ha fallado. Si se descubre que un primitivo criptográfico falla, casi todos los protocolos que lo utilizan se vuelven vulnerables. Dado que crear rutinas criptográficas es muy difícil y probar su fiabilidad lleva mucho tiempo, esencialmente nunca es sensato (ni seguro) diseñar un nuevo primitivo criptográfico 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.
- Diseñar un nuevo primitivo criptográfico es una tarea que requiere mucho tiempo y es muy propensa a errores, incluso para 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 por la comunidad de criptólogos, incluso si una rutina criptográfica parece buena desde el punto de vista del diseño, aún puede contener errores. Superar con éxito dicho escrutinio brinda cierta confianza (de hecho, hasta ahora, la única confianza) de que el algoritmo es lo suficientemente seguro para su uso; por lo general, no hay pruebas de seguridad disponibles para primitivos criptográficos.
Los primitivos criptográficos son uno de los componentes básicos de todo criptosistema, por ejemplo, TLS , SSL , SSH , etc. Los diseñadores de criptosistemas, al no estar en condiciones de demostrar definitivamente su seguridad, deben considerar seguros los primitivos que utilizan. La elección del mejor primitivo disponible para su uso en un protocolo suele proporcionar la mejor seguridad disponible. Sin embargo, es posible que existan debilidades en la composición de cualquier criptosistema y es responsabilidad del diseñador evitarlas.
Combinación de primitivas criptográficas
Los primitivos criptográficos no son sistemas criptográficos, ya que son bastante limitados por sí mismos. Por ejemplo, un algoritmo de cifrado simple no proporcionará ningún mecanismo de autenticación ni ninguna comprobación explícita de la integridad del mensaje. Solo cuando se combinan en protocolos de seguridad se puede satisfacer 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 manipulaciones (es decir, es confidencial y su integridad está protegida ), se puede utilizar una rutina de codificación, como DES , y una rutina de 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, las inseguridades en los criptosistemas) 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 usan, 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. [ cita requerida ] Hay algunas propiedades básicas que se pueden verificar con métodos automatizados, como la lógica BAN . Incluso hay 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. Se puede ver un ejemplo ilustrativo, para un sistema real, en la página de noticias sobre vulnerabilidades de OpenSSL aquí.
Primitivos de uso común
- Función hash unidireccional , a veces también llamada función de compresión unidireccional : calcula un valor hash reducido para un mensaje (por ejemplo, SHA-256 )
- Criptografía de clave simétrica : calcula un texto cifrado decodificable con la misma clave utilizada para codificar (por ejemplo, AES )
- Criptografía de clave pública : calcula un texto cifrado decodificable con una clave diferente utilizada para codificar (por ejemplo, RSA )
- Firmas digitales : confirman el autor de un mensaje
- Red mixta : reúne las comunicaciones de muchos usuarios para anonimizar quién las envía
- Recuperación de información privada : obtenga información de la base de datos sin que el servidor sepa qué elemento se solicitó
- Esquema de compromiso : permite comprometerse con un valor elegido manteniéndolo oculto para los demás, con la capacidad de revelarlo más tarde.
- Generador de números pseudoaleatorios criptográficamente seguro
Véase también
- Categoría:Primitivas criptográficas : una lista de primitivas criptográficas
- Agilidad criptográfica
- Función de punto distribuido
Referencias
- ^ "Primitiva criptográfica - Glosario CSRC". csrc.nist.gov . Consultado el 19 de septiembre de 2021 .
- 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 introductorio sobre criptografía, disponible gratuitamente para programadores de todas las edades y niveles de habilidad.