metodos de cifrados

Iniciado por tecasoft, 17 Marzo 2013, 19:25 PM

0 Miembros y 1 Visitante están viendo este tema.

tecasoft

wenas gente del foro tengoi 2 preguntas y me gustaria haber quien me las sabe responder:

1º es un buen metodo cifrar la password con esto para siempre* y si esta bien escrito:


$cifrad=hash('sha512',sha1($pass));


2º necesito un metodo de cifrado para los demas datos de la base de datos como email,etc, me podeis poner algun ejemplo. Yo he encontrado esto es util utilizar este tipo de funciones AES_ENCRYPT  y AES_DECRYPT o como consumirian o es mejor hacerlo desde php para el rendimiento, es que quiero seguridad pero tambien rendimiento:

http://donnierock.wordpress.com/2012/09/10/encriptacion-aes-en-mysql-y-mariadb/


Un saludo
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

WHK

De que sirve cifrar y descifrar los datos de la base de datos si de todas formas tienes que incluir la llave dentro del código? comprendo si la db estubiera en un host inseguro pero si es propio no veo la utilidad, alguien que hackee la pagina vera la llave y descifrará todo.

Yo utilizo RC4 para cifrar y descifrar con una llave privada.

Saludos.

tecasoft

#2
me puedes explicar mejor lo de rc4, es que esto de la seguridad hay que pensarlo bien, ya lei la wiki de que es rc4 pero en practica como se aplica, etc,gracias
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

WHK

https://gist.github.com/farhadi/2185197/raw/87ef1a949ace9de73e55a7d09515088d2f7001b0/rc4.php

Código (php) [Seleccionar]
<?php

/*
 * RC4 symmetric cipher encryption/decryption
 *
 * @license Public Domain
 * @param string key - secret key for encryption/decryption
 * @param string str - string to be encrypted/decrypted
 * @return string
 */
function rc4($key$str) {
$s = array();
for ($i 0$i 256$i++) {
$s[$i] = $i;
}
$j 0;
for ($i 0$i 256$i++) {
$j = ($j $s[$i] + ord($key[$i strlen($key)])) % 256;
$x $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
}
$i 0;
$j 0;
$res '';
for ($y 0$y strlen($str); $y++) {
$i = ($i 1) % 256;
$j = ($j $s[$i]) % 256;
$x $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
$res .= $str[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
}
return $res;
}

?>


Se usa así:
Código (php) [Seleccionar]
<?php
$cifrado 
rc4('llave''contenido real');
echo 
'<p>cifrado: '.htmlspecialchars($cifradoENT_QUOTES).'</p>';
$descifrado rc4('llave'$cifrado);
echo 
'<p>descifrado: '.htmlspecialchars($descifradoENT_QUOTES).'</p>';
?>


La misma función se utiliza para cifrar y descifrar pasandole una llave que solo tu conozcas, de esta forma un string cifrado no podrá ser descifrado sin la llave.

Si vas a guardar esto en la base de datos debes hacerlo en modo binario porque no son caracteres ascii, o si no lo codificas en base64 o urlencode.

Saludos.

tecasoft

no me funciona el script, que esta pasando?
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

WHK

A mi me funciona bien:
http://codepad.org/62cKXdkE

Recuerda que cuando estas desarrollando debes habilitar el reporte de errores de php desde el php.ini o directamente con error_reporting(E_ALL)

tecasoft

culpa mia escribi solo la parte de abajo del rc4 sin contar con lo demas, entonces ese metodo criptografico lo usas tu y es bastante seguro para romper y tal entonces?¿ digo x fuerza bruta, gracias
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

WHK

No existe ningún tipo de cifrado que no se pueda romper, mientra mas corta y fácil sea la clave de cifrado entonces mas facil será tratar de comprobar cual es la clave...

comienzas a probar con la clave a, aa, ab , abc, etc hasta dar con la clave y esto no tiene nada que ver con el tipo de cifrado.

Si le pones una clave que contenga letras mayusculas y minusculas, números y simbolos y que tenga mas de 12 carácteres entonces no debería haber problema con el cifrado.

Saludos.

tecasoft

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits