Muy interesante muchas gracias a todos, Juan me sirvio mucho tu explicacion te agradezco la atencion de igual manera para Jesus y Eddu. definitivamente tengo que investigar mas sobre el tema.
Saludos. El 27 de enero de 2010 05:11, Eddú Meléndez Gonzales <[email protected]>escribió: > Utiliza esas librerias que nos da apache > http://commons.apache.org/codec/ > <http://commons.apache.org/codec/>hace muy poco tiempo los use y si q me > sirvieron y claro siguiendo los consejos de los amigos que aqui escriben. > soy un principiante pero paro en constante auto-capacitacion y tambien > investigacion > saludos a todos. > > El 26 de enero de 2010 23:35, Juan Pablo Scaletti < > [email protected]> escribió: > > Concuerdo con Jesús: No reinventar la rueda no solo es más fácil sino que >> es más seguro. >> >> Mucha gente usa el mismo password para muchas cosas. Osea que no es solo >> tu sistema el que esta en juego: Si un atacante consigue los passwords a >> través de tu sistema, habrá conseguido acceso a las cuentas de correo de >> muchos de tus usuarios, que a su vez podrá usar para recuperar el password >> de algunos bancos, Amazon, etc. Osea que estarán jodidos. Y tu tendrás que >> decírselos. >> >> En otras palabras: no lo hagas. >> >> >> Dicho eso... >> Si te sobra el tiempo para investigar y de todos modos quieres reinventar >> la rueda, esto es lo mínimo que debes saber sobre el tema: >> >> >> *1.* Los passwords no los guardas ni como texto plano ni encriptados. En >> vez de eso, lo que guardas es un *hash*, osea una suma de comprobación == >> el resultado de una operación matemática sobre el texto del password. >> >> Cuando el usuario intenta loguearse hasheas el password que te da y lo >> comparas con el hash guardado. >> Los hashes de dos textos iguales, hasheados con el mismo algoritmo, serán >> siempre iguales. Así que si el nuevo hash y el guardado coinciden es que el >> password es correcto. >> >> >> *2. *No sacas el hash de *solo* el password. Eso es *inseguro*. >> ¿Por que? Por que los hashes de dos textos iguales son siempre iguales. >> Eso significa que: >> >> *A)* Si averiguas el password de un usuario sabrás que cualquier otro >> usuario con el mismo hash tiene el mismo password. >> *B)* El atacante puede dejar su computadora prendida un mes y armar una >> lista de hashes pre-calculados para todas las combinaciones >> de letras y números hasta un largo de 6 (o más). Luego le bastaría >> compararlos con los tuyos para averiguar la mayoría de los passwords. >> *C)* Malas noticias: Ya muchos lo han hecho... y puedes descargarte esas >> listas de Internet. >> >> Lo que debes hacer es generar un texto al azar, juntarlo al password y >> hashear el resultado: >> >> hash = algoritmo_de_hashing( 'un_texto_al_azar_que_debería_ser_más_largo' >> + password ) >> >> A este texto agregado se le llama "*sal*". >> >> Ahora, ese texto debe ser largo (o si no está por las puras), al azar, *y >> diferente para cada password*. Si no es diferente todo lo que consigues >> es inutilizar las tablas pre-calculadas, pero todavía tienes los problemas >> de los passwords iguales (A) y si el atacante averigua cual es tu "sal" >> puede hacer su propia lista (B), pero esa lista le serviría para todos los >> passwords en tu sitio. Si la sal es diferente para cada password tiene que >> hacer el mismo esfuerzo no una vez sino para *cada* password. >> >> Como necesitas saber la sal para loguear a los usuarios, debes guardarlas >> con los datos de cada usuario: En otra fila o pegada al hash. >> >> password_en_la_bd = SAL + '#' + algoritmo_de_hashing( SAL + password) >> >> Ejemplo: >> >> SAL >> = >> 'un_texto_al_azar_que_deberia_ser_mas_largo_y_que_es_exclusivo_para_este_usuario' >> password_en_la_bd = SAL + '#' + algoritmo_de_hashing( SAL >> + 'mi_password') >> >> "Pero así la sal está a la vista de cualquier atacante!" dirás (si, si >> dijiste eso, yo te oi). No importa: La sal solo está ahí para evitar las >> tablas pre-calculadas >> y que dos hashes sean iguales. Nada más (Si la sal es diferente para cada >> password tiene que hacer el mismo esfuerzo no una vez sino para *cada* >> password). >> >> Pero puedes hacer tu sistema más seguro agregándole... "*pimienta*" (los >> informáticos a los que se les ocurrió todo esto tenían hambre). >> >> Una pimienta es un texto como la sal pero: >> - Es la misma para todos los passwords >> - No la guardas en la base de datos sino en tu código o en un archivo >> aparte, como el sitio donde guardas la contraseña de la base de datos. >> >> La idea de la pimienta es hacer que el atacante tenga que ganar acceso no >> solo a tu base de datos sino tambien al servidor donde está el código del >> programa >> antes de que pueda intentar romper los passwords por fuerza bruta. >> >> El código quedaría así: >> >> password_en_la_bd = SAL + '#' + algoritmo_de_ hashing( SAL + PIMIENTA + >> password) >> >> >> *3.* Hay varios algoritmos de hashing y no todos son buenos para guardar >> passwords. >> >> Algunos son: MD5, SHA1, SHA256, SHA512 >> Usar MD5 está muy mal visto, SHA1 para arriba es lo que más se usa. >> >> En el fondo todos tienen un problema: Son muy rápidos y paralelizables. >> Osea que probar decenas o cientos de combinaciones por segundo >> depende solo de cuantas computadoras puedas conseguir. >> >> La solución es usar un algoritmo de hashing diseñado para ser mucho más >> lento y secuencial >> >> Del lado de los usuarios de la web eso no importa: De todas formas el >> cuello de botella es la base de datos y dibujar la página, no el algoritmo >> para hashear el password. Si este demora dies veces más ni siquiera lo >> notarán. >> >> Pero para el atacante significa demorar un mes en probar las combinaciones >> que antes podía probar en tres días. >> >> El algoritmo que buscas es *bcrypt*: >> http://www.mindrot.org/projects/jBCrypt/ >> (que de paso también se encarga de salar el password) >> >> >> *4. *La cadena se rompe en el eslabón más debil, así que no dejes de >> prestar atención al sistema para recuperar passwords (osea generar uno >> nuevo, el password nunca debe poder recuperarse), >> la forma de guardar las cookies de sesión, etc. que son formas de >> loguearse sin tener el password... por lo menos las cuentas de correo ya >> están seguras :) >> >> >> Suerte y disfruta la programación >> >> Juan Pablo >> >> >> --- >> Juan Pablo Scaletti >> >> >> >> 2010/1/26 Jesus Hinojosa <[email protected]> >> >> la mayoria de frameworks ya traen un modulo para authenticacion, porque >>> reinventar la rueda? >>> >>> El 26 de enero de 2010 19:22, Brando <[email protected]> escribió: >>> >>>> Hola Amigos de la lista, recurro a Uds. por un tema que quizás muchos >>>> de aquí conozcan y me puedan orientar. Bueno resulta que estoy >>>> desarrollando >>>> un sistema web (Java, JSP, Struts, etc.) y dentro del esquema de desarrollo >>>> está la parte de seguridad para el tema de almacenamiento de password de >>>> usuarios en un base de datos. Estuve revisando algo de información al >>>> respecto y tenía dudas para el tipo de encriptado o codificación >>>> (corríjanme >>>> si me equivoco en los términos), inicialmente estuve revisando algo acerca >>>> de utilizar AES como algoritmo de encriptación y por allí me sugirieron >>>> mejor utilizar HASH, entonces allí es donde se me genero la duda. >>>> >>>> La pregunta es puntual, que me podrían sugerir Uds. en base a sus >>>> experiencias?, este sistema manejara información critica entonces quisiera >>>> manejar esta parte de la seguridad de la mejor forma. >>>> >>>> >>>> >>>> Espero haberme hecho entender. >>>> >>>> >>>> >>>> Gracias por la atención >>>> >>>> >>>> >>>> Saludos. >>>> >>>> >>>> >>>> Brando. >>>> >>>> >>>> >>>> _______________________________________________ >>>> Lista de correo Linux-plug >>>> Temática: Discusión general sobre Linux >>>> Peruvian Linux User Group (http://www.linux.org.pe) >>>> >>>> Participa suscribiéndote y escribiendo a: [email protected] >>>> Para darte de alta, de baja o hacer ajustes a tu suscripción visita: >>>> http://listas.linux.org.pe/mailman/listinfo/linux-plug >>>> >>>> IMPORTANTE: Reglas y recomendaciones >>>> http://www.linux.org.pe/listas/reglas.php >>>> http://www.linux.org.pe/listas/comportamiento.php >>>> http://www.linux.org.pe/listas/recomendaciones.php >>>> >>> >>> >>> >>> -- >>> Jesus Hinojosa Palma >>> Cel RPC +51 1 989097034 >>> Cel RPM 99620 7436 - #945571 >>> >>> _______________________________________________ >>> Lista de correo Linux-plug >>> Temática: Discusión general sobre Linux >>> Peruvian Linux User Group (http://www.linux.org.pe) >>> >>> Participa suscribiéndote y escribiendo a: [email protected] >>> Para darte de alta, de baja o hacer ajustes a tu suscripción visita: >>> http://listas.linux.org.pe/mailman/listinfo/linux-plug >>> >>> IMPORTANTE: Reglas y recomendaciones >>> http://www.linux.org.pe/listas/reglas.php >>> http://www.linux.org.pe/listas/comportamiento.php >>> http://www.linux.org.pe/listas/recomendaciones.php >>> >> >> >> >> -- >> >> Juan Pablo Scaletti >> >> _______________________________________________ >> Lista de correo Linux-plug >> Temática: Discusión general sobre Linux >> Peruvian Linux User Group (http://www.linux.org.pe) >> >> Participa suscribiéndote y escribiendo a: [email protected] >> Para darte de alta, de baja o hacer ajustes a tu suscripción visita: >> http://listas.linux.org.pe/mailman/listinfo/linux-plug >> >> IMPORTANTE: Reglas y recomendaciones >> http://www.linux.org.pe/listas/reglas.php >> http://www.linux.org.pe/listas/comportamiento.php >> http://www.linux.org.pe/listas/recomendaciones.php >> > > > > -- > Atte. > Eddú Meléndez Gonzales. > @: [email protected] > [email protected] > Nextel: 838*3365 > 99838-3365 > Movistar: 95663-7321 > RPM: *167618 > > _______________________________________________ > Lista de correo Linux-plug > Temática: Discusión general sobre Linux > Peruvian Linux User Group (http://www.linux.org.pe) > > Participa suscribiéndote y escribiendo a: [email protected] > Para darte de alta, de baja o hacer ajustes a tu suscripción visita: > http://listas.linux.org.pe/mailman/listinfo/linux-plug > > IMPORTANTE: Reglas y recomendaciones > http://www.linux.org.pe/listas/reglas.php > http://www.linux.org.pe/listas/comportamiento.php > http://www.linux.org.pe/listas/recomendaciones.php >
_______________________________________________ Lista de correo Linux-plug Temática: Discusión general sobre Linux Peruvian Linux User Group (http://www.linux.org.pe) Participa suscribiéndote y escribiendo a: [email protected] Para darte de alta, de baja o hacer ajustes a tu suscripción visita: http://listas.linux.org.pe/mailman/listinfo/linux-plug IMPORTANTE: Reglas y recomendaciones http://www.linux.org.pe/listas/reglas.php http://www.linux.org.pe/listas/comportamiento.php http://www.linux.org.pe/listas/recomendaciones.php
