Ofreciendo un escenario de privacidad con la biblioteca PHP mcrypt

3

Primero que nada, disculpe si mi pregunta no está clara, porque el inglés no es mi primer idioma. De todos modos, déjame explicarte el concepto que estoy luchando por resolver como la mejor solución. Tengo algunos chicos y quieren privacidad para su nube (alojar sus archivos). Ok, la criptografía es el camino a seguir, creo. Así que hice una investigación rápida y descubrí que puedo cifrar sus archivos con PHP y almacenarlos encriptados en el servidor de la nube. Pero de esta manera, para descifrar sus archivos y darles una descarga del archivo original, necesitaré obtener su clave de cripta (que se supone que es secreta y se mantiene solo en el lado del cliente) y usarla en PHP mcrypt, para descifrar el archivo. De esta manera, creo una posibilidad para "enganchar" sus claves de cripta y descifrar sus archivos incluso sin el permiso. Ok, no pretendo hacer eso, pero quiero "lavarme las manos" (tal vez esta expresión no funciona bien en inglés, pero trato de entender) sobre lo que alojan allí. Si en cualquier momento, para fines legales, me veo obligado a obtener la clave de algún usuario y descifrar los archivos, simplemente no quiero tener ninguna forma de hacerlo. ¿Hay alguna manera de hacer esto con la biblioteca de PHP mcrypt? Tal vez haciendo alguna función de hash con su clave de cripta (solo suponiendo) o tal vez procesando el archivo descargado en el lado del cliente a través de javascript (¿es eso incluso posible?)

    
pregunta user3810691 02.02.2015 - 18:33
fuente

1 respuesta

3
  

Tengo algunos chicos y quieren privacidad para su nube (alojar sus archivos).

Suena como un objetivo común en estos días.

  

Ok, la criptografía es el camino a seguir, creo.

A la derecha.

  

Así que hice una investigación rápida y descubrí que puedo cifrar sus archivos con PHP y almacenarlos encriptados en el servidor de la nube. Pero de esta manera, para descifrar sus archivos y darles una descarga del archivo original, necesitaré obtener su clave de cripta (que se supone que es secreta y se guardará solo en el lado del cliente) y usarla en PHPcrypt, para descifrar el archivo .

Si está escribiendo la palabra MCRYPT en su código PHP, lo está haciendo mal .

  

De esta manera, creo una posibilidad para "enganchar" sus claves de cripta y descifrar sus archivos incluso sin el permiso. Ok, no pretendo hacer eso, pero quiero "lavarme las manos" (tal vez esta expresión no funciona bien en inglés, pero trato de entender) sobre lo que alojan allí. Si en cualquier momento, para fines legales, me veo obligado a obtener la clave de algún usuario y descifrar los archivos, simplemente no quiero tener ninguna forma de hacerlo. Es

Básicamente, te estás dando cuenta de las limitaciones de la criptografía simétrica: si tienes una copia de la clave, puedes descifrarla.

  

¿Hay alguna forma de hacer esto con la biblioteca de PHP mcrypt? Tal vez haciendo alguna función de hash con su clave de cripta (solo suponiendo) o tal vez procesando el archivo descargado en el lado del cliente a través de javascript (¿es eso incluso posible?)

No, no puedes hacer esto con mcrypt. Sin embargo, puedes hacerlo en general.

Una solución mejor que Mcrypt

Simplemente use libsodium . Específicamente, puede usar libsodium.js en un navegador web, extensión de Chrome o aplicación de escritorio Electron. Cifre los archivos con crypto_box_seal() , descifrelos en la máquina del usuario con crypto_box_seal_open() .

Si necesita almacenar algo en el servidor (es decir, para el cifrado entre dispositivos), solo almacene el salt (para crypto_pwhash() y crypto_box_seed_keypair() ) y exija a sus usuarios que recuerden una contraseña.

Esto le permite diseñar su aplicación con respecto al principio de privilegio mínimo y nunca ver su texto cifrado. Sus usuarios no necesitan confiar en su operador de servidor para nada excepto la disponibilidad. Incluso si recibe una citación, no puede descifrar sus archivos.

    
respondido por el Scott Arciszewski 02.01.2016 - 04:30
fuente

Lea otras preguntas en las etiquetas