¿Cómo puede ser tan rápido el cifrado de Android?

43

Android utiliza el cifrado de disco completo para cifrar archivos y descifrarlos en el inicio. Lo que no entiendo es que descifrar varios gigabytes de archivos debe llevar mucho tiempo, y nada más que al menos el tiempo de acceso de E / S requerido para leer todo el contenido del almacenamiento, pero Android se inicia en unos pocos segundos. ¿Cómo es esto posible?

    
pregunta Aayush Mahajan 12.05.2018 - 20:47
fuente

3 respuestas

83

El cifrado se produce en la memoria, no en el disco.

No está entendiendo cómo funciona el cifrado de disco. No lee todo el disco y lo reemplaza por una versión descifrada. Más bien, cuando se accede a un archivo o sector de datos encriptados, se lee en la memoria y se descifra en la memoria . Del mismo modo, cuando se escribe en el disco, los datos se cifran en la memoria antes de guardarlos en el almacenamiento persistente. Los sistemas operativos conservan copias de los datos que se han leído o que se deben escribir en la memoria (el búfer del sistema de archivos) como una optimización del rendimiento. Es en esta memoria que tiene lugar el cifrado y el descifrado. Esto permite que los datos se lean del disco y se descifren una vez, pero posteriormente se accedan muchas veces desde la memoria. Por cierto, usar la memoria para almacenar archivos de acceso frecuente es la razón por la que tantas personas piensan erróneamente que Linux consume demasiada RAM .

También quiero señalar que el cuello de botella es a menudo E / S, no cifrado. Usted dice que el cifrado de gigabytes de datos lleva mucho tiempo, pero en la mayoría de las máquinas modernas (incluidos los dispositivos móviles), el cifrado de gigabytes de datos puede llevar solo unos segundos (especialmente con la aceleración de hardware, el cifrado es realmente, muy rápido ). Sin embargo, la unidad de estado sólido en la mayoría de los dispositivos Android modernos no puede leer ni escribir datos a casi esas velocidades. Así que no importa qué tan rápido intente leer o escribir datos en el disco, el cuello de botella generalmente siempre será E / S, no cifrado.

El hardware más antiguo a menudo sufría un rendimiento reducido cuando el cifrado estaba en uso. Esto se debía a que, en ese momento, las velocidades de almacenamiento estaban mejorando más rápido que las velocidades del procesador. La falta de aceleración de hardware dedicada para la criptografía y los algoritmos ineficientes a menudo causaron una desaceleración notable al acceder al disco. En los sistemas modernos, esto se invierte. El procesador es tan rápido que el dispositivo de almacenamiento se esfuerza por mantenerse al día. Cualquier gasto general es insignificante.

    
respondido por el forest 13.05.2018 - 00:22
fuente
49

No descifra el disco completo al inicio. En su lugar, descifra continuamente los datos a medida que se leen del disco cuando se leen desde el disco, dejando el contenido real en el disco intacto y encriptado. Dado que el descifrado es rápido en comparación con las lecturas del disco, no debería afectar significativamente la velocidad de lectura. Por supuesto, agrega (marginalmente) a la carga general, sin embargo.

    
respondido por el Anders 12.05.2018 - 21:26
fuente
14

No hay razón para descifrar gigabytes de archivos al inicio. Android solo necesita descifrar los archivos exactos que necesita para cargar en la memoria en el inicio.

FDE en Android no encripta el kernel, solo la partición de datos del usuario. Puede leer más en el sitio oficial .

El cifrado moderno acelerado por hardware es bastante rápido y no ralentiza demasiado el sistema. Especialmente cuando solo los archivos de usuario están cifrados con FDE y no son realmente críticos para la velocidad. Hay otros inconvenientes, que en realidad figuran en la página vinculada, pero la velocidad no es el problema.

Los teléfonos Android no podían descifrar toda la partición en el inicio, incluso si quisieran, no hay dónde almacenarla.

    
respondido por el Therac 12.05.2018 - 21:32
fuente

Lea otras preguntas en las etiquetas