.\" Michael Haardt (michael@cantor.informatik.rwth.aachen.de) Sat Sep 3 22:00:30 MET DST 1994 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" .\" Sun Feb 19 21:32:25 1995, faith@cs.unc.edu edited details away .\" .\" A DO: This manual page should go more into detail how DES is perturbed, .\" which string will be encrypted, and what determines the repetition factor. .\" Is a simple repetition using ECB used, or something more advanced? I hope .\" the presented explanations are at least better than nothing, but by no .\" means enough. .\" .\" added _XOPEN_SOURCE, aeb, 970705 (agregado por nick@debian.org) .\" added GNU MD5 stuff, aeb, 011223 .\" .\" Traducido al castellano (con permiso) por: .\" Sebastian Desimone (chipy@argenet.com.ar) (desimone@fasta.edu.ar) .\" Translation fixed on Thu Apr 23 16:27:38 CEST 1998 by Gerardo .\" Aburruzaga García .\" Traducción revisada por Miguel Pérez Ibars el 14-febrero-2005 .\" .TH CRYPT 3 "23 diciembre 2001" "Linux" "Manual del Programador Linux" .SH NOMBRE crypt \- cifrado de contraseñas y datos .SH SINOPSIS .B #define _XOPEN_SOURCE .br .B #include .sp .BI "char *crypt(const char *" key ", const char *" salt ); .SH DESCRIPCIÓN .B crypt es la función de cifrado de contraseñas. Está basada en el algoritmo DES (Data Encryption Standard) con algunas variaciones tendentes (junto con otras cosas) a desalentar el uso de implementaciones por hardware de buscadores de claves. .PP .I key es una contraseña tecleada por el usuario. .PP .I salt es una cadena de dos caracteres elegidas del conjunto [\fBa\fP\(en\fBzA\fP\(en\fBZ0\fP\(en\fB9./\fP]. Esta cadena se emplea para variar el algoritmo en uno de 4096 modos diferentes. .PP Al tomar los 7 bit más bajos de cada uno de los primeros ocho carácteres de .IR key , se obtiene una clave de 56 bits. Esta clave de 56 bits se utiliza para cifrar repetidamente una cadena constante (usualmente una cadena consistente en ceros). El valor devuelto apunta a la contraseña cifrada, una serie de 13 caracteres imprimibles (los primeros dos caracteres representan al propio \fBsalt\fP). El valor devuelto apunta a datos estáticos cuyos contenidos se sobreescriben en cada llamada. .PP Cuidado: El espacio de claves consiste en .if t 2\s-2\u56\s0\d .if n 2**56 igual a 7.2e16 valores posibles. Son posibles exhaustivas búsquedas en este espacio de claves empleando computadores masivamente paralelos. Existen programas, como .BR crack (1), que pueden buscar en la porción del espacio de claves que es generalmente usado por los humanos para sus contraseñas. De aquí que en la selección de contraseñas se debe, como mínimo, evitar palabras y nombres comunes. Se recomienda el uso de un programa .BR passwd (1) que compruebe durante el proceso de selección si la contraseña es vulnerable. .PP El algoritmo DES en sí tiene unas peculiaridades que hacen que el empleo de la interfaz .BR crypt (3) sea una pobre elección para otro fin más allá de la autenticación de contraseñas. Si está planeando utilizar la interfaz .BR crypt (3) para un proyecto criptográfico, no lo haga: consiga un buen libro sobre cifrado y una de las ampliamente disponibles bibliotecas DES. .SH "VALOR DEVUELTO" Se devuelve un puntero a la contraseña cifrada. En caso de error se devuelve NULL. .SH ERRORES .TP .B ENOSYS La función .B crypt no fue implementada, probablemente por causa de restricciones de exportación de EE.UU. .\" Este nivel de detalle no es necesario en esta página de Manual... .\" Po fueno, po fale, po malegro... Po yo lo pongo y el que no lo .\" quiera leer, que no lo lea, mirusté. .\" .PP .\" Cuando se cifra un texto plano P mediante DES con la clave K, se .\" obtiene el texto cifrado C, y luego al cifrar el texto plano .\" complementario P' con la clave complementaria K' se obtendrá el texto .\" cifrado complementario C'. .\" .PP .\" Son claves débiles aquéllas que permanecen invariantes tras la .\" transformación de clave DES. .\" Deben evitarse las cuatro claves débiles conocidas 0101010101010101, .\" fefefefefefefefe, 1f1f1f1f0e0e0e0e y e0e0e0e0f1f1f1f1. .\" .PP .\" Hay seis pares conocidos de claves medio débiles, cuyas claves llevan .\" a los mismos datos cifrados. Las claves que son parte de tales grupos .\" de claves deberían evitarse. .\" Siento que no haya podido encontrar cuáles son. .\" .PP .\" Los datos fuertemente redundantes causan problemas con el cifrado DES, .\" cuando se emplean en el modo de .\" .I libro de claves .\" que implementa .\" .BR crypt (3). .\" La interfaz .\" .BR crypt (3) .\" debería emplearse solamente para su propósito inicial de verificación .\" de contraseñas, y no como parte de una herramienta de cifrado de datos. .\" .PP .\" Los primeros y últimos tres bits de salida de la cuarta caja-S pueden .\" representarse como funciones de sus bits de entrada. Estudios .\" empíricos han demostrado que las cajas-S calculan parcialmente la .\" misma salida para similar entrada. Se sospecha que esto puede .\" representar una puerta trasera que podría permitir a la NSA descifrar .\" datos cifrados con DES. .\" .PP .\" Por las razones anteriormente expuestas, el hacer públicamente .\" disponibles datos cifrados con crypt() debe considerarse como algo .\" inseguro. .SH "EXTENSIÓN DE GNU" La versión glibc2 de esta función tiene las siguientes características adicionales. Si .I salt es una cadena de carácteres que comienza con los tres carácteres "$1$" seguidos como mucho por ocho carácteres, y opcionalmente terminada en "$", en lugar de usar la máquina DES, la función crypt de glibc usa un algoritmo basado en MD5, y produce una salida de hasta 34 bytes, a saber "$1$$", donde "" representa hasta los 8 carácteres que siguen a "$1$" en la "sal", seguidos por 22 bytes escogidos del conjunto [\fBa\fP\(en\fBzA\fP\(en\fBZ0\fP\(en\fB9./\fP]. La clave al completo tiene significado propio (en lugar de solamente los 8 primeros bytes). .LP Los programas que usen esta función deben ser enlazados con la opción -lcrypt. .SH "CONFORME A" SVID, X/OPEN, BSD 4.3, POSIX 1003.1-2001 .SH "VÉASE TAMBIÉN" .BR login "(1), " passwd "(1), " encrypt "(3), " getpass "(3), " passwd (5)