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

Responder a