Necesito un buen algoritmo de criptografía que pueda codificarse y decodificarse

1

Hace algún tiempo me di cuenta de que no deberíamos poner el nombre de usuario / contraseña para acceder a un servidor de base de datos remoto directamente en un archivo ejecutable debido a la ingeniería inversa y la decodificación de la memoria. No sé si esto es lo que ya hacen todos, pero prefiero acceder primero a algunas API cifradas con una clave o frase y luego recibir el nombre de usuario y la contraseña (también cifrados) para comenzar a acceder a la base de datos.

Lo que no sé es de un buen sistema de cifrado que se pueda descifrar con la clave o frase correcta que usamos para cifrar los datos a la primera.

Entonces, lo que pregunto es si existe y ¿dónde puedo ver la solución para trabajar con sistemas que utilizan Delphi, PHP, Java y JavaScript? Debido a que hay diferentes partes del sistema que pueden comunicarse con ese tipo de encriptación.

No estoy hablando de algo como SHA / MD5, que no se pueda recuperar.

    
pregunta Please_Dont_Bully_Me_SO_Lords 05.04.2013 - 19:37
fuente

1 respuesta

14

Si está colocando un binario en una computadora que no es de confianza, y ese binario necesita acceder a información confidencial como contraseñas de bases de datos, literalmente no hay nada que pueda hacer para garantizar la privacidad de esa información. Puede ralentizar a los atacantes, pero si un atacante podría causar un daño significativo con esas credenciales de la base de datos, su arquitectura tiene fallas fundamentales.

Por ejemplo, lo mejor que puedes hacer es usar algo como AES-128-GCM para cifrar las credenciales. Pero también tiene que disfrazar la clave: por lo general, esto significa ofuscarla "generando" la clave a través de un proceso determinista, como realizar algunos cálculos, haciendo XOR contra el resultado de algunos datos fijos, y agregando y barajando eso con los resultados de otros cálculos.

Pero ahora todavía tienes problemas. La clave estará en la memoria y, una vez descifrada, también lo estará la contraseña de la base de datos. Y realmente no puede impedir que un usuario vea el contenido de la memoria de su propia computadora.

Otra vez: puede hacer que el problema sea más difícil, pero si su arquitectura requiere poner información increíblemente sensible como contraseñas de bases de datos en computadoras que no son de confianza, ya está jodido.

    
respondido por el Stephen Touset 05.04.2013 - 19:52
fuente

Lea otras preguntas en las etiquetas