Cifrado / descifrado de datos de usuario en una base de datos (PHP)

3

Me preguntaba cuál es la mejor manera de cifrar y descifrar los datos del usuario en una base de datos, para que sea mucho más seguro, ya que es posible.

Estaba leyendo sobre AES, pero me gustaría saber si es realmente la mejor manera.

Estaba planeando usar AES y una clave secreta para cifrar / descifrar, ¿hay alguna mejor manera?

    
pregunta itsme 01.10.2012 - 10:58
fuente

3 respuestas

2

AES es una buena opción para cifrar datos, si la implementa correctamente. Si está cifrando datos en una base de datos, se encontrará con el problema de DRM, es decir, no puede mantener la confidencialidad de los datos a través de la criptografía si coloca los datos cifrados y la clave en el mismo lugar. Un atacante con acceso a la máquina puede simplemente robar la clave al mismo tiempo que los datos.

Su mejor apuesta para mantener seguros los datos confidenciales contra ataques en vivo es un HSM , que está diseñado exactamente para este escenario.

Si solo te preocupan los ataques sin conexión, por ejemplo. Si alguien roba el disco duro de su servidor, debe cifrar su base de datos en un volumen de TrueCrypt , o usar el cifrado de todo el disco (sistema).

    
respondido por el Polynomial 01.10.2012 - 11:55
fuente
3

Seguro, sí, pero ¿contra quién o qué?

Independientemente de cómo cifre los datos, su servidor todavía debe poder descifrarlos. Por lo tanto, cualquier ataque que subvierta su servidor (por ejemplo, los desbordamientos de búfer o la inyección de SQL) dará acceso completo al atacante a los datos, independientemente de su cifrado.

El cifrado le servirá de algo solo contra los atacantes que obtienen acceso de puerta trasera al almacenamiento, por ejemplo. que roba una cinta de copia de seguridad o recupera un disco duro antiguo de un contenedor de basura. Entonces, esto apunta al tipo de cifrado que necesita: Cifrado de datos transparente (equivalentemente, un cifrado de disco completo, como se indica en por @Polynomial). TDE no elimina las necesidades de confidencialidad, pero las concentra : usted "solo" tiene que preocuparse por la clave de cifrado, que es pequeña y no cambia con el tiempo, en lugar de gigabytes de datos que siempre están mutando.

(Por supuesto, si desea esparcir el cifrado en todo el servidor solo para facilitar el escrúpulo de alguna jerarquía administrativa en algún lugar, olvídese de todo esto y elija un algoritmo con el acrónimo más impresionante, preferiblemente con un llave muy larga. "RSA-8192 y AES-256 / CBC con HMAC / SHA-512" hundirán de manera confiable al burócrata promedio en un trance extático.)

    
respondido por el Thomas Pornin 01.10.2012 - 13:32
fuente
1

Tal vez alguien pueda responder tu pregunta definitivamente, pero tengo la impresión de que tu pregunta es algo así como "¿Quién es el mejor médico para tratar la enfermedad X?" De todos modos, AES es un estándar ISO y ha sido examinado durante mucho tiempo por los expertos en el público sin que se hayan encontrado fallos graves, y se considera seguro incluso cuando hay computadoras cuánticas disponibles. Por otro lado, un algoritmo seguro por sí solo, por supuesto, aún no le brinda ninguna seguridad.

    
respondido por el Mok-Kong Shen 01.10.2012 - 11:50
fuente

Lea otras preguntas en las etiquetas