Con la salida al mercado del iPhone 6 y el iPhone 6 Plus, quedó un poco
ensombrecido un movimiento que la competencia realizaba, el
cifrado por defecto en las nuevas versiones de Android.
Para entrar en materia, podemos decir que todos los dispositivos con
Android desde la versión 3.0 cuentan con una opción para habilitar un
cifrado en la partición /data del usuario, de tal manera que toda
información que entre o salga debe cifrarse/descifrarse antes de ser
utilizada.
Para aquellos que como un servidor hayan probado (o utilicen desde
entonces) el cifrado en
Android, seguramente recordarán que la primera
vez te pedían que insertaras una contraseña. Para colmo, al menos en la
versión que yo lo activé (supongo que sería la 3.5) te obligaban además
que la contraseña fuera alfanumérica de seis o más caracteres (nada de
PIN o patrón de desbloqueo) y que además debía ser semejante a la de
desbloqueo.
Esta restricción es debida a que el FDE
(Full Disk Encryption), una versión capada del
Framework dm-crypt de Linux, genera una
Master Key
de 128 bits aleatoria protegida bajo un cifrado AES CBC que utiliza la
contraseña. Restricción que en las nuevas versiones de
Android ha
desaparecido, lo que repercute en un aumento de la seguridad (no se
conoce por tanto la clave pública) y de paso apunta al guardado de
contraseña en hardware (técnica que ha aplicado también Apple con el
User ID).
Es este elemento el que a priori me parece más interesante, ya que
pasamos de una clave KEK pública y generada por el usuario (aka poco
insegura) a otra que se genera y guarda en el hardware, posiblemente
mediante la librería QSEE que recopila credenciales hardware compatibles
con la amplia mayoría de SoCs de Qualcomm.
Agrega el factor hardware a la ecuación, lo que obliga al posible
atacante a tener que lanzar el ataque por fuerza bruta en el propio
dispositivo, y no en un ordenador preparado específicamente para dar
solución a grandes volúmenes de procesamiento, cosa que hasta ahora
solía ocurrir (bastaba con que el atacante sacara una copia del
cifrado y
de la partición de datos y la metiera en un ordenador con una gráfica
potentilla).
Además, delega la seguridad del dispositivo en elementos donde el
usuario no tiene control, por lo que este ve desplazado su puesto en la
cadena de seguridad, y evita ser el eslabón más débil (algo habitual,
por otra parte).
Seguramente aún así sea explotable, pero lo que antes podría llegar a
romperse en 5 minutos (y lo digo en serio), ahora posiblemente lleve
días o semanas. El cifrado por
defecto es una gran herramienta cuando el
cliente pierde el terminal, e incluso cubre algunos casos de tráfico de
datos entre aplicaciones que no cuentan con los permisos adecuados, por
lo que bienvenido sea.
Fuente:
Blog de Pablo Yglesias