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

Responder a