En la informática Unix , crypt o enigma es un programa de utilidad que se utiliza para cifrar. Debido a la facilidad para descifrarlo, se considera obsoleto.
El programa se utiliza habitualmente como filtro y tradicionalmente se ha implementado utilizando un algoritmo de "máquina de rotor" basado en la máquina Enigma . Se considera que es criptográficamente demasiado débil como para proporcionar seguridad contra ataques de fuerza bruta por parte de los ordenadores personales modernos . [1]
Algunas versiones de Unix se entregaban con una versión aún más débil del comando crypt(1) para cumplir con las leyes y regulaciones contemporáneas que limitaban la exportación de software criptográfico . Algunas de ellas eran simplemente implementaciones del cifrado César (efectivamente no más seguro que ROT13 , que se implementa como un cifrado César con una clave conocida).
El criptógrafo Robert Morris escribió un código criptográfico basado en M-209 , que apareció por primera vez en la versión 3 de Unix , para fomentar los experimentos de descifrado de códigos; Morris logró descifrarlo a mano. Dennis Ritchie automatizó el descifrado con un método de James Reeds, y apareció una nueva versión basada en Enigma en la versión 7 , que Reeds y Peter J. Weinberger también descifraron. [2]
Las distribuciones Linux generalmente no incluyen una versión compatible con Unix del comando crypt . Esto se debe en gran medida a una combinación de tres factores principales:
El código fuente de varias versiones antiguas del comando crypt está disponible en el Archivo Unix de The Unix Heritage Society. [3] El código fuente reciente de crypt está disponible en el proyecto OpenSolaris . Una versión de dominio público está disponible en Crypt Breaker's Workbench.
Hay utilidades de cifrado simétrico mejoradas disponibles para Linux (y también deberían ser portables a cualquier otro sistema tipo Unix ), incluyendo mcrypt y ccrypt . [4] Si bien estas proporcionan soporte para algoritmos mucho más sofisticados y modernos, se pueden usar para cifrar [5] y descifrar archivos que son compatibles con el comando crypt(1) tradicional al proporcionar las opciones de línea de comando correctas.
Existen programas para romper el cifrado crypt(1) ampliamente disponibles. El Crypt Breaker's Workbench de dominio público de Bob Baldwin , escrito en 1984-1985, es una herramienta interactiva que proporciona suposiciones sucesivas de texto simple que el usuario debe corregir. También proporciona una implementación funcional de crypt(1) utilizada por las distribuciones BSD modernas. [6]
El descifrador Unixcrypt de Peter Selinger utiliza un modelo estadístico simple similar a un ataque de diccionario que toma un conjunto de textos simples como entrada y lo procesa para adivinar textos simples plausibles, y no requiere interacción del usuario. [7]
También existe una función de hash de contraseñas de Unix con el mismo nombre, crypt . Aunque ambas se utilizan para proteger los datos en cierto sentido, en lo demás no están relacionadas. Para distinguirlas, los autores suelen referirse al programa de utilidad como crypt(1) , porque está documentado en la sección 1 de las páginas del manual de Unix , y a la función de hash de contraseñas como crypt(3) , porque su documentación se encuentra en la sección 3 del manual.