El principio de Kerckhoffs (también llamado desiderátum , suposición , axioma , doctrina o ley de Kerckhoffs ) de la criptografía fue enunciado por el criptógrafo de origen holandés Auguste Kerckhoffs en el siglo XIX. El principio sostiene que un criptosistema debe ser seguro, incluso si todo lo relacionado con el sistema, excepto la clave , es de conocimiento público. Este concepto es ampliamente aceptado por los criptógrafos, en contraste con la seguridad por oscuridad , que no lo es.
El principio de Kerckhoff fue formulado por el matemático estadounidense Claude Shannon como "el enemigo conoce el sistema", [1] es decir, "uno debe diseñar sistemas bajo el supuesto de que el enemigo se familiarizará inmediatamente con ellos". En esa forma, se llama máxima de Shannon .
Otra formulación del investigador y profesor estadounidense Steven M. Bellovin es:
En otras palabras, diseñe su sistema asumiendo que sus oponentes lo conocen en detalle. (Un ex funcionario del Centro Nacional de Seguridad Informática de la NSA me dijo que la suposición estándar allí era que el número de serie 1 de cualquier dispositivo nuevo era entregado al Kremlin.) [2]
La invención de la telegrafía cambió radicalmente las comunicaciones militares y aumentó drásticamente la cantidad de mensajes que debían protegerse del enemigo, lo que llevó al desarrollo de cifrados de campo que debían ser fáciles de usar sin grandes libros de códigos confidenciales propensos a ser capturados en el campo de batalla. [3] Fue este entorno el que condujo al desarrollo de los requisitos de Kerckhoffs.
Auguste Kerckhoffs fue profesor de lengua alemana en la École des Hautes Etudes Commerciales (HEC) de París. [4] A principios de 1883, el artículo de Kerckhoffs, La Cryptographie Militaire , [5] fue publicado en dos partes en el Journal of Military Science , en el que enunciaba seis reglas de diseño para cifrados militares . [6] Traducidos del francés, son: [7] [8]
Algunas reglas ya no son relevantes, dada la capacidad de las computadoras para realizar cifrados complejos. La segunda regla, conocida ahora como el principio de Kerckhoff , sigue siendo de importancia crítica. [9]
Kerckhoffs consideraba que la criptografía era un rival y una mejor alternativa a la codificación esteganográfica , que era común en el siglo XIX para ocultar el significado de los mensajes militares. Un problema con los esquemas de codificación es que se basan en secretos que están en manos de los humanos, como los "diccionarios" que revelan, por ejemplo, el significado secreto de las palabras. Los diccionarios de tipo esteganográfico, una vez revelados, comprometen permanentemente el sistema de codificación correspondiente. Otro problema es que el riesgo de exposición aumenta a medida que aumenta el número de usuarios que guardan los secretos.
En cambio, la criptografía del siglo XIX utilizaba tablas sencillas que permitían la transposición de caracteres alfanuméricos, generalmente con intersecciones de filas y columnas que podían modificarse mediante claves que, por lo general, eran cortas, numéricas y podían memorizarse. El sistema se consideraba "indescifrable" porque las tablas y las claves no transmiten significado por sí mismas. Los mensajes secretos sólo pueden verse comprometidos si un conjunto coincidente de tabla, clave y mensaje cae en manos del enemigo en un período de tiempo relevante. Kerckhoff consideraba que los mensajes tácticos sólo tenían unas pocas horas de relevancia. Los sistemas no están necesariamente comprometidos, porque sus componentes (es decir, tablas de caracteres alfanuméricos y claves) pueden modificarse fácilmente.
Se supone que el uso de la criptografía segura sustituye el difícil problema de mantener seguros los mensajes por uno mucho más manejable, el de mantener seguras claves relativamente pequeñas. Un sistema que requiere secreto a largo plazo para algo tan grande y complejo como el diseño completo de un sistema criptográfico obviamente no puede lograr ese objetivo. Sólo sustituye un problema difícil por otro. Sin embargo, si un sistema es seguro incluso cuando el enemigo sabe todo excepto la clave, entonces todo lo que se necesita es lograr mantener las claves en secreto. [10]
Hay muchas formas de descubrir los detalles internos de un sistema ampliamente utilizado. La más obvia es sobornar, chantajear o amenazar de alguna otra forma al personal o a los clientes para que expliquen el funcionamiento del sistema. En una guerra, por ejemplo, es probable que un bando se apodere de algunos equipos y personas del otro bando. Además, cada bando utilizará espías para reunir información.
Si un método implica software, alguien podría hacer volcados de memoria o ejecutar el software bajo el control de un depurador para comprender el método. Si se utiliza hardware, alguien podría comprar o robar parte del hardware y crear los programas o dispositivos necesarios para probarlo. El hardware también se puede desmontar para poder examinar los detalles del chip bajo el microscopio.
Una generalización que algunos hacen a partir del principio de Kerckhoff es: "Cuanto menos y más simples sean los secretos que uno debe guardar para garantizar la seguridad del sistema, más fácil será mantener la seguridad del sistema". Bruce Schneier lo relaciona con la creencia de que todos los sistemas de seguridad deben estar diseñados para fallar con la mayor elegancia posible:
Este principio se aplica más allá de los códigos y cifras, a los sistemas de seguridad en general: cada secreto crea un punto de falla potencial . El secreto, en otras palabras, es una causa primordial de fragilidad y, por lo tanto, algo que probablemente haga que un sistema sea propenso a un colapso catastrófico. Por el contrario, la apertura proporciona ductilidad. [11]
Cualquier sistema de seguridad depende fundamentalmente de mantener ciertas cosas en secreto. Sin embargo, el principio de Kerckhoff señala que las cosas que se mantienen en secreto deben ser aquellas cuyo cambio sea menos costoso si se divulgan inadvertidamente. [9]
Por ejemplo, un algoritmo criptográfico puede implementarse mediante hardware y software ampliamente distribuidos entre los usuarios. Si la seguridad depende de mantener ese secreto, entonces la divulgación conduce a importantes dificultades logísticas en el desarrollo, prueba y distribución de implementaciones de un nuevo algoritmo: es "frágil". Por otro lado, si mantener el secreto del algoritmo no es importante, pero sólo las claves utilizadas con el algoritmo deben ser secretas, entonces la divulgación de las claves simplemente requiere el proceso más simple y menos costoso de generar y distribuir nuevas claves. [12]
De acuerdo con el principio de Kerckhoff, la mayoría de la criptografía civil utiliza algoritmos conocidos públicamente. Por el contrario, los cifrados utilizados para proteger información clasificada del gobierno o militar suelen mantenerse en secreto (véase Cifrado de tipo 1 ). Sin embargo, no se debe asumir que los cifrados gubernamentales o militares deben mantenerse en secreto para mantener la seguridad. Es posible que se pretenda que sean tan sólidos criptográficamente como los algoritmos públicos, y la decisión de mantenerlos en secreto esté en consonancia con una postura de seguridad por capas.
Es bastante común que las empresas, y a veces incluso los organismos de normalización como en el caso del cifrado CSS en los DVD , mantengan en secreto el funcionamiento interno de un sistema. Algunos [¿ quiénes? ] sostienen que esta "seguridad por oscuridad" hace que el producto sea más seguro y menos vulnerable a los ataques. Un contraargumento es que mantener en secreto el funcionamiento interno puede mejorar la seguridad a corto plazo, pero a largo plazo, solo se debe confiar en los sistemas que han sido publicados y analizados.
Steven Bellovin y Randy Bush comentaron: [13]
La seguridad a través de la oscuridad se considera peligrosa
Ocultar las vulnerabilidades de seguridad en algoritmos, software y/o hardware reduce la probabilidad de que se reparen y aumenta la probabilidad de que se exploten. Desalentar o prohibir el debate sobre las debilidades y vulnerabilidades es extremadamente peligroso y perjudicial para la seguridad de los sistemas informáticos, la red y sus ciudadanos.
El debate abierto fomenta una mayor seguridad
La larga historia de la criptografía y el criptoanálisis ha demostrado una y otra vez que el análisis y la discusión abierta de algoritmos revelan debilidades que no fueron consideradas por los autores originales y, por lo tanto, conducen a algoritmos mejores y más seguros. Como Kerckhoffs señaló sobre los sistemas de cifrado en 1883 [Kerc83], "No es necesario que el sistema sea secreto y que pueda ser robado por el enemigo sin causar problemas".