La orden crypt permite cifrar y descifrar ficheros en diferentes sistemas
Unix; si no recibe parámetros lee los datos de la entrada estándar y los
escribe en la salida estándar, por lo que seguramente habremos de redirigir
ambas a los nombres de fichero adecuados. Un ejemplo simple de su uso puede ser
el siguiente:
$ crypt <fichero.txt >fichero.crypt
Enter key:
$
En el anterior ejemplo hemos cifrado utilizando crypt el archivo fichero.txt y guardado el resultado en fichero.crypt; el original en
texto claro se mantiene en nuestro directorio, por lo que si queremos evitar
que alguien lo lea deberemos borrarlo.
Para descifrar un fichero cifrado mediante crypt (por ejemplo, el
anterior) utilizamos la misma orden y la misma clave:
$ crypt <fichero.crypt>salida.txt
Enter key:
$
El anterior comando ha descifrado fichero.crypt con la clave tecleada y
guardado el resultado en el archivo salida.txt, que coincidirá en
contenido con el anterior fichero.txt.
crypt no se debe utilizar nunca para cifrar información
confidencial; la seguridad del algoritmo de cifra utilizado por esta orden es
mínima, ya que crypt se basa en una máquina con un rotor de 256
elementos similar en muchos aspectos a la alemana Enigma, con unos
métodos de ataque rápidos y conocidos por todos ([RW84]). Por si
esto fuera poco, si en lugar de teclear la clave cuando la orden nos lo solicita
lo hacemos en línea de comandos, como en el siguiente ejemplo:
$ crypt clave < fichero.txt > fichero.crypt
$
Entonces a la debilidad criptográfica de crypt se une el hecho de que
en muchos Unices cualquier usuario puede observar la clave con una orden tan
simple como ps (no obstante, para minimizar este riesgo, el propio
programa guarda la clave y la elimina de su línea de argumentos nada más
leerla).
Obviamente, la orden crypt(1) no tiene nada que ver con la función
crypt(3), utilizada a la hora de cifrar claves de usuarios, que está
basada en una variante del algoritmo DES y se puede considerar segura en
la mayoría de entornos.
© 2002 Antonio Villalón Huerta