Pasos para crear un buen cifrado de archivos en Android

3

Quiero poder crear un buen cifrado de archivos en Android para una aplicación en la nube. Los archivos utilizados son principalmente archivos PDF, pngs, docs, audio, video, etc. (todo tipo de archivos).
Editar :
Mis limitaciones son que debería ser lo suficientemente rápido, de modo que los usuarios de la aplicación en la nube no esperen eternamente para cargar / descargar. Además, el cifrado debe ser seguro, por lo tanto, si el dispositivo es robado, nadie podrá echarle una mano a los datos.
Sé un poco sobre el cifrado, leí sobre AES (entendí las matemáticas detrás, no tan complicado), pero no estoy seguro de cómo hacer correctamente un buen cifrado de archivos, desde el punto de vista de la usabilidad.
Espero que tengas mi problema, si no, por favor di lo que no está claro.

Por lo tanto, mi pregunta es:

¿Qué pasos debo seguir (cosas para leer, etc.) para tener un cifrado adecuado que también sea lo suficientemente rápido?

Ejemplo: Vi que Spotify está haciendo una especie de cifrado de sus archivos que parece ser lo suficientemente rápido.

Hecho conocido: todo lo que sé hasta ahora es que el almacenamiento de la clave utilizada para el cifrado es lo suficientemente seguro, por lo que no es un problema.

    
pregunta Andrei Toader 22.10.2014 - 10:53
fuente

3 respuestas

1

Según los comentarios, sugeriría hacer AES simples en el lado del servidor. Por ejemplo, cuando un cliente desea abrir un documento, solicita el descifrado, y luego el documento se envía al servidor, se descifra y luego se devuelve. El documento descifrado nunca se almacena en la memoria flash, solo en la memoria RAM. Una vez que el usuario esté inactivo durante un período determinado o cambie a otra aplicación, elimine el documento de la RAM.

Tenga en cuenta que el canal de comunicación debe ser seguro (por ejemplo, protegido por VPN o medios similares), ya que los datos de texto sin cifrar se transmitirán por cable.

Sin embargo, si puede permitirse (por ejemplo, hay suficiente espacio en el disco para que no necesite descargar el espacio en el disco del dispositivo), en su lugar, puede almacenar Todo en el disco de los clientes o en su disco, sin cifrar, y usar un servidor simple. Proceso de autenticación para asegurarse de que los dispositivos robados no puedan solicitar documentos fuera del servidor. Eso significaría que nunca se almacenarán documentos en el dispositivo.

Luego, simplemente envíe los documentos para su visualización inmediata en la aplicación.

    
respondido por el sebastian nielsen 22.10.2014 - 13:56
fuente
1

Recomendaría utilizar una solución existente como SQLCipher, que ya funciona bien en Android y le permite almacenar todo tipo de datos en una base de datos (o si lo desea, varias). Esto ciertamente sería más fácil y más seguro que tratar de implementar su propio cifrado de archivos.

    
respondido por el Natanael 22.10.2014 - 16:31
fuente
0

Hay una forma fácil y sólida de agregar cifrado al almacenamiento a cualquier aplicación de Android. Para almacenar archivos, puede crear un disco virtual encriptado usando IOCipher . Para el almacenamiento de la base de datos cifrada, use SQLCipher para Android . La biblioteca CacheWord facilita la administración de la contraseña de usuario para ese almacenamiento encriptado.

IOCipher usa la misma API que java.io.* y SQLCipher usa la misma API como android.database.* , por lo que ambas son realmente fáciles de usar. Aquí es cómo agregarlos a través de gradle:

compile 'net.zetetic:android-database-sqlcipher:3.3.1-2@aar'
compile 'info.guardianproject.cacheword:cachewordlib:0.1'
compile 'info.guardianproject.iocipher:IOCipher:0.3'
    
respondido por el Hans-Christoph Steiner 06.11.2015 - 16:41
fuente

Lea otras preguntas en las etiquetas