Kraken, encriptación de datos de forma segura con PHP
Después de los ataques de "rainbow tables" y de las supuestas descodificaciones de códigos supuestamente invulnerables que se están produciendo últimamente me ha dado por interesarme un poco mas en el mundo de la criptografía, y lógicamente como mis conocimientos no dan como para verificar un nuevo algoritmo de codificación base me ha dado por intentar crear uno que a partir de una base secreta como seria la palabra a codificar se genere un código que complique la descodificación hasta el punto de ser tan enrevesado y críptico que no merezca la pena.
La base de funcionamiento esta en que la mayoría de códigos de encriptación dan como datos de salida "textos" de salida muy parecidos que son difícilmente diferenciables. A partir de eso si la selección de la encriptación a realizar se hace a partir de la palabra a encriptar, la encriptación mejora impresionantemente.
Ademas esta función incrementa el nivel de fuerza de la reencriptación de manera proporcional al numero de caracteres a encriptar, seleccionando una encriptación diferente aplicada a todo el texto y seleccionada a partir de la misma palabra a encriptar. Los tipos de encriptación a aplicar estarán almacenados en una carpeta llamada seguridad que tendra en su interior 18 archivos numerados con los diferentes tipos de encriptación, los cuales se pueden modificar al gusto. Estos archivos tienen como norma utilizar como entrada de datos una variable $dato y lo mismo como salida. Ejemplo .
Código de función:
-
function kraken($palabra, $secreto = ''){
-
-
if($archivo[0] != '.'){ $code[] = 'seguridad/'.$archivo; }
-
}
-
foreach($code as $valor){ $_code[] = $valor; }
-
foreach($pases as $key => $value){
-
$resultado = $valor[0] + $valor[1] + $valor[2];
-
if($resultado != 0){
-
$_resultado = $_valor[0] + $_valor[1] + $_valor[2];
-
if( ($resultado + $_resultado)> ((18/2)+18) ){ $_resultado = $resultado; }
-
include($_code[$_resultado]);
-
}
-
}
-
}
Para utilizar la función necesitaremos solo una palabra a codificar y una semilla de seguridad que denominaremos $secreto. La variable $secreto asegura que, la misma función ejecutada en 2 servidores diferentes y con "palabras" a codificar idénticas pueden dar textos de salidas diferentes.
Ejemplo de uso de la función:
Buen artículo, pero estoy interesado almacenar archivos en el servidor encriptados como por ejemplo cadenas de conexión a base de datos o los datos para usar el API de PayPal, esa información es necesario mantenerla en el server pero en texto plano es muy vulnerable, deseo saber como encriptar y desencriptar para su uso.
Hola Rolf, pues siento decirte que creo que esto no es lo que buscas. El método kraken de encriptación lo diseñé como un método de una sola vía, es decir, no tiene reversión del contenido a partir de la contraseña. Fue diseñado para verificar si un par de variables son correctas, ya sean un usuario y contraseña o un token y fecha.
Lo que tu buscas es encriptación de doble via, es decir.. que puedas encriptar y a partir de la clave desencriptar, y eso debilita mucho los codigos.
Podrías utilizar la misma filosofía de combinación q kraken solo que usando todo el rato algoritmos de doble vía y creando un segundo script q funcione a la inversa para desencriptar.
un saludo y siento no poder ayudarte.