Las primitivas criptográficas son algoritmos criptográficos de bajo nivel bien establecidos que se utilizan con frecuencia para construir protocolos criptográficos para sistemas de seguridad informática . [ 1 ] 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 componentes básicos. Por ello, las primitivas criptográficas están diseñadas para realizar una tarea muy específica de forma precisa y altamente fiable.
Dado que las primitivas criptográficas se utilizan como bloques de construcción, deben ser muy fiables, es decir, funcionar según sus especificaciones. Por ejemplo, si una rutina de cifrado afirma ser vulnerable solo con X operaciones informáticas, y se descifra con muchas menos de X operaciones, entonces esa primitiva criptográfica 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 probar su fiabilidad lleva mucho tiempo, en esencia nunca es sensato (ni seguro) diseñar una nueva primitiva criptográfica para satisfacer 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 relacionadas con las primitivas criptográficas.
- Diseñar una nueva primitiva criptográfica es un proceso que consume 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 exhaustivamente por la comunidad de criptólogos, incluso si una rutina criptográfica parece buena desde el punto de vista del diseño, aún podría 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 se dispone de pruebas de seguridad para las primitivas criptográficas.
Las primitivas criptográficas son uno de los componentes básicos de todo criptosistema, como TLS , SSL , SSH , etc. Los diseñadores de criptosistemas, al no poder demostrar su seguridad de forma concluyente, deben considerar seguras las primitivas que utilizan. Elegir la mejor primitiva disponible para un protocolo suele proporcionar la mejor seguridad posible. Sin embargo, cualquier criptosistema puede presentar vulnerabilidades de composición, y es responsabilidad del diseñador evitarlas.
Combinación de primitivas criptográficas
Las primitivas criptográficas no constituyen sistemas criptográficos, ya que por sí solas son bastante limitadas. Por ejemplo, un algoritmo de cifrado básico no proporciona ningún mecanismo de autenticación ni ninguna comprobación explícita de la integridad del mensaje. Solo al combinarse en protocolos de seguridad se pueden abordar múltiples requisitos de seguridad. Por ejemplo, para transmitir un mensaje que no solo esté codificado, sino también protegido contra manipulaciones (es decir, que sea confidencial y con integridad garantizada ), se puede utilizar en combinación una rutina de codificación, como DES , y una rutina hash, como SHA-1 . Si el atacante desconoce la clave de cifrado, no podrá modificar el mensaje de forma que su resumen sea válido.
Combinar primitivas criptográficas para crear un protocolo de seguridad es, en sí mismo, 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 (siempre que se hayan elegido con cuidado), sino a la forma en que se utilizan, es decir, un mal diseño del protocolo y una implementación defectuosa o poco cuidadosa. El análisis matemático de protocolos, en el momento de escribir esto, no está lo suficientemente desarrollado. 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 así, 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
- 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 : se calcula un texto cifrado decodificable con la misma clave utilizada para codificarlo (por ejemplo, AES ).
- Criptografía de clave pública : se calcula un texto cifrado que se puede decodificar con una clave diferente a la utilizada para la codificación (por ejemplo, RSA ).
- Firmas digitales : confirman la autoría de un mensaje.
- Red mixta : combina las comunicaciones de muchos usuarios para anonimizar qué proviene de quién.
- 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 a los demás, con la posibilidad de revelarlo posteriormente.
- Generador de números pseudoaleatorios criptográficamente seguro
- Prueba de conocimiento cero no interactiva
- La divulgación condicional de secretos permite que dos partes que no se comunican entre sí coordinen la revelación de un secreto a un árbitro.
- El paso de mensajes simultáneo privado permite que dos o más partes que no se comunican entre sí y que poseen los datos de entrada de una función permitan a un árbitro calcular la función, pero sin conocer dichos datos.
Véase también
- Categoría: Primitivas criptográficas – una lista de primitivas criptográficas
- Agilidad criptográfica
- Función de punto distribuido
Referencias
- ↑ "Primitivo criptográfico - 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-7Octubre 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.
- Primitivas criptográficas