🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónProtección de datos y llavero: cuándo queda cifrado lo que la app guarda
4 tareas · 45 min · Principiante
iOS cifra los archivos de una app con una clave que depende de una clase de protección, y esa clase decide cuándo se pueden leer: solo con el teléfono desbloqueado, desde el primer desbloqueo tras encender, o siempre. El llavero tiene su propio juego de clases de accesibilidad, y además permite que un elemento se quede en este aparato o pueda pasar a otro. Un dato sensible con la clase equivocada, o en un sitio sin clase, es el hallazgo clásico de almacenamiento local. En esta sala se leen los archivos, el llavero y las preferencias que Quetzal Cliente dejó en un dispositivo de pruebas y se decide qué cuenta.
Objetivo de la sala
iOS cifra los archivos de una app con una clave que depende de una clase de protección, y esa clase decide cuándo se pueden leer: solo con el teléfono desbloqueado, desde el primer desbloqueo tras encender, o siempre. El llavero tiene su propio juego de clases de accesibilidad, y además permite que un elemento se quede en este aparato o pueda pasar a otro. Un dato sensible con la clase equivocada, o en un sitio sin clase, es el hallazgo clásico de almacenamiento local. En esta sala se leen los archivos, el llavero y las preferencias que Quetzal Cliente dejó en un dispositivo de pruebas y se decide qué cuenta.Cada archivo del contenedor de una app tiene una clase de protección. Hay cuatro. La más estricta hace que el archivo solo se pueda abrir con el teléfono desbloqueado. Otra permite seguir escribiendo un archivo que ya estaba abierto cuando el teléfono se bloqueó. La tercera lo abre desde el primer desbloqueo tras encender el aparato, aunque después se vuelva a bloquear. La cuarta no protege el archivo con la clave de acceso del usuario.
Si la app no elige otra, los archivos reciben la tercera, que es el valor intermedio. Eso significa que, tras un primer desbloqueo, un archivo con la clase por defecto queda disponible aunque la pantalla esté bloqueada. Para un dato que debe estar protegido en cuanto el teléfono se bloquea, la clase por defecto no basta y la app debe pedir la más estricta.
Responde para continuar
¿Qué pasa con un archivo que lleva la clase de protección por defecto después de que el usuario desbloquea el teléfono una vez?
Ver pista de ayuda
La clase por defecto abre el archivo desde el primer desbloqueo, no solo mientras el teléfono está desbloqueado.
La clase sin protección no es un problema por sí misma: una imagen pública de una campaña o un catálogo de talleres no pierden nada porque se lean. El hallazgo aparece cuando esa clase coincide con un dato personal o de negocio. La revisión cruza dos columnas: qué protección tiene el archivo y qué contiene.
El listado del contenedor de Quetzal trae seis archivos con su clase y una nota sobre el contenido. Dos llevan la clase sin protección. Cruza la columna de clase con la de contenido y quédate con el que guarda datos de personas.
Responde para continuar
Escribe el nombre del archivo que no tiene protección y guarda datos personales de los clientes.
Ver pista de ayuda
Filtra primero los archivos con clase None y después lee qué contiene cada uno.
El llavero guarda secretos pequeños (tokens, claves, contraseñas) con una clase de accesibilidad por elemento. Las habituales son: solo con el teléfono desbloqueado, tras el primer desbloqueo, y variantes que además atan el elemento a este aparato o exigen que haya un código de acceso puesto. La clase por defecto, si la app no elige, es la de solo con el teléfono desbloqueado.
Hay una clase que permite leer el elemento siempre, incluso con el teléfono recién encendido y sin desbloquear, y que Apple marcó como obsoleta. Quitar la protección del bloqueo de un secreto es justo lo que el llavero existe para evitar. Revisa el listado del llavero de Quetzal y localiza el elemento con esa clase.
Responde para continuar
Escribe el nombre de la cuenta del elemento del llavero que usa la clase de accesibilidad obsoleta que permite leerlo siempre.
Ver pista de ayuda
Mira la columna de accesibilidad y busca la constante que termina en Always.
En el dispositivo de pruebas, el token de sesión de la cuenta de prueba está en el llavero, donde corresponde, y además en un archivo de preferencias de la app, que no tiene el cifrado reforzado de un elemento de llavero y suele entrar en las copias de seguridad del dispositivo. Esa segunda copia es el hallazgo: el secreto está protegido en un sitio y desprotegido en otro, y vale lo que valga el eslabón más débil.
El arreglo no es proteger mejor la copia, es no tenerla. Y como el valor ya estuvo guardado en un sitio débil, se recomienda también invalidar los tokens emitidos, porque no se puede dar por perdido el secreto sin rotarlo.
Responde para continuar
Encuentras el token de sesión tanto en el llavero como en las preferencias. ¿Qué se recomienda?
Ver pista de ayuda
Un secreto es tan fuerte como su copia más débil. Se arregla quitando la copia, no maquillándola.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.