Capitulo6 HMI
Capitulo6 HMI
Capitulo6 HMI
CCN-STIC 453E
Septiembre de 2018
CCN-STIC-453E Seguridad de dispositivos móviles: Android 7.x
Edita:
CENTRO CRIPTOLOGICO NACIONAL
2.5.4.13=Qualified Certificate: AAPP-SEP-M-SW-KPSC, ou=sello
electrónico, serialNumber=S2800155J, o=CENTRO
CRIPTOLOGICO NACIONAL, cn=CENTRO CRIPTOLOGICO
NACIONAL, c=ES
2018.09.27 17:53:52 +02'00'
PRÓLOGO
El uso masivo de las tecnologías de la información y las telecomunicaciones (TIC), en todos los
ámbitos de la sociedad, ha creado un nuevo espacio, el ciberespacio, donde se producirán
conflictos y agresiones, y donde existen ciberamenazas que atentarán contra la seguridad
nacional, el estado de derecho, la prosperidad económica, el estado de bienestar y el
normal funcionamiento de la sociedad y de las administraciones públicas.
El Real Decreto 3/2010, de 8 de enero, por el que se regula el Esquema Nacional de Seguridad
en el ámbito de la Administración Electrónica (ENS, en adelante), al que se refiere el apartado
segundo del artículo 156 de la Ley 40/2015, de 1 de octubre, de Régimen Jurídico del Sector
Público, establece la política de seguridad en la utilización de medios electrónicos que permita
una protección adecuada de la información.
Precisamente el Real Decreto 3/2010 de 8 de Enero, modificado por el Real Decreto 951/2015,
de 23 de octubre, fija los principios básicos y requisitos mínimos así como las medidas de
protección a implantar en los sistemas de la Administración, y promueve la elaboración y
difusión de guías de seguridad de las tecnologías de la información y las comunicaciones
(STIC) por parte de CCN para facilitar un mejor cumplimiento de dichos requisitos
mínimos.
ÍNDICE
1. INTRODUCCIÓN .................................................................................................... 7
2. OBJETO................................................................................................................. 7
3. ALCANCE .............................................................................................................. 9
4. HISTORIA DE ANDROID: VERSIONES Y CARACTERÍSTICAS....................................... 9
4.1. ANDROID 2.X...........................................................................................................11
4.2. ANDROID 3.X...........................................................................................................11
4.3. ANDROID 4.0 ...........................................................................................................12
4.4. ANDROID 4.1 ...........................................................................................................12
4.5. ANDROID 4.2 ...........................................................................................................13
4.6. ANDROID 4.3 ...........................................................................................................14
4.7. ANDROID 4.4 ...........................................................................................................16
4.8. ANDROID 5.X...........................................................................................................18
4.9. ANDROID 6.X...........................................................................................................20
4.10. ANDROID 7.X.........................................................................................................25
4.11. DIFERENCIAS ENTRE LAS MÚLTIPLES VERSIONES DE ANDROID...........................32
5. ENTORNO DE APLICACIÓN DE ESTA GUÍA ............................................................ 34
6. ACTUALIZACIÓN DEL SISTEMA OPERATIVO ANDROID .......................................... 37
6.1. ACTUALIZACIÓN AUTOMÁTICA DEL SISTEMA OPERATIVO ANDROID....................38
6.2. SERVICIOS DE GOOGLE PLAY ..................................................................................52
6.3. ACTUALIZACIÓN MANUAL COMPLETA DE ANDROID .............................................52
6.4. ACTUALIZACIÓN MANUAL PARCIAL DE ANDROID..................................................59
6.5. A/B (SEAMLESS) SYSTEM UPDATES ........................................................................64
6.5.1. PROCESO DE ACTUALIZACIÓN SEAMLESS UPDATE ...........................................69
7. MODELO Y ARQUITECTURA DE SEGURIDAD DE ANDROID.................................... 70
7.1. MODELO DE PERMISOS DE ANDROID ....................................................................71
7.1.1. MODELO DE PERMISOS EN TIEMPO DE INSTALACIÓN ......................................72
7.1.2. MODELO DE PERMISOS EN TIEMPO DE EJECUCIÓN .........................................76
7.1.3. PERMISOS NORMALES Y PELIGROSOS ...............................................................80
7.1.4. PERMISOS SIMPLIFICADOS Y GRUPOS DE PERMISOS DE GOOGLE PLAY ..........80
7.1.5. PERMISOS DE ACCESO ESPECIAL .......................................................................84
7.2. APP OPS ..................................................................................................................85
7.3. SANDBOX DE EJECUCIÓN DE LAS APPS ..................................................................86
7.4. COMPARTICIÓN DE DATOS ENTRE APPS Y DIRECT SHARE .....................................89
7.5. ART (ANDROID RUNTIME) ......................................................................................91
7.6. INSTALACIÓN DE APPS (DE ORÍGENES DESCONOCIDOS) EN ANDROID .................93
7.7. FIRMA DIGITAL DE APPS EN ANDROID ...................................................................95
7.7.1. ESQUEMA DE FIRMADO DE APK V1 (JAR)..........................................................96
7.7.2. ESQUEMA DE FIRMADO DE APK V2...................................................................97
7.8. SELINUX EN ANDROID.............................................................................................98
7.9. PROCESO DE ARRANQUE SEGURO: VERIFIED BOOT ............................................101
7.10. MODO DE ARRANQUE SEGURO: SAFE MODE ....................................................104
7.11. ANDROID WEBVIEWS .........................................................................................106
7.12. CONFIGURACIÓN POR DEFECTO DEL DISPOSITIVO MÓVIL ................................109
1. INTRODUCCIÓN
1. El desarrollo de los dispositivos y comunicaciones móviles, y de las
tecnologías inalámbricas, en los últimos años ha revolucionado la forma de
trabajar y comunicarse. El uso creciente de estas tecnologías sitúa a los
dispositivos móviles como uno de los objetivos principales de las
ciberamenazas.
2. La proliferación de dispositivos móviles en los últimos años, junto al
aumento de las capacidades, prestaciones y posibilidades de utilización de
los mismos, hace necesario evaluar en profundidad la seguridad ofrecida por
este tipo de dispositivos respecto a la información que gestionan,
profundizando en los mecanismos de protección que ofrecen, dentro de los
entornos de Tecnologías de la Información y las Comunicaciones (TIC).
3. Se considera dispositivo móvil aquel dispositivo electrónico de uso personal
o profesional de reducido tamaño que permite la gestión de información
(almacenamiento, intercambio y procesamiento de información) y el acceso
a redes de comunicaciones y servicios remotos, tanto de voz como de datos,
y que habitualmente dispone de capacidades de telefonía, como por
ejemplo teléfonos móviles, smartphones (teléfonos móviles avanzados o
inteligentes), tablets (o tabletas) y agendas electrónicas (PDAs, Personal
Digital Assistants), independientemente de sí disponen de teclado físico o
pantalla táctil.
4. Pese a que los dispositivos móviles se utilizan para establecer
comunicaciones personales y profesionales, privadas y relevantes, y para el
almacenamiento e intercambio de información sensible, el nivel de
percepción de la amenaza de seguridad real existente no ha tenido la
suficiente trascendencia en los usuarios finales y las organizaciones.
5. La concienciación, el sentido común y las buenas prácticas en la
configuración y el uso de los dispositivos móviles constituyen una de las
mejores defensas para prevenir y detectar este tipo de incidentes y
amenazas [Ref.- 404].
6. El presente documento realiza un análisis detallado de los mecanismos y la
configuración de seguridad recomendados para uno de los principales
sistemas operativos de dispositivos móviles utilizados en la actualidad,
Android 7.x, en concreto hasta la versión 7.1.2, con el objetivo de reducir su
superficie de exposición frente a ataques de seguridad.
2. OBJETO
7. El propósito del presente documento es definir una lista de
recomendaciones de seguridad para la configuración de dispositivos móviles
basados en el sistema operativo Android versión 7.1.2 (en adelante Android)
[Ref.- 1], cuyo objetivo es proteger el propio dispositivo móvil, sus
comunicaciones y la información y datos que gestiona y almacena.
8. La presente guía proporciona los detalles específicos de aplicación e
implementación de las recomendaciones de seguridad generales descritas
en la guía inicial de esta misma serie [Ref.- 400], que presenta la información
necesaria para la evaluación y análisis de los riesgos, amenazas, y
vulnerabilidades de seguridad a las que están expuestos los dispositivos
móviles en la actualidad.
9. La serie CCN-STIC-450, "Seguridad de dispositivos móviles", se ha
estructurado en dos niveles: una guía genérica inicial centrada en al análisis
de seguridad de dispositivos móviles (CCN-STIC-450) [Ref.- 400],
complementada por guías específicas para los principales sistemas
operativos empleados por los dispositivos móviles hoy en día (o en el
pasado). Por este motivo, antes de la lectura y aplicación de la presente guía,
asociada a un sistema operativo (y versión concreta del mismo), se
recomienda la lectura de la guía general de seguridad, CCN-STIC-450.
10. La presente guía está basada en la versión previa de la misma guía
"Seguridad de dispositivos móviles: Android 6.x" [Ref.- 406], centrada en la
versión 6.0.1 de Android y publicada en el año 2018.
11. Adicionalmente, se recomienda la lectura de las guías de esta misma serie
asociadas a otros sistemas operativos y versiones de plataformas móviles, en
caso de ser necesaria su aplicación en otros terminales, y a la gestión
empresarial de dispositivos móviles (MDM):
CCN-STIC-450 - Seguridad de dispositivos móviles [Ref.- 400]
CCN-STIC-451 - Seguridad de dispositivos móviles: Windows Mobile 6.1
CCN-STIC-452 - Seguridad de dispositivos móviles: Windows Mobile 6.5
CCN-STIC-453(A) - Seguridad de dispositivos móviles: Android 2.x [Ref.-
401]
CCN-STIC-453B - Seguridad de dispositivos móviles: Android 4.x [Ref.- 402]
CCN-STIC-453C - Seguridad de dispositivos móviles: Android 5.x [Ref.- 405]
CCN-STIC-453D - Seguridad de dispositivos móviles: Android 6.x [Ref.- 406]
CCN-STIC-454(A) - Seguridad de dispositivos móviles: iPad (iOS 7.x)
CCN-STIC-455(A) - Seguridad de dispositivos móviles: iPhone (iOS 7.x)
CCN-STIC-457 - Gestión de dispositivos móviles: MDM (Mobile Device
Management) [Ref.- 403]
CCN-STIC-456 - Guía de cuenta de usuario, servicios y aplicaciones de
Google para dispositivos móviles Android [Ref.- 407]
Nota: Esta serie de guías están diseñadas considerando como requisito la necesidad de
encontrar un equilibrio entre seguridad y usabilidad en relación a las capacidades y
funcionalidad disponibles en los dispositivos móviles a proteger, con el objetivo de
poder hacer uso de la mayoría de características disponibles en los mismos de forma
segura.
3. ALCANCE
12. Las Autoridades responsables de la aplicación de la Política de Seguridad de
las TIC (STIC) determinarán su análisis y aplicación a los dispositivos móviles
ya existentes o futuros bajo su responsabilidad.
1
Imagen: http://www.techotopia.com/index.php/Image:Android_architecture2.png
2
http://www.zdnet.com/article/android-and-linux-re-merge-into-one-operating-system/
16. Las versiones de Android (desde la versión 1.5) emplean nombres en clave
correspondientes a nombres de postres y dulces en inglés, ordenados
alfabéticamente. A continuación, se muestra el listado de versiones de
Android conocidas en el momento de elaboración de la presente guía:
Alpha (1.0)
Beta (1.1)
Cupcake (1.5)
Donut (1.6)
Eclair (2.0-2.1)
Froyo (2.2-2.2.3)
Gingerbread (2.3-2.3.7)
Honeycomb (3.0-3.2.6)
Ice Cream Sandwich (4.0-4.0.4)
Jelly Bean (4.1-4.3.1)
KitKat (4.4-4.4.4)
Lollipop (5.0)
Marshmallow (6.0)
Nougat (7.0)
17. Google mantiene una web en la que proporciona recomendaciones
generales sobre buenas prácticas de seguridad para desarrolladores, que se
puede consultar para obtener una visión global de qué elementos resultan
clave dentro de la plataforma Android para garantizar la seguridad del
dispositivo móvil y las apps que en él se instalen [Ref.- 184].
28. Adicionalmente la versión 4.1 de Android añadió soporte para GCM (Google
Cloud Messaging) [Ref.- 143], un servicio que permite el envío de mensajes y
notificaciones push a los usuarios de apps específicas por parte de sus
desarrolladores desde sus servidores a través de Google. Estas capacidades
pueden ser también empleadas, por ejemplo, por las soluciones
empresariales de gestión de dispositivos móviles (MDM).
29. Asimismo, Android 4.1 añadió múltiples capacidades a Google Play, como
funcionalidad para proteger las apps de pago y sus contenidos mediante
cifrado, empleando una contraseña específica para cada dispositivo móvil,
antes de ser distribuidas y almacenadas desde la tienda o mercado oficial de
apps de Google. Los nuevos servicios de Google Play también permiten
integrar las capacidades de autentificación asociadas a la cuenta de usuario
de Google en las apps de Android, así como integrarlas con Google+. Con el
objetivo de mejorar y optimizar la distribución de nuevas actualizaciones de
las apps, las actualizaciones de apps inteligentes (Smart App Updates)
permiten enviar a los dispositivos móviles Android únicamente los
elementos de la app que han sido actualizados, en lugar del paquete de
Android (o APK) completo de la app.
temporal de "App Ops" (un sistema granular de control de permisos para las
aplicaciones móviles, oculto por defecto4), optimizaciones en el cálculo de la
localización vía hardware en lugar de software (hardware geofencing) y
soporte para la obtención de información de redes Wi-Fi cercanas para los
servicios de localización, incluso cuando el interfaz Wi-Fi está apagado. La
mayoría de dispositivos móviles Nexus obtuvieron la actualización 4.3 a la
semana de su publicación, y el primer dispositivo móvil en ser
comercializado directamente con Android 4.3 fue la segunda generación de
la tablet Nexus 7, conocida como Nexus 7 2013 (también desarrollada por
Google y Asus), en julio de 2013.
34. La versión 4.3 añadió notables mejoras de seguridad [Ref.- 140], destacando:
Las apps pueden configurar las credenciales de redes Wi-Fi WPA(2)-
Empresariales que necesiten, pudiendo emplear múltiples métodos de
autentificación basados en el estándar EAP (Extensible Authentication
Protocol).
La API de KeyChain dispone de nuevas capacidades para establecer que un
conjunto de credenciales no puede ser exportado fuera del dispositivo
móvil, es decir, se vinculan al hardware o dispositivo móvil concreto.
Asimismo, las apps disponen de capacidades para almacenar credenciales
en un Keystore privado que no esté accesible a otras apps, y estas
credenciales pueden ser añadidas sin interacción del usuario, siendo
posible definir que tampoco puedan ser exportadas.
La partición de sistema ("/system") en Android 4.3 es montada con
restricciones mediante el parámetro o flag nosuid, y los procesos derivados
de zygote no disponen de capacidades para ejecutar programas SUID,
limitando por tanto la ejecución de programas con setuid o setgid por
parte de las apps (por ejemplo, con privilegios de root o superusuario), y
evitando así la explotación de ciertas vulnerabilidades previamente
conocidas. Adicionalmente se eliminaron numerosos programas setuid o
setgid.
Tanto zygote como ADB reducen sus capacidades antes de ejecutar apps,
evitando así que las apps ejecutadas tanto desde el propio Android como
desde una shell (a través de ADB) no dispongan de capacidades
privilegiadas. Adicionalmente zygote evita que se añadan nuevas
capacidades antes de ejecutar código por parte de las apps, evitando la
elevación de privilegios vía "execve".
Utilización de las capacidades FORTIFY_SOURCE por parte de las librerías y
aplicaciones del sistema para prevenir la explotación de vulnerabilidades
de strings no terminados adecuadamente o de corrupción de memoria,
junto a otras protecciones en la reubicación de código (relocation) para
binarios enlazados estáticamente y en el propio código de Android.
4
Este sistema granular de control de permisos para las aplicaciones móviles fue eliminado en una
versión posterior de Android por Google, concretamente en la versión 4.4.2. El mismo actuó como el
precursor del modelo de permisos en tiempo de ejecución introducido en Android 6.x.
5
El valor mínimo de RAM necesario para ejecutar Android 4.4.x se supone que es de 340MB.
6
http://android-developers.blogspot.com.es/2013/10/android-44-kitkat-and-updated-developer.html
7
http://www.google.com/cloudprint/learn/index.html
8
https://play.google.com/store/apps/details?id=com.google.android.apps.cloudprint&hl=es
disponible en Google Play, para hacer uso de este servicio. Se recomienda deshabilitar
las capacidades de impresión de Android si no se está haciendo uso de ellas
(habilitadas por defecto). El análisis de seguridad de Cloud Print queda fuera del
alcance de la presente guía.
9
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0224
10
Esta vulnerabilidad se solucionó adicionalmente a través de los servicios de Google Play (GPS, Google
Play Services) para otras versiones de Android previas.
11
http://en.wikipedia.org/wiki/Google_Nexus y http://www.google.es/nexus/.
12
Herramientas: "dumpsys batterystats" y Battery Historian (https://github.com/google/battery-
historian).
13
Escaneos (modo central) y anuncios (modo periférico).
conferencia Google I/O), con soporte para los dispositivos móviles Nexus 5, 6,
7 (sólo para la versión de 2013) y 9. Esta versión incluía mejoras adicionales
para el ahorro de batería a través del proyecto Doze, capacidades "Direct
Share" para la compartición de datos directamente entre apps 14 ,
optimizaciones de contenido para el "Asistente"15, soporte para los nuevos
conectores USB de tipo C (con capacidad de carga ultrarrápida), capacidades
automáticas para la realización de copias de seguridad (o backups)
automáticas de los datos de las apps (y su recuperación), verified boot (ver
apartado "7.9. Proceso de arranque seguro: Verified Boot"), compatibilidad
con dispositivos MIDI, la introducción del concepto de dispositivos de
almacenamiento flexibles o adoptables [Ref.- 603] (ver apartado "10.3.
Dispositivos de almacenamiento "), capacidades que facilitan la
transferencia de datos, cuentas y apps durante el proceso de migración a un
nuevo dispositivo móvil, funcionalidad para añadir una cuenta de e-mail
adicional (personal o corporativa) durante el proceso de instalación y
configuración inicial, soporte para el estándar Wi-Fi Hotspot 2.016 y para la
creación de zonas Wi-Fi en las bandas de frecuencia de 5 GHz, soporte para
el perfil SAP (SIM Access Profile) de Bluetooth que permite hacer llamadas
de teléfono desde un vehículo empleando la tarjeta SIM del dispositivo
móvil, numerosas nuevas capacidades en Android for Work (ver apartado
"8.2. Android for Work"), etc.
55. Android 6.x introduce de forma oficial el "Administrador de permisos", una
funcionalidad que permite al usuario gestionar a nivel de aplicación los
permisos de calendario, contactos, cámara, micrófono, SMS, sensores,
teléfono y ubicación (ver apartado "7.1. Modelo de permisos de Android").
56. Android 6.x introduce la función "Now on tap", cuyo propósito es
proporcionar al usuario información contextualizada sobre lo que muestra la
aplicación que se encuentra en primer plano cuando se invoca "Now on tap"
(ver apartado "Asistente de Google, Mi tablón y servicios de búsqueda de
Google" de la "Guía de cuenta de usuario, servicios y aplicaciones de Google
para dispositivos móviles Android" [Ref.- 407]).
57. En relación con el punto anterior, Android 6.x proporciona una integración
más directa con el servicio denominado feed (cuyo precursor es Google
Now), de forma que, manteniendo pulsado el botón de inicio, ofrece más
capacidades a la hora de interactuar con el dispositivo móvil y sus servicios
asociados a través de la voz [Ref.- 600].
58. En concreto, Android 6.x facilita a las aplicaciones móviles nuevas
capacidades para interactuar y llevar a cabo acciones por parte del usuario
mediante la voz [Ref.- 603], así como facilitar la interacción con las apps a
través del Asistente de Google, pudiendo éste disponer del contexto
14
https://developer.android.com/about/versions/marshmallow/android-6.0.html#direct-share [Ref.-
603]
15
https://developer.android.com/training/articles/assistant.html
16
Soporte para la especificación Hotspot 2.0 Release 1 en dispositivos Nexus 6 y Nexus 9 [Ref.- 603].
77. Las claves que no requieren ser almacenadas en formato cifrado, no serán
eliminadas cuando se deshabilita el uso de un código de acceso en la
pantalla de desbloqueo, por parte del usuario o de una app administradora
del dispositivo. Las que sí solicitan su almacenamiento cifrado sí serán
eliminadas en ese escenario.
78. El entorno de ejecución de Android 6.x no permite a las apps realizar la carga
de librerías dinámicas o compartidas con capacidad de reubicar sus
secciones de texto (text relocations) [Ref.- 602], con el objetivo de disponer
de código independiente de su posición en memoria (PIC, Position
Independent Code o PIE, Position Independent Executable) y poder así hacer
uso de ASLR. En versiones previas de Android, al llamar a la función
"dlopen()" con este tipo de librerías se generaba un aviso, pero sí se permitía
la carga de la librería.
79. En Android 6.x se lleva a cabo una verificación más estricta de los ficheros
APK a la hora de instalar una app, considerándose que el fichero APK está
corrupto si un fichero declarado en el fichero manifest no está presente
dentro del fichero APK. Por tanto, en caso de que cualquier contenido sea
eliminado del fichero APK, será necesario firmar de nuevo dicho fichero
[Ref.- 602].
80. Android 6.x proporciona nuevos modos de conexión a través del puerto USB
del dispositivo móvil, obligando a que la transferencia de datos por USB sea
iniciada a través de la notificación que se muestra cuando se conecta otro
dispositivo y no desde el menú de "Ajustes [Dispositivo] - Almacenamiento &
USB - [...] - Conexión USB a ordenador", tal como ocurría en versiones
previas de Android (ver apartado "13. Comunicaciones USB").
81. Los primeros dispositivos móviles basados en Android 6.x fueron los
smartphones Nexus 5X y 6P (desarrollados por Google junto a LG y Huawei,
respectivamente), y comercializados en octubre de 2015, ambos con sensor
de huella dactilar digital en su parte posterior y con el nuevo conector USB
de tipo C.
82. Desde el punto de vista de seguridad, cabe destacar (tal como se ha
mencionado anteriormente) la introducción en Android 6.x de un framework
o entorno (estándar en dispositivos móviles compatibles y con un lector de
huella o fingerprint) para llevar a cabo la autentificación mediante huella
dactilar digital, que, no sólo permite el desbloqueo del dispositivo móvil (ver
apartado "9.3. Huella dactilar digital (fingerprint)"), sino también la
autentificación desde las apps mediante huella (o incluso con otras
credenciales de la plataforma móvil mediante la API Confirm Credential), y la
realización de compras mediante Android Pay y de compras en Google Play,
junto al inicio de sesión en esta última plataforma.
83. Por otro lado, también desde el punto de vista de seguridad es necesario
destacar que Android 6.x introdujo un nuevo modelo de permisos en tiempo
de ejecución para las apps, donde ya no es necesario que el usuario otorgue
a la app todos los permisos solicitados en el momento de su instalación, sino
que estos pueden ser otorgados posteriormente y de manera granular y
17
https://android-developers.blogspot.com.es/2016/08/taking-final-wrapper-off-of-nougat.html
18
https://android-developers.blogspot.com/2016/05/designing-for-multi-window.html
19
https://android-developers.blogspot.com.es/2016/06/notifications-in-android-n.html
20
https://vr.google.com/intl/en_US/daydream/
21
https://android.googlesource.com/platform/frameworks/base/+/0fa02c7/packages/ExtServices/src/and
roid/ext/ services/notification/Ranker.java
94. El análisis del código de las apps permite optimizar especialmente los
métodos y módulos clave más utilizados en cada app, y reduce sus requisitos
de memoria RAM. Por otro lado, las tareas de precompilación de AOT
intentan minimizar el consumo de batería, llevándose a cabo cuando el
dispositivo móvil está ocioso y conectado a la corriente eléctrica.
95. Android 6.x introdujo el denominado "Doze" para optimizar el consumo de
batería cuando el dispositivo móvil no está siendo usado y permanece
inmóvil, por ejemplo, encima de una mesa [Ref.- 616]; Android 7.x mejora
dichas capacidades con "Doze on the Go", aplicando optimizaciones al
consumo incluso cuando el dispositivo móvil está en movimiento pero no
activo (p.ej. en el bolsillo del usuario) [Ref.- 702].
96. En Android 7.x se han mejorado las optimizaciones de memoria RAM que
comenzaron con el proyecto Svelte en Android 4.4 (ver apartado "4.7.
Android 4.4"), centrándose en cómo ejecutan las apps de fondo (o
background) [Ref.- 702].
97. Android 7.x incluye también Data Saver, una funcionalidad disponible a
través de "Ajustes - Uso de datos - Ahorro de datos" que permite limitar el
consumo de datos móviles (2/3/4G) de las apps que ejecutan de fondo [Ref.-
702]. Estas capacidades son especialmente útiles cuando el dispositivo móvil
se encuentra en el extranjero haciendo uso de roaming, está al final del ciclo
de facturación del operador de telefonía móvil, o hace uso de un plan de
datos limitado de prepago.
98. Al habilitar estas capacidades, las apps compatibles hacen un uso más
eficiente y limitado de la conexión de datos móvil (2/3/4G) mientras
ejecutan en primer plano, y el sistema limita el uso de datos cuando
ejecutan de fondo.
99. El usuario puede crear una lista blanca de apps autorizadas, para las que sí
se permitirá hacer uso de las comunicaciones de datos móviles cuando estén
ejecutando de fondo incluso aunque Data Saver esté activo. Mediante el
menú "Ajustes - Uso de datos - Ahorro de datos - Acceso a datos no
restringidos".
100.Desde el punto de vista de seguridad, en Android 7.x caben destacar las
mejoras durante el proceso de actualización de Android (o "Seamless
Updates"; consultar apartado "6.5. A/B (Seamless) System updates"), de
aplicación para los nuevos modelos de dispositivo móvil, llevándose a cabo
su ejecución transparentemente (de fondo o en background), sin que el
usuario tenga que esperar a que se completen las mismas. En el caso de
modelos de dispositivos móviles previos, se ha reducido el tiempo necesario
para llevar a cabo el proceso de actualización de Android.
101.Asimismo, Android 7.x introduce un nuevo sistema de cifrado del dispositivo
móvil basado en ficheros (en lugar de en la partición completa de usuario o
de datos), denominado "File-based Encryption" (ver apartado "10.1. Cifrado
del dispositivo móvil") y, asociado a éste, un nuevo sistema de arranque
22
https://android-developers.blogspot.com.es/2016/04/developing-for-direct-boot.html
23
https://developer.android.com/reference/android/provider/BlockedNumberContract.html
24
https://plus.google.com/+Chainfire/posts/fvEPo42GKXS
Las mejoras de seguridad de Android para cada una de las versiones [Ref.-
140].
Las características técnicas de Android para desarrolladores para cada una
de las versiones [Ref.- 86].
Las mejores prácticas de privacidad y seguridad de Android para
desarrolladores [Ref.- 57].
Nota: La guía ha sido diseñada (y aplicada) para dispositivos móviles estándar basados
en Android en los que no se ha llevado a cabo el proceso de rooting o root. Dicho
proceso permite al usuario disponer de control completo del dispositivo móvil y
acceder al mismo como root, superusuario, o usuario privilegiado, y en concreto, al
subsistema Linux subyacente en Android, eliminando así los controles y/o restricciones
establecidos por la plataforma Android estándar, los fabricantes y/o los operadores de
telefonía móvil asociados al dispositivo móvil.
Las apps disponibles para los dispositivos móviles Android, por defecto, no disponen
de permisos de escritura en ciertas zonas del sistema de ficheros, no pudiendo
reemplazar el sistema operativo, ni de privilegios para hacer uso de capacidades
específicas, como reiniciar el dispositivo móvil, modificar el uso de los LEDs hardware,
capturar la pantalla del dispositivo móvil o eliminar aplicaciones móviles instaladas por
algunos operadores de telefonía móvil. El proceso de rooting es utilizado por usuarios
avanzados para acceder a estas funcionalidades de bajo nivel.
Actualización del sistema operativo Android"), con largos periodos de tiempo hasta
que una nueva actualización está disponible para algunos modelos y usuarios, ha sido
a lo largo de la historia uno de los motivos que incentiva a muchos usuarios a realizar
el proceso de rooting para así poder instalar la última versión de Android en su
dispositivo móvil empleando otros proyectos como LineageOS (CyanogenMod).
25
https://developers.google.com/android/nexus/images
26
Dependiendo de la versión de las apps Google Services Framework (GSF) y Google Play Services (GPS).
27
https://github.com/google/protobuf/
versión 7.x de Android. Sin embargo, no se detalla este proceso de actualización por
quedar la versión 8.0 de Android fuera del alcance de la presente guía.
169. Es necesario destacar que esta opción solo está activa por defecto para los
dispositivos móviles que disponen de Android 7.0 o superior precargado de fábrica,
y no para aquellos que, estando en una versión anterior de Android, hayan sido
actualizados a Android 7.x.
170. Es también importante añadir que esta opción no aplica a actualizaciones
hacia versiones de Android superiores. En el caso de Android 7.x, no se llevará a
cabo la actualización automática a Android 8.x, aunque la opción "Actualizaciones
del sistema automáticas" se encuentre activa.
171. Una cuestión muy importante es que, una vez se detecta que existe una
versión mayor de Android disponible, los parches de seguridad correspondientes a
la versión actual no se aplicarán, siendo necesario instalarlos manualmente
siguiendo el procedimiento descrito en el apartado "6.4. Actualización manual
parcial de Android". El motivo de ello es que la política de actualizaciones de
Google pretende que sus terminales ejecuten la última versión de Android
principal que haya sido liberada para ellos.
172. El agente de usuario (User-Agent) empleado para la comunicación
HTTP/HTTPS en Android 7.1.1 es:
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.1; Nexus 5X
Build/N4F26O
Location: https://redirector.gvt1.com/packages/data/ota-api/
google_bullhead_bullhead/d405d41e68f71449cb5d860823962b2e5778330c.zip...
28
http://developer.android.com/reference/android/os/RecoverySystem.html
29
https://play.google.com/store/devices/details?id=htc_m8 (enlace inactivo a fecha 11/09/2016).
fecha de fin de comercialización (se toma la fecha más avanzada de las dos),
y Google no se compromete a que haya actualizaciones con posterioridad a
esa fecha [Ref.- 74].
204.Es importante reseñar que el compromiso de actualizaciones de Google
afecta a versiones concretas de Android según el modelo del dispositivo
móvil, y no se extiende indefinidamente a la versión original de Android con
el que éste se suministró de fábrica (por ejemplo, Android 7.x para el Nexus
5X).
205.Es decir, Google no se compromete a actualizar con los parches de seguridad
mensuales todas y cada una de las versiones de Android que han estado
disponibles para un dispositivo móvil concreto (Android 6, 7 y 8), sino que
actualizará mensualmente únicamente la última versión de Android
disponible para los dispositivos Nexus y Pixel aún cubiertos por el soporte de
Google. Por ejemplo, la última actualización de seguridad de Android 7.x
para el Nexus 5X fue la de agosto de 2017 (N2G48C), ya que los dispositivos
Nexus 5X a partir de dicha fecha también disponen de soporte para la
versión de Android 8.x.
206.Para el modelo Nexus 5X analizado en la presente guía, la última fecha de
compromiso de actualizaciones de seguridad es septiembre de 2018.
207.Desde octubre de 2016, Google añadió la fecha de publicación para cada
nueva versión de Android a la nomenclatura empleada en las referencias a
los ficheros con las imágenes de fábrica (factory image) correspondientes a
las actualizaciones de seguridad mensuales. Hasta ese momento, las
referencias estaban sólo compuestas por el número de compilación de la
versión de Android asociada. El nuevo modelo permite identificar el mes al
que corresponde la actualización y, por tanto, el nivel de parche de
seguridad de cada fichero.
208.Pese a que, en varias ocasiones, e incluso públicamente, los fabricantes de
dispositivos móviles de la Open Handset Alliance (OHA) han intentado llegar
a un acuerdo y comprometerse a proporcionar actualizaciones durante al
menos 18 meses (periodo mínimo de soporte) desde la comercialización
inicial de cada modelo de terminal, el tiempo y la historia han confirmado
que no han sido capaces de mantener y ratificar ni siquiera estos
compromisos públicos.
209.El fabricante del dispositivo móvil o el operador de telefonía es el que
publicará actualizaciones para el terminal. Como norma general, y salvo que
exista un motivo que desaconseje su instalación, se recomienda aplicar
sobre el dispositivo móvil todas las actualizaciones facilitadas por el
fabricante, ya que, pese a que las mismas no reflejen explícitamente que se
trata de actualizaciones de seguridad, pueden solucionar vulnerabilidades de
seguridad públicamente conocidas.
210.Para abordar la comercialización de dispositivos móviles en mercados
emergentes, como por ejemplo en la India, asociados con recursos
económicos más bajos, Google anunció en el año 2014 la creación de una
plataforma denominada Android One, que, en origen, pretendía llegar a
30
https://source.android.com
31
Las referencias que inicialmente publicó Google para informar sobre este ataque, que tuvo enorme
repercusión, han sido eliminadas de sus sitios web [Ref.- 88].
Nota: Para los ficheros de actualización automática (OTA), en lugar del SHA256 Google
sigue utilizando internamente el SHA1 en su nomenclatura.
244. Por ejemplo, el fichero de la imagen de fábrica completa correspondiente a
la versión Android 7.1.2 (N2G47O, de mayo de 2017) empleada para la
elaboración de la presente guía en un terminal Nexus 5X ("bullhead"), cuyo valor
SHA256 es
3ff32f55daae9d973021c3e67480d3210ace7aabc48eede762d2cea29180e3b2:
https://dl.google.com/dl/android/aosp/bullhead-n2g47o-factory-
3ff32f55.zip
32
https://developer.android.com/studio/releases/platform-tools.html
33
Para utilizar el protocolo ADB con el objetivo de interactuar con el dispositivo móvil y proceder a
actualizar la version de Android, es necesario descargar la última versión de las "platform tools" del
Android SDK (la versión mínima necesaria es la 25.0.5, ya que, en versiones anteriores, el demonio de
"adb" abortaba su ejecución para ficheros de gran tamaño; consultar
"https://issuetracker.google.com/issues/37139736" para más detalles).
259. Mediante la ejecución del script "flash-all" (".bat" o ".sh", según se haga uso
de un ordenador basado en Windows o en Linux) se llevará a cabo la instalación
de la versión de Android correspondiente, incluyendo la instalación de la imagen
del gestor de arranque (bootloader), del firmware del procesador de banda base
(baseband) o radio, y del sistema operativo Android o partición de sistema
("/system").
260.Si el bootloader no está desbloqueado, aunque se ejecute el script "flash-all"
y aparentemente se estén realizando las acciones contempladas en el mismo,
el script terminará fallando con el error "Failed (remote: device is locked.
Cannot flash images)".
261. Una vez el dispositivo móvil ha sido actualizado (tras ejecutar el script y
pasados unos minutos), se reiniciará y arrancará la nueva versión de Android
aplicada. El dispositivo móvil arrancará en su estado original de fábrica, por lo que
será necesario completar el proceso de instalación y configuración inicial (ver
apartado "23. Apéndice A: Proceso de instalación y configuración inicial").
Nota: El proceso de actualización desde una imagen completa de Android mediante el
script "flash-all" también elimina por defecto todos los datos de usuario del dispositivo
móvil. Esta es la opción de actualización recomendada con el objetivo de evitar
problemas de compatibilidad entre diferentes versiones de Android debido a la
existencia de contenidos y datos previamente existentes. Sin embargo, existe la
posibilidad de modificar el script "flash-all" y en concreto la directiva "fastboot -w
update ...", eliminado la opción "-w" (wipe), para que los datos de usuario no sean
borrados durante el proceso de actualización.
262.Desde el punto de vista de seguridad se recomienda bloquear de nuevo el
gestor de arranque (bootloader) nada más completar el proceso de
actualización. Para ello, basta con apagar el dispositivo móvil tras el primer
reinicio después de la actualización, arrancar de nuevo en modo fastboot
mediante ADB a través de USB o desde el propio dispositivo móvil con la
combinación de botones descrita previamente, y conectar el dispositivo
móvil a un ordenador mediante el puerto USB. Desde el mismo, es posible
ejecutar el comando "fastboot flashing lock" para volver a bloquear
34
https://forum.xda-developers.com
https://ota.googlezip.net/packages/ota-api/google_bullhead_
bullhead/a9f4fe0887c33f50db027480550c7b2ec49e231a.zip
274. Estos ficheros resultan de menor tamaño que las imágenes OTA completas
(full OTA images) que se pueden descargar manualmente desde el sitio web oficial
de Google, ya que contienen sólo los cambios a aplicar entre la versión actual y la
versión de Android destino tras aplicarse la actualización.
275.El nombre del directorio incluye el término "google_", seguido del nombre
en clave del tipo de dispositivo móvil, en este caso "bullhead" (por
duplicado) asociado al Nexus 5X. El nombre del fichero en este caso no
corresponde al valor (o parte del valor) del hash SHA256 del fichero ZIP de la
actualización, como ocurre con las versiones de las full OTA images o de las
actualizaciones completas (factory images), sino al valor del hash SHA1 de
dicho fichero ZIP. Este formato basado en el valor del hash SHA1 ya se
utilizaba en la nomenclatura de las actualizaciones parciales en versiones de
Android 4.x y anteriores.
276.El proceso de actualización manual parcial (desde Windows, Linux o macOS)
requiere disponer del fichero oficial de actualización OTA completo
descargado desde la web de Google, y es también necesario disponer del
SDK de Android y habilitar el acceso por USB al dispositivo móvil como
desarrollador, en concreto, mediante ADB, al igual que para realizar una
actualización manual completa. Se recomienda verificar el hash del fichero
de la imagen para asegurarse de que es correcto, comparando los 8
primeros caracteres hexadecimales del valor SHA256 (en el caso de
imágenes full OTA image descargadas desde la página oficial de Google) o
SHA1 (para imágenes OTA parciales que se han descargado mediante el
análisis del tráfico o logs) con los disponibles en el nombre del fichero.
277.En el caso de Android 5.x, este método permite únicamente la actualización
de la versión de Android disponible en el dispositivo móvil mediante una
imagen OTA parcial no oficial.
278.A partir de Android 6.x, este método también permite la actualización de la
versión de Android disponible en el dispositivo móvil mediante una imagen
OTA completa oficial (full OTA image).
279.Una vez el dispositivo móvil se ha conectado al ordenador mediante el
puerto USB, es necesario reiniciarlo desde la partición de recuperación (o
recovery). Para ello se puede utilizar el comando "adb" desde el ordenador
vía USB, el gestor de arranque (accesible mediante la combinación adecuada
de botones en el dispositivo móvil para acceder al bootloader, tal como se
ha descrito anteriormente) o acceder directamente mediante una nueva
combinación de botones.
280.Para acceder a la imagen de recuperación (o recovery) mediante el comando
"adb" es necesario disponer de acceso como desarrollador mediante USB, y
emplear el comando "adb reboot recovery", que mostrará la pantalla de la
imagen de recuperación con un androide y un icono de peligro (descrita
posteriormente).
35
https://source.android.com/source/building-devices.html#booting-into-fastboot-mode
36
https://cdn.arstechnica.net/wp-content/uploads/2016/05/Screenshot_20160513-200938.png
37
https://www.youtube.com/watch?v=mTFfl7AjNfI
312.El nuevo modelo de slots duales de Android 7.x conlleva también cambios en
la utilidad fastboot, algunos relativos a opciones existentes previamente y
otros relativos a opciones nuevas:
Opción "update <fichero.zip>": lanza un proceso de actualización partiendo
del fichero de actualización indicado como parámetro y marca el slot
actualizado como activo.
Opción "flashall": si el dispositivo soporta slots, el slot sobre el que se haga
el proceso de volcado (flash) de la nueva imagen se marca como activo. Las
imágenes secundarias pueden ser volcadas sobre un slot inactivo. Para
mantener el slot inactivo intacto y arrancable aunque el comando "flashall"
o el comando "update" conllevasen una modificación del slot no activo, se
deberá añadir el parámetro "--skip-secondary".
Opción "set_active <slot>" o "--set-active=<slot>": fija el slot activo si el
dispositivo soporta slots. Básicamente cambia el flag del bootloader,
aunque esto no implica que el nuevo slot se convierta en activo en ese
momento (como en el caso de estarse ejecutando el bootloader sobre el
slot inactivo). Es importante reseñar que, si se marca como activo un slot y
el dispositivo no puede arrancar de él, intentará la operación hasta que se
agote el valor "remaining_attempts" y, si no tiene éxito, cambiará al otro
slot.
Opción "--slot <slot>": esta opción se introduce en Android 7.x para fijar el
slot objetivo. Admite los valores ‘all’ (con ello las operaciones se aplicarán
sobre ambos slots) y ‘other’ (para que las operaciones se apliquen al slot no
activo).
313.Si el dispositivo no soporta slots, cualquier opción de fastboot de las
mencionadas anteriormente será ignorada o mostrará un mensaje de error:
C:\> fastboot set_active _b
error: Device does not support slots.
314.El proceso de actualización se inicia cuando el paquete OTA (al que el código
Android referencia como payload) se libera y las políticas del dispositivo
permiten su procesamiento (por ejemplo, el estado de la batería o la
actividad que en ese momento esté llevando a cabo el usuario, pueden
diferir la descarga e instalación del denominado payload). Un payload
contiene:
Metadatos: una lista de acciones para verificar que la nueva versión es de
aplicación en el slot objetivo.
Datos adicionales: normalmente, el binario que contiene la actualización del
sistema.
315.El slot activo se marca como válido para el arranque a través de
"markBootSuccesful()".
316.El slot inactivo (slot objetivo o target slot) se marca como inválido para el
arranque a través de "setSlotAsUnbootable()".
317.Las acciones definidas en los metadatos del payload se descargan en
memoria y se ejecutan (la memoria utilizada se invalidará al finalizar la
actualización).
318.Las particiones asociadas al slot objetivo se leen y se verifican sus hashes.
319.Se lanza el proceso de post-instalación: en caso de error, se reintenta la
actualización. Si termina con éxito, el slot objetivo se marca como activo
mediante "setActiveBootSlot()".
320.Cuando tenga lugar el siguiente reinicio del dispositivo móvil, se intentará
arrancar del nuevo slot activo (que corresponde al que ha sido actualizado)
siguiendo un esquema similar al de la imagen anterior. En caso de arranque
exitoso, el slot se marcará como válido para el arranque a través de
"markBootSuccesful()".
321.Después del arranque, y antes de que se lance el demonio zygote, se
comprobará la integridad de las particiones a través de dm-verity (ver
apartado "7.9. Proceso de arranque seguro: Verified Boot") antes de que
pueda producirse cualquier cambio que impida una vuelta atrás.
322.En Android 7.x, el arranque posterior a la instalación de una actualización ya
no lleva asociado el proceso de optimización de aplicaciones de versiones
anteriores, aunque este proceso no tiene que ver con el mecanismo de
actualización sin interrupciones, sino con el nuevo proceso de pre
323.compilación de ART (también introducido por Android 7.x) conocido como
AOT (Ahead of Time).
338.Una vez la app ha sido instalada, es posible ver los permisos de los que hace
uso desde el menú "Ajustes [Dispositivo] - Aplicaciones". En Android 6.x
desaparecen las listas "Descargadas, En Ejecución, o Todas" existentes en
versiones anteriores y se muestra una única lista de aplicaciones. Al
seleccionar una aplicación, se abre la ventana "Información de la aplicación"
352.Tras la instalación de una app, la misma aparecerá sin ningún permiso de los
considerados como "peligrosos" (ver apartado "7.1.3. Permisos normales y
peligrosos") concedido:
353.Al igual que en Android 6.x, en Android 7.x los permisos disponibles en el
menú anterior no son todos los permisos posibles considerados "peligrosos"
por Google, sino aquellos que la app declara.
354.Existen algunas excepciones, como el caso del navegador web Chrome
dónde, al arrancar la app o durante su funcionamiento, si el sistema detecta
que Chrome está solicitando un permiso que aún no dispone, informará al
usuario a través de un mensaje en el que se incorpora la opción "Actualizar
permisos".
362.Si una app diseñada para APIs inferiores a la 23 solicita acceso a un recurso
controlado por un permiso que el usuario ha revocado, el resultado será un
fallo indeterminado o, incluso, una terminación anómala del proceso
asociado a la app:
363.Por tanto, ante fallos de una app, se recomienda verificar si los permisos
disponibles para ella son los requeridos y, en caso de que falte alguno,
habilitarlo y ver si el problema se soluciona.
364.No obstante, no es infrecuente que algunas apps soliciten permisos que no
precisan. Por tanto, en aras de la privacidad y la seguridad, se recomienda
sopesar la necesidad de habilitar cada permiso y su implicación para el
funcionamiento normal de la app.
39
http://www.androidpolice.com/2014/07/15/google-rolling-out-play-store-v4-8-19-with-paypal-
support-simplified-app-permissions-bigger-buttons-and-more-apk-download/#simplified-permission-
lists
384.Por otro lado, los grupos de permisos contienen tanto permisos menos
relevantes desde el punto de vista de seguridad, como permisos más críticos
que son habitualmente utilizados por software malicioso. Por ejemplo, apps
que solicitan el permiso de los servicios de localización o ubicación, podrán
situar la posición del dispositivo móvil tanto de forma aproximada como más
precisa a través del módulo GPS; apps que sólo requerían consultar el listado
o registro de llamadas podrán realizar llamadas (incluso sin la intervención
del usuario); y apps que solicitaban poder leer contenidos de la tarjeta SD
podrán escribir también en ella o incluso formatearla.
385.Asimismo, por ejemplo, una app con funcionalidad de linterna (flashlight),
que previamente requería del permiso para activar el flash (o led) de la
cámara, al estar este permiso englobado dentro del grupo "Cámara", ahora
también dispondrá de permisos para hacer fotografías, o grabar vídeo y
audio.
386.Por último, esta actualización del modelo de permisos de Android otorga por
defecto el permiso (existente previamente) de acceso completo a Internet a
cualquier app. Es decir, el permiso de acceso a Internet ha sido eliminado de
manera efectiva, ya que aunque los desarrolladores de apps tienen que
seguir declarando en el fichero manifest que la app requiere dicho permiso,
los usuarios no verán la solicitud de este permiso durante el proceso de
instalación de la app (se puede mostrar en las vistas detalladas de permisos
englobado dentro de la categoría "Otros"). Asimismo, las apps que no
disponían de este permiso anteriormente, lo pueden obtener
automáticamente y sin la aprobación del usuario en la siguiente
actualización de la app.
387.Se recomienda por tanto analizar minuciosamente cada uno de los permisos
individuales solicitados por las apps antes del proceso de instalación,
durante el mismo, y al concluir éste, ignorando la simplificación en grupos
de permisos realizada por Google.
388.Si una app solicita en su fichero manifest un permiso "peligroso" y no tiene
aún ningún permiso perteneciente a ese grupo, el sistema pedirá al usuario
confirmación para conceder acceso al grupo, no al permiso particular. Por
ejemplo, si una app solicita el permiso READ_CONTACTS, el permiso
solicitará acceso a los contactos.
389.Si una app solicita en su fichero manifest un permiso "peligroso" y ya
dispone de algún permiso perteneciente a ese grupo, el sistema le otorgará
el permiso automáticamente sin solicitar autorización al usuario. En el caso
anterior, si una app obtuvo el permiso READ_CONTACTS y posteriormente
requiere el permiso WRITE_CONTACTS, Android se lo concederá
automáticamente.
390.Esta falta de granularidad supone un riesgo para la privacidad del usuario y
la seguridad del dispositivo, pues una app que, en principio, solo requeriría
acceso de lectura de la tarjeta SD, podría llegar a formatear la misma sin que
el usuario pudiera evitarlo.
397.Así por ejemplo, si no se desea que los servicios de Google Play ejecuten
cuando no se está conectado a través de una red Wi-Fi para evitar consumo
40
https://play.google.com/store/apps/details?id=com.pixelmonster.AppOps&hl=en
407."App Ops" permitía también ver la última vez que cada permiso había sido
utilizado.
408.Posteriormente, en Android 4.4, "App Ops" seguía disponible y añadía
capacidades para gestionar más permisos (como por ejemplo la capacidad
de una app de despertar al dispositivo móvil, "keep awake") y una nueva
categoría asociada a contenidos multimedia [Ref.- 128].
409.Sin embargo, finalmente "App Ops" fue eliminada por Google en la versión
4.4.2 de Android [Ref.- 161], confirmando su carácter experimental y el
riesgo de que algunas apps dejaran de funcionar correctamente (ya que las
apps esperaban disponer de los permisos solicitados una vez han sido
instaladas y aprobadas por el usuario, en base al modelo inicial de permisos
de Android).
410.Actualmente, sólo puede hacerse uso de "App Ops" en dispositivos móviles
Android rooteados (por ejemplo, mediante un módulo Xposed denominado
AppOpsXposed41).
411.En resumen, "App Ops" fue el precursor en Android 4.x del nuevo modelo de
permisos en tiempo de ejecución que fue finalmente incorporado en
Android 6.x (ver apartado "7.1.2. Modelo de Permisos en tiempo de
ejecución").
41
http://www.howtogeek.com/177915/how-to-restore-access-to-app-ops-in-android-4.4.2/
42
https://source.android.com/devices/tech/security/index.html
428.Las librerías de sistema, denominadas nivel de API (o API level) [Ref.- 19], e
identificadas por su número o versión, están asociadas a la versión de
Android. Por ejemplo, el nivel de API 24 corresponde a la versión 7.0 de
Android ("Nougat").
429.Adicionalmente al código, las apps disponen de recursos (definidos
mediante ficheros XML) asociados principalmente a la parte visual o interfaz
gráfico de la app, es decir, imágenes, ficheros de audio, contenidos en
diferentes idiomas, etc.
430.Con el objetivo de incrementar el modelo y los mecanismos de seguridad
disponibles en Android por defecto, la NSA publicó en enero de 2012 una
versión de Android restringida, denominada SE Android, y equivalente en
filosofía y funcionalidad a SELinux para las plataformas Linux estándar [Ref.-
106].
431.Security Enhanced Android, o SE Android, mejora la seguridad de Android
limitando el daño que puede infringir un código dañino, o una potencial
vulnerabilidad de seguridad, que afecte al dispositivo móvil, así como
añadiendo capacidades para aislar las apps, ficheros y otros componentes
entre sí.
432.Posteriormente, las capacidades de SE Android fueron integradas en la
plataforma móvil estándar, tal como se describe en el apartado "7.8. SELinux
en Android".
440.Si se han fijado varias apps dentro del menú de compartición, las mismas se
mostrarán por orden alfabético.
441.Existen múltiples aplicaciones que implementan la posibilidad de configurar
(incluyendo deshabilitar por completo) la función de compartición, pero
todas ellas son apps de orígenes desconocidos, por lo que no se aconseja su
instalación.
442.También es posible controlar el comportamiento de la función de
compartición a través de un dispositivo móvil rooteado, lo cual está
desaconsejado desde el punto de vista de seguridad.
443.De manera temporal, una opción para eliminar del menú de compartición
determinados contactos o aplicaciones es eliminar el permiso de acceso a
"contactos" de la app en cuestión.
444.Se dispone de un ejemplo de implementación de una app que emplea la
característica "Direct Share" en la documentación oficial de Google para
desarrolladores [Ref.- 17].
43
http://developer.android.com/sdk/index.html
44
https://developer.android.com/guide/practices/verifying-apps-art.html
460.En ese estado, cuando se intenta descargar una app directamente desde una
página web, Android mostrará un mensaje de advertencia al usuario:
45
Existen referencias confirmando la posibilidad de instalar apps incluso con certificados expirados
[Ref.- 26].
506. Android 6.x añadió nuevas capacidades en Verified Boot para notificar al
usuario durante el proceso de arranque acerca del estado e integridad del sistema
[Ref.- 619].
507.Tras iniciar el dispositivo móvil, la acción update_verifier lanza la
comprobación de integridad del sistema operativo a través de dm-verity,
antes de que se arranque el demonio zygote para impedir que los servicios
lleven a cabo cambios irreversibles, con el objeto de detectar modificaciones.
Si la comprobación tiene éxito, se asume que el código a ejecutar viene de
una fuente fiable (la versión oficial del sistema operativo) y update_verifier
marca el arranque como exitoso. En caso contrario, se forzará un rearranque
del dispositivo móvil.
508. Tras una actualización OTA, el proceso update_verifier leerá los bloques
listados en "/data/ota_package/care_map.txt" (fichero proporcionado como
parte del paquete OTA), aplicará los cambios de integridad sobre dichos
bloques antes de reiniciar y actualizará el fichero con el árbol o tabla de
integridad antes d reiniciar en la nueva versión.
509.La protección dm-verity está integrada en el kernel, y verifica los bloques
individualmente según se van accediendo, en lugar de verificar directamente
todos los bloques del sistema de ficheros durante el proceso de arranque del
dispositivo, lo cual afectaría al rendimiento. Ante un fallo en la verificación,
se generará un error que indica que el bloque no puede ser leído, lo que se
traduce como que el sistema de ficheros está corrupto [Ref.- 727].
510.Aquellos bloques que han sido verificados se guardarán en caché para evitar
tener que efectuar la verificación de nuevo en cada acceso al bloque. Este
esquema de verificación parte del mecanismo "Verified Boot" desarrollado
originalmente en el proyecto Chromium (los detalles de implementación
están disponibles en la referencia [Ref.- 728]).
511.Si no es posible verificar la partición de sistema durante el proceso de
arranque se pueden obtener tres mensajes de aviso (o estados del proceso
de arranque), identificados por los colores naranja, rojo, amarillo o verde
(arranque correcto)46:
46
http://www.xda-developers.com/pixel-phones-not-yet-rootable-with-current-methods/
47
http://developer.android.com/reference/android/webkit/WebView.html
48
http://developer.android.com/reference/android/webkit/WebSettings.html
49
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1939
50
http://www.rapid7.com/db/modules/exploit/android/browser/webview_addjavascriptinterface
51
http://developer.android.com/guide/webapps/webview.html
52
https://www.webkit.org
53
http://www.chromium.org
54
https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
55
https://play.google.com/store/apps/details?id=nk.bla.android.autostart
56
https://lineageos.org
[ro.build.version.codename]: [REL]
[ro.frp.pst]: [/dev/block/platform/soc.0/f9824900.sdhci/by-name/persistent]
[ro.product.name]: [bullhead]
57
https://support.google.com/a/answer/1056433
58
El servicio "My Devices", accesible mediante https://www.google.com/apps/mydevices, ha sido
reemplazado por "Encontrar mi dispositivo" (Find my devices)
59
https://play.google.com/store/apps/details?id=com.google.android.apps.adm
60
La URL del recurso "Android Device Manager" era: "https://www.android.com/devicemanager". En el
momento de elaboración de la presente guía, este enlace redirige al nuevo recurso "Encontrar mi
dispositivo": "https://www.google.com/android/find".
terminal móvil (ver la imagen anterior). Sus opciones son similares a las
ofrecidas por el servicio de gestión remota "Encontrar mi dispositivo"
(disponible en https://www.google.com/android/find) de Google.
594.Es muy importante reseñar que, tanto la funcionalidad del portal de gestión
remota como los mensajes que se muestran en respuesta a las diferentes
acciones solicitadas a través de él, son dependientes de Google (y de sus
servicios asociados) y pueden variar a lo largo del tiempo. Las opciones y
mensajes descritos en la presente guía corresponden a noviembre de 2017.
595.Los requisitos para hacer uso de la funcionalidad de gestión remota son
[Ref.- 60]:
Disponer de una conexión de datos: para poder hacer uso de las
capacidades de gestión remota es necesario que el dispositivo móvil
disponga de una conexión a una red Wi-Fi o de datos móviles (2/3/4G), a fin
de poder comunicarse con los servidores de Google y responder a las
acciones solicitadas por estos.
o Si el dispositivo móvil no dispone de una conexión de datos, el
administrador de dispositivos Android no podrá bloquear la pantalla,
modificar el código de acceso (referido por Google como la
contraseña de bloqueo de la pantalla), hacer sonar el dispositivo
móvil, o borrar sus datos remotamente hasta que se establezca una
conexión a través de una red Wi-Fi o de la red de datos móviles. Al
seleccionar una acción en el administrador de dispositivos Android,
ésta se llevará a cabo la próxima vez que el dispositivo móvil vuelva
a estar conectado. Lógicamente, el administrador de dispositivos
Android no funciona para dispositivos móviles que estén apagados o
con en modo avión activado.
Disponer del administrador de dispositivos Android activo: desde el menú
"Ajustes [Personal] - Seguridad [Administración de Dispositivos] -
Administradores de dispositivos [Personal] Encontrar mi dispositivo" es
posible activar esta funcionalidad, y la pantalla de confirmación informará
de las capacidades de gestión asociadas. Las capacidades de gestión remota
que se obtienen al activar el administrador de dispositivos Android son:
bloquear la pantalla (equivale a bloquear remotamente un dispositivo móvil
perdido o robado), cambiar el bloqueo de pantalla (en caso de que no se
hubiese configurado un código de acceso en el dispositivo móvil, desde el
interfaz web de gestión remota se puede configurar uno; si ya hubiese uno
vigente, la configuración de un nuevo código de acceso no modificará el
código actual) y borrar todos los datos (equivale a una restauración a
fábrica remota, o wipe).
Disponer de una sesión iniciada con la cuenta de Google del usuario desde
el dispositivo móvil, disponible automáticamente en caso de haber sido
configurada dicha cuenta.
El dispositivo móvil debe estar visible en Google Play: el dispositivo se
puede hacer visible desde la sección "Visibilidad" de Google Play
("https://play.google.com/settings"). Si un dispositivo móvil está oculto en
Google Play, no aparecerá en la funcionalidad de "Encontrar mi dispositivo".
Tener el servicio de ubicación (o localización) activo: desde la app "Ajustes
de Google", mediante el menú "[Servicios] Ubicación", es posible habilitar la
opción "Ubicación" (servicios de localización) mediante el botón "Sí".
o Este acceso es equivalente al acceso estándar correspondiente a los
servicios de localización, disponible desde "Ajustes - [Personal]
Ubicación".
En la versión de Android 5.x, la app "Google" existente por defecto permitía
modificar las capacidades y configuración del administrador de dispositivos
Android a través de la opción "[Servicios] Seguridad - [Administrador de
dispositivos] Administrador de dispositivos". Las opciones de configuración
posibles, que se podían habilitar y deshabilitar individualmente, y que se
muestran en las imágenes inferiores, eran "Localizar este dispositivo de
forma remota" y "Permitir borrado y bloqueo remotos":
598.La información sobre los dispositivos asociados a una cuenta de Google está
disponible en el menú "Controles de la actividad de tu cuenta - Información
de los dispositivos", y, pese a que podría pensarse que esta información se
limitaría a datos ligados solo al terminal, en realidad incluye datos que no
son propios del dispositivo móvil, como los contactos o el calendario de la
cuenta de Google vinculada a él [Ref.- 235].
599.Si se desea acceder a las capacidades de gestión remota ante la pérdida o
robo del dispositivo móvil, se dispone de dos opciones con funcionalidad
similar, ambas descritas en detalle a continuación:
Utilizar el recurso "Encontrar mi dispositivo" (opción 1), disponible en
"https://www.google.com/android/find" (o "https://android.com/find/").
Acceder a la cuenta de Google del usuario del dispositivo móvil desde
"https://myaccount.google.com" y seleccionar la opción "Encontrar tu
móvil" (opción 2), que mostrará la lista de dispositivos móviles que están (o
han estado) vinculados a esa cuenta, pudiéndose seleccionar el dispositivo
deseado.
600.Si se hace uso del recurso "Encontrar mi dispositivo" (opción 1) [Ref.- 201]
para acceder a las capacidades de gestión remota, tras introducir las
credenciales de la cuenta de Google del usuario, se mostrarán las siguientes
opciones (ver la imagen inmediatamente anterior):
Reproducir sonido: esta opción hace que el dispositivo móvil emita un
sonido con el máximo volumen para poder localizar su ubicación, incluso si
se encontraba en silencio. El sonido se reproducirá durante 5 minutos o
hasta que se interaccione físicamente con el dispositivo, a través de los
botones físicos o de la pantalla.
Bloquear: esta opción bloquea la pantalla del dispositivo móvil (en caso de
estar desbloqueada), y adicionalmente permite que se muestre un mensaje
y/o número de teléfono para contactar con su propietario.
Borrar: esta opción permite eliminar remotamente todos los datos del
dispositivo móvil, siendo equivalente a una restauración a fábrica (wipe).
61
Desafortunadamente, no se ha identificado la existencia de ningún registro (o log) que refleje las
diferentes acciones llevadas a cabo mediante los mecanismos de gestión remota, junto a las
confirmaciones del dispositivo móvil, incluyendo una referencia temporal.
626. Tan pronto se tenga de nuevo conexión de datos desde el dispositivo móvil,
se enviará la orden de borrado y se informará al usuario con el mensaje "Se
ha borrado el dispositivo". En la pantalla del terminal, se mostrará un
mensaje "Restableciendo datos de fábrica" y el terminal se apagará y
reiniciará mostrando el menú de configuración inicial.
Más información
Cuenta: usuario@gmail.com
Dispositivo: LG Nexus 5
Fecha: 01-ago-2017 6:17:23 PDT
© 2013 Google Inc. 1600 Amphitheatre Parkway, Mountain View, CA 94043 (Estados Unidos)
Has recibido este correo electrónico para informarte sobre cambios importantes que afectan a tu cuenta o a tu
producto de Android.
62
http://www.howtogeek.com/179638/not-getting-android-os-updates-heres-how-google-is-updating-
your-device-anyway/
63
https://androidenterprisepartners.withgoogle.com/#!/results/browse-all/0
64
https://androidenterprisepartners.withgoogle.com/#!/results/browse-all/2
652.En caso de disponer de apps que son gestionadas dentro del perfil de trabajo
por el administrador de la organización, denominadas apps gestionadas, los
iconos asociados se muestran en el Launcher con un indicador de trabajo 65
(icono naranja con un maletín blanco)66:
653.El administrador del dispositivo puede restringir el acceso a apps del sistema
desde el perfil gestionado o de trabajo, como por ejemplo el acceso a la
cámara.
654.Cada perfil dispone de su propio espacio de almacenamiento, por lo que no
se recomienda que las apps compartan ficheros a través de mensajes (o
intents), ya que la referencia a un fichero que es válida en una app no tiene
por qué serlo en otra (si está asociada a otro perfil).
655.En su lugar, se deben emplear referencias a contenidos (no a ficheros). Así,
por ejemplo, el administrador de dispositivo puede establecer que la captura
de imágenes sea gestionada por la app de Cámara en el perfil personal, y la
referencia a contenido especificará dónde se puede almacenar la foto. Ésta
corresponderá a una ubicación donde podrá escribir la app Cámara y desde
donde podrá leer la app que inició la captura de la imagen (mediante un
intent) [Ref.- 503].
656.Adicionalmente, Android 6.x añadió soporte para múltiples capacidades de
Android for Work (algunos de ellos detallados a continuación), como
controles para dispositivos mono-usuario propiedad de una organización,
instalación y desinstalación silenciosa de apps y certificados digitales,
aceptación automática de actualizaciones de sistema operativo, o
notificaciones del estado del entorno de trabajo, para que el usuario pueda
identificar fácilmente que está trabajado dentro de una app gestionada (o
de trabajo) o que hay tareas de apps pertenecientes al perfil gestionado (o
de trabajo) ejecutando de fondo.
65
https://developer.android.com/about/versions/lollipop.html#Work
66
https://www.wired.com/2015/02/googles-android-work-gives-phone-split-personality/
ese caso, para poder desbloquear la tarjeta SIM es necesario emplear una
segunda clave de acceso denominada PUK (PIN Unlock Key).
681.Los dispositivos móviles Android 7.x, y posteriores, permiten forzar la
utilización de un PIN para la tarjeta SIM (opción "Configurar bloqueo de
tarjeta SIM"), así como fijar o modificar el PIN asociado a la tarjeta SIM
(opción "Cambiar PIN de tarjeta SIM"), a través del menú "Ajustes [Personal]
- Seguridad [Bloqueo de tarjeta SIM] - Configurar bloqueo de tarjeta SIM":
682. Se recomienda por tanto fijar en la tarjeta SIM la restricción que requiere
introducir un PIN para hacer uso de ésta, y modificar el valor por defecto del PIN,
fijando el PIN de la tarjeta SIM con un valor o secuencia de números que no sea
fácilmente adivinable, es decir, excluyendo valores típicos como 0000, 1111 ó
1234.
683.Debe tenerse en cuenta que cada vez que el dispositivo móvil sale del
"Modo avión" (es decir, cuando este modo es desactivado; menú "Ajustes
[Conexiones Inalámbricas y Redes] - Más... - Modo avión"), no se solicitará el
PIN de la tarjeta SIM al usuario (tal y como ocurría en versiones previas de
Android), al activarse de nuevo los servicios de telefonía móvil. El valor del
PIN ha sido almacenado en memoria (o cacheado) para poder disponer de
nuevo de acceso a la tarjeta SIM sin que sea necesario introducir el PIN.
67
https://android.stackexchange.com/questions/154588/why-and-how-to-increase-16-character-
lockscreen-password-limit
736. Los detalles de este fichero podrían facilitar a un potencial atacante (que
haya obtenido acceso como root en el dispositivo móvil) la realización de ataques
de diccionario o fuerza bruta sobre el código de acceso o contraseña, al dar pistas
a un potencial atacante que le permitan reducir el conjunto total de posibles
combinaciones según la política de seguridad establecida.
737.Android 6.x introdujo nuevas modificaciones para permitir la autentificación
o desbloqueo del dispositivo móvil mediante una huella dactilar digital, que
749.Desde dicho menú se muestra la pantalla de Nexus Imprint que indica dónde
se localiza el sensor de huella dactilar digital (ubicado en la parte posterior
del dispositivo móvil empleado para la elaboración de la presente guía). Una
838.Para añadir una cara de confianza, hay que entrar en "Ajustes - [Personal]
Seguridad - [Seguridad del dispositivo] Smart Lock" (se solicitará el código de
acceso al dispositivo) - Reconocimiento facial - Configurar". Si esta opción
está activa, en la pantalla de bloqueo aparecerá brevemente un icono con
un símbolo de cara durante el tiempo en el que el terminal esté tratando de
reconocer el rostro configurado. Si se consigue reconocerlo, el icono
cambiará a un candado abierto que parpadea; en caso contrario, se
mostrará un candado cerrado parpadeante (ver imágenes superiores).
852.Es por ello muy importante revisar la política de notificaciones para evitar
que la pantalla de bloqueo pueda proporcionar información sensible que el
usuario desearía ocultar.
853.Adicionalmente, la información desvelada en la pantalla de bloqueo puede
extenderse mediante la utilización de widgets (ver apartado "9.13. Pantalla
de desbloqueo: Widgets").
854.Asimismo, sigue siendo posible hacer fotografías y grabar vídeos sin
desbloquear el dispositivo móvil (y sin conocer el código de acceso)
deslizando hacia la izquierda el icono correspondiente a la cámara de fotos,
situado en la esquina inferior derecha de la pantalla de bloqueo.
855.Con la incorporación del servicio "Asistente de Google" y, en particular, de
"Ok Google" (éste último recientemente ampliado mediante el servicio
"Voice Match") (ver apartado "Asistente de Google, Mi tablón y servicios de
búsqueda de Google" de la "Guía de cuenta de usuario, servicios y
aplicaciones de Google para dispositivos móviles Android" [Ref.- 407]), la
pantalla de bloqueo añade un micrófono en la parte inferior izquierda que
permite invocar comandos de voz que serán enviados al asistente de Google.
Dado que estos comandos pueden realizar operaciones sensibles, se
recomienda aplicar las recomendaciones mostradas en el correspondiente
apartado para evitar comprometer la seguridad y la privacidad del usuario.
9.7. INTERRUPCIONES
856.Una interrupción es un evento que una aplicación decide enviar para
informar al usuario de un hecho o situación relevante desde el punto de
vista de la aplicación. El carácter de la interrupción es definido por la propia
aplicación.
857.Una de las funciones que se incorporaron a partir de Android 5.x (Lollipop)
son las interrupciones y notificaciones prioritarias, que permiten a los
usuarios configurar el comportamiento del dispositivo móvil en función del
calendario y de la importancia de la notificación para evitar interrupciones
externas no deseadas.
858.En versiones previas de Android (4.x y anteriores), el modo "silencio"
implicaba que el dispositivo móvil no emitía ningún sonido, ni vibraciones,
pero sí admitía que las notificaciones visuales se mostrasen normalmente.
Con la nueva funcionalidad añadida en Android 5.0, el modo silencio ("None"
o "Ninguno"), no sólo silenciaba los sonidos y las vibraciones, sino que
impedía por completo la llegada de alarmas y notificaciones, lo que limitaba
mucho la usabilidad del dispositivo.
859.Android 5.1 resolvió el problema incluyendo dos modos de funcionamiento
(además del modo "Todo", que no impone ninguna restricción): "Prioridad"
y "Nada", así como su tiempo de duración. Para configurar el dispositivo en
uno de estos modos manualmente, hay que pulsar el botón de volumen del
dispositivo y se presentarán tres opciones:
Todo: hasta nueva orden, o en el momento en que no cumplan las
condiciones definidas, como por ejemplo el "Tiempo de inactividad", se
permitirán todas las alarmas y notificaciones.
Nada: en este modo se suprimirán todas las interrupciones. Se permite
seleccionar "Indefinidamente" (y sólo será posible salir del modo silencio
manualmente) o "Durante X horas" (por defecto 1 hora, pero ampliable a
las horas que especifique el usuario con los botones de + y - ). Cuando se
está en este modo, en la barra de estado (parte superior derecha de la
pantalla) aparecerá un símbolo de prohibición.
Prioridad: al igual que en el modo anterior, se puede especificar un tiempo
indefinido o una duración en horas. Además, en la parte superior del menú,
aparece el menú de ajustes de las interrupciones de prioridad, que equivale
a entrar en el menú "Ajustes - [Dispositivo] Sonido y notificaciones -
[Sonido] Interrupciones". Cuando el dispositivo se encuentra en este modo,
en la barra de estado (parte superior derecha de la pantalla) aparecerá una
estrella. El propósito de este modo es filtrar las notificaciones menos
importantes en los períodos de tiempo definidos. Las alarmas siempre se
consideran interrupciones prioritarias (o de prioridad).
9.8. NOTIFICACIONES
865.Una notificación es un mensaje que una aplicación puede mostrar al usuario
fuera del interfaz gráfico propio de la aplicación móvil, para informarle de un
evento que se considera relevante desde el punto de vista de la aplicación.
866.Las notificaciones se envían al sistema para que las procese de acuerdo a la
configuración definida por el usuario en relación a la política de
interrupciones que se encuentre activa en el dispositivo móvil en el
momento de recibirse la notificación, a la aplicación que envía la notificación,
y a la prioridad de la propia notificación.
867.Android 5.0 (Lollipop) introdujo un cambio en el paradigma de las
notificaciones [Ref.- 508], entre ellas la capacidad para que una notificación
aparezca en la pantalla de bloqueo del dispositivo o que aparezca como una
pequeña ventana flotante (heads-up notification) cuando el dispositivo
móvil está desbloqueado. Además, las notificaciones flotantes pueden
mostrar botones de acción que permiten al usuario manejar la notificación
sin salir de la aplicación que está activa, o simplemente descartar la
notificación.
868.Las notificaciones flotantes surgen cuando la aplicación activa está en modo
de pantalla completa y cuando la notificación tiene carácter prioritario y
utiliza tonos o vibraciones.
869.Sin embargo, con Android 5.0 surgía el problema de que, cuando llegaba una
notificación, no sólo se mostraba en primer plano independientemente de lo
que el usuario estuviese haciendo, sino que, además, las únicas opciones
para actuar ante ella eran: esperar a que desapareciera transcurridos 10
segundos, procesarla inmediatamente, o descartarla deslizándola hacia los
lados (derecha o izquierda) de la pantalla.
870.En Android 5.0, el comportamiento de las notificaciones es lo que se
denomina "emergente", es decir, la notificación se presenta en la pantalla
activa interrumpiendo al usuario.
871.Con la llegada de Android 5.1, y todavía vigente en Android 6.x, las heads-up
notifications se empezaron a mostrar, con el dispositivo móvil desbloqueado,
en la barra de notificaciones en lugar de en mitad de la pantalla. Con el
dispositivo bloqueado, se muestran en mitad de la pantalla. Al igual que en
versiones previas, se permite descartar la notificación (deslizándola hacia
cualquiera de los lados), pero, adicionalmente, se puede minimizar
deslizando el dedo desde la notificación hacia arriba, lo que la desplaza al
panel o barra de notificaciones (situado en la parte superior) sin perder su
contenido, hasta que el usuario decida procesarla.
872.Realizando una pulsación prolongada sobre una notificación, tanto con la
pantalla bloqueada como desbloqueada, se mostrará qué componente o app
ha generado la notificación. El icono de (i) (información), al pulsarse, abrirá
el menú de configuración de las notificaciones de la aplicación concreta,
permitiendo al usuario elegir cómo tratar las notificaciones de esa
aplicación:
882.Para definir la acción que se tomará con respecto a las notificaciones de una
aplicación concreta, se debe pulsar sobre el nombre de la aplicación, y
aparecerá un menú con las siguientes opciones:
Icono de información (i) junto al nombre de la aplicación: abre los ajustes
de la aplicación de igual modo que el menú "Ajustes - [Dispositivo]
Aplicaciones - <nombre de la aplicación>. Uno de los ajustes del citado
menú es "Notificaciones", que, al ser seleccionado, mostrará las opciones
896.En Android 6.x, al activarse este modo de ahorro por parte del usuario, se
muestra una notificación que permanecerá activa en la barra de
notificaciones con un símbolo de batería y el signo "+" (este
comportamiento se ilustra en las imágenes siguientes). Esta notificación, que
no se puede descartar, admite como respuesta la opción "Desactivar ahorro
de batería" y, al pulsarla, proporciona acceso al menú de ahorro de batería.
Sin embargo, en Android 7.x no se muestra dicha notificación.
68
En este escenario el dispositivo móvil está encendido, y por ejemplo, su memoria ya ha sido
descifrada.
rápidos, se puede, bien deslizar hacia abajo con dos dedos desde la parte
superior de la pantalla, bien deslizar con un solo dedo en dos ocasiones.
926.Los ajustes rápidos activos por defecto en Android 7.1.2 son:
930.Los ajustes rápidos existentes en el menú de Android 7.x son los siguientes:
Fecha y hora.
Wi-Fi, red móvil y Bluetooth: además del nombre de la conexión o red
empleada, se representa el estado de la transmisión de datos:
931.Hasta Android 6.x no era posible personalizar qué ajustes se incluían como
parte del menú de ajustes rápidos, y tampoco se permitía deshabilitarlos de
forma que no apareciesen en la pantalla de bloqueo, por lo que no había
forma de evitar que un potencial atacante pudiera acceder a ellos, un
comportamiento muy relevante desde el punto de vista de seguridad.
932.Android 6.x introdujo como una de sus novedades el menú "Configurador de
IU del sistema" (ver apartado "9.10. Configurador de IU del sistema"), el cual
permite realizar personalizaciones sobre la barra de estado y el menú de
ajustes rápidos. En Android 7.x, la personalización de los elementos del
menú de ajustes rápidos sale del configurador de IU del sistema y se integra
como parte del propio menú de ajustes rápidos, a través del icono de "lápiz",
cuya pulsación da acceso a la configuración del menú.
939.Desde Android 6.x, a través del icono de ajustes rápidos del interfaz Wi-Fi, se
permite, además de activar o desactivar el interfaz Wi-Fi del dispositivo
móvil, elegir mediante una sola pulsación la red Wi-Fi a la que conectarse. Si
bien el modo de activación funciona con la pantalla bloqueada, la opción de
cambiar de red Wi-Fi solicitará autentificación al usuario, a menos que las
credenciales de conexión a la red Wi-Fi que se seleccione hayan sido
guardadas previamente. Este mismo comportamiento se exhibe con el
ajuste rápido del interfaz Bluetooth.
940.Deja de estar disponible la posibilidad que introdujo Android 5.1 para
eliminar fácilmente de la barra de ajustes rápidos las opciones dinámicas
"Zona Wi-Fi" e "Invertir colores"69, mediante una pulsación prolongada
sobre los iconos correspondientes y seleccionando "Ocultar" en el menú
emergente (las imágenes corresponden a Android 6.x, ya que en Android 7.x
no se presenta esta posibilidad).
69
La opción “Invertir colores” se activa desde “Ajustes - [Sistema] Accesibilidad - [Pantalla] Invertir
colores”.
942.También en la parte superior del menú de ajustes rápidos (en el área que
ocupa la barra de estado) se muestra un acceso al perfil de usuario activo
actualmente en el dispositivo móvil, y, seleccionándolo, se presenta la
ventana con los usuarios existentes en el dispositivo, permitiéndose poder
cambiar a cualquiera de ellos (sin solicitarse ningún tipo de código de acceso
para realizar el cambio; sin embargo, sí se solicitará el código de acceso si el
usuario al que se cambia ha definido un código de acceso propio). Para más
información sobre el perfil multi-usuario, consultar el apartado "9.19.
Múltiples perfiles de usuario".
943. Para añadir o quitar elementos del menú de ajustes rápidos, se ha de pulsar
en el icono correspondiente de forma prolongada y arrastrarlo hasta el
menú inferior, en el que se encuentran las opciones que no se han añadido
al menú:
70
http://developer.android.com/about/versions/android-4.2.html#Lockscreen
960.Por defecto, una carpeta creada por el usuario no recibe nombre. Si se desea
referenciarla de alguna forma, se realizará una pulsación corta sobre la
carpeta y se pondrá el dedo sobre el campo "Carpeta sin nombre", con lo
cual aparecerá el teclado y se podrá seleccionar el nombre deseado. Este
procedimiento también es válido para cambiar el nombre previamente dado
a una carpeta. Por motivos de seguridad y privacidad, se recomienda no dar
a las carpetas que contengan aplicaciones sensibles nombres demasiado
explícitos, como "Bancos", "Médicos", "Contraseñas"…, que podrían dar idea
71
https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent
995.El propietario es el usuario que tiene control completo del dispositivo móvil
y puede borrar cualquier cuenta (o perfil). El resto de usuarios pueden sólo
borrar su propia información y no la de los otros usuarios (incluido,
obviamente, el usuario propietario).
996.Para el usuario "invitado" cualquier personalización se almacena solo de
forma temporal: cada vez que se selecciona el modo "invitado", el sistema
preguntará si se desea continuar con la última sesión o volver a empezar. El
objetivo del perfil de invitado es dar acceso temporal al terminal durante un
muy breve periodo de tiempo.
997.Un usuario invitado no debe realizar ningún proceso de configuración inicial,
cosa que sí ocurre para el resto de usuarios.
998.Al igual que ocurre con los usuarios, el perfil de invitado tiene su propio
espacio en el dispositivo móvil, pero éste puede ser borrado cuando el
invitado ha terminado de utilizarlo. Un invitado puede borrarse a sí mismo (y
hacer así que desaparezcan los datos que se hayan podido generar durante
el periodo de utilización del dispositivo móvil) desde la barra de ajustes
rápidos, mediante el icono circular con una silueta seguido del texto
"Eliminar invitado".
999.Por defecto, existen dos usuarios: el propietario o administrador del
dispositivo (identificado como "Owner") y el Invitado. El perfil de invitado
aparece directamente en la pantalla de usuarios y no se puede eliminar. El
(usuario) propietario identifica al usuario inicial u original existente por
defecto, y que fue empleado en el proceso de configuración inicial del
dispositivo móvil.
1000. La pantalla de "Usuarios [Usuarios y perfiles]" muestra en la primera
entrada al usuario actual, identificado como "Tú" y entre paréntesis el
nombre del usuario (si no se definió un nombre para el usuario, aparecerá el
texto "Owner") [Ref.- 211].
1001. Concretamente, el nombre por defecto es el que se proporcionó en el
campo "Nombre y apellidos" durante el proceso de instalación del
dispositivo móvil. Si no se rellenó este campo, se mostrará el texto "Owner".
Este nombre se puede cambiar pulsando sobre la entrada del propietario
("Owner") y rellenando la "Información de perfil".
1002. El propietario puede utilizar el botón "+ Añadir usuario" para añadir
nuevos usuarios. Si se quiere permitir que otros usuarios puedan añadir a su
vez más usuarios, se pueden seleccionar los tres puntos situados a la
derecha de "Usuarios" y marcar la opción "Añadir usuarios con disp.
bloqueado". Se desaconseja por completo activar esta opción desde el
punto de vista de seguridad, ya que se perdería el control a la hora de poder
añadir nuevos usuarios autorizados.
1010. Un usuario distinto del propietario puede añadir nuevas redes Wi-Fi,
que estarán disponibles para todos los usuarios del dispositivo móvil, con las
negativas implicaciones de seguridad asociadas.
1011. Cualquier usuario tiene acceso al menú de ajustes rápidos con la
configuración por defecto de Android. Este aspecto es también muy delicado
desde el punto de vista de seguridad, porque el propietario podría haber
personalizado este menú para, por ejemplo, eliminar el acceso rápido al
modo avión, que, sin embargo, se mostraría para cualquier otro usuario del
terminal, incluido el perfil de invitado.
1012. Asimismo, los usuarios tienen acceso a muchos ajustes de configuración,
si bien no a todos.
1013. Los usuarios distintos del invitado tienen su propio espacio en el
dispositivo móvil con opciones de configuración, aplicaciones (apps), cuentas
y pantallas de inicio personalizadas, entre otros elementos.
1014. Un usuario puede añadir su cuenta de Google al dispositivo e instalar
aplicaciones desde Google Play. Las apps instaladas por un usuario son solo
visibles para él (otros usuarios o el propietario no las vería). Si una app que
un usuario elige instalar ya está instalada por otro usuario, se creará un
espacio virtual (o sandbox, diferenciado) para el nuevo usuario dentro de
esa aplicación (o app), de modo que cada usuario dispondrá únicamente de
acceso a sus datos dentro de la app.
1019. Para eliminar un usuario, hay que seleccionar "Usuarios - Nombre del
usuario", mediante el botón de ajustes situado a la derecha del nombre del
usuario y marcar la opción "Eliminar usuario". Aparecerá una ventana de
confirmación que indica que se eliminarán los datos y las aplicaciones. Si la
aplicación solo ha sido instalada por ese usuario, se borrará del dispositivo
móvil; si algún otro usuario la instaló, únicamente se borrará de la aplicación
el espacio de datos asociado a ese usuario.
1020. Además, un usuario puede eliminarse a sí mismo sin más que entrar en
su perfil, seleccionar en el símbolo de usuario de la barra de ajustes rápidos,
mediante "Más Opciones - [Usuarios] tres puntos (…) - Eliminar a <nombre
de usuario> de este dispositivo".
9.21. TALKBACK
1037. Talkback es un servicio incluido por defecto en los dispositivos Android
que permite interactuar con el dispositivo móvil a través de mensajes de voz
y sin necesidad de acceso visual a la pantalla [Ref.- 278].
1038. Este servicio se activa a través del menú "Ajustes - [Sistema]
Accesibilidad - Talkback". Bajo este menú se encuentra un interruptor que
activa el servicio, y un botón de "Ajustes" situado en el margen superior
derecho a través del cual se configuran las diferentes opciones del servicio72:
1039. Dado que el servicio de Talkback permite que contenidos del dispositivo
se proporcionen de forma verbal, y, por tanto, puedan ser conocidos por
parte de terceros sin que estos dispongan de acceso visual a la pantalla,
desde el punto de vista de seguridad se desaconseja su utilización a menos
que las circunstancias lo requieran.
72
Los detalles de configuración del servicio TalkBack quedan fuera del ámbito de la presente guía.
de forma que los mismos sólo se puedan acceder cuando el dispositivo está
desbloqueado [Ref.- 85].
1041. Desde la versión 3.0 de Android ("Honeycomb") [Ref.- 31], orientada a
dispositivos móviles de tipo tableta o tablet, se añadieron capacidades de
cifrado nativas a los dispositivos móviles basados en Android [Ref.- 85]
(empleando dm-crypt73), junto a otras mejoras en las políticas de cifrado y
de contraseñas (complejidad, expiración e histórico).
1042. Lógicamente, la opción de cifrado completo del dispositivo móvil
también está disponible en versiones posteriores, como Android 5.x (y
versiones futuras), para teléfonos móviles o smartphones, tanto del teléfono
como (potencialmente) de la tarjeta de almacenamiento externa (en
aquellos dispositivos móviles que disponen de una tarjeta SD real).
1043. Por otro lado, existen numerosas apps de cifrado en Google Play (ej.
OpenKeychain: Easy PGP para Android74) que permiten el cifrado de otros
datos, como por ejemplo e-mails, notas, información confidencial o
contraseñas, pero no de la totalidad del dispositivo móvil.
1044. Los mecanismos de cifrado han ido variando a lo largo de las diferentes
versiones de Android, con el objetivo de proteger el cifrado de los datos
frente a ataques de fuerza bruta (dado que el cifrado del dispositivo móvil
está basado, o depende, del código de acceso empleado en el mecanismo de
bloqueo del dispositivo).
1045. En Android 5.x (Lollipop) la contraseña de cifrado dependía sólo
parcialmente del código de acceso al dispositivo móvil, interviniendo
también otros elementos (que serán descritos posteriormente) en su
protección [Ref.- 134].
1046. En septiembre de 2014 Google anunció que sería obligatorio que
cualquier terminal con Android viniera cifrado de fábrica. Sin embargo,
alegando problemas de rendimiento, finalmente el cifrado de fábrica se
incluyó como "una recomendación" y no como una obligación para los
demás fabricantes.
1047. Aunque Google informó públicamente de que los terminales que se
fabricasen a partir de Android 5.x (Lollipop) vendrían cifrados de fábrica
[Ref.- 140], los dispositivos Nexus 4, Nexus 5, Nexus 7 y Nexus 10 no se
cifraron de forma predeterminada75.
1048. A partir de Android 6.x, algunos dispositivos móviles como el empleado
para la elaboración de la presente guía (Nexus 5X) sí vienen cifrados de
fábrica y no es posible deshabilitar las capacidades de cifrado. Con Android
7.x, los dispositivos Nexus 5X también vienen cifrados de fábrica, no siendo
posible revertir el terminal a un estado sin cifrar:
73
https://code.google.com/p/cryptsetup/wiki/DMCrypt
74
https://www.openkeychain.org
75
https://support.google.com/nexus/answer/2844831?hl=es
e introducido el código de acceso para descifrar los datos, las claves están en
memoria, siendo utilizadas constantemente, y un tercero con acceso físico al
dispositivo desbloqueado podrá también acceder a todos sus datos.
1054. El modelo tradicional de cifrado existente previamente en Android ha
sido modificado en Android 7.x con nuevas capacidades. Android 7.x
(Nougat) incorpora un nuevo sistema de cifrado de archivos individuales, de
forma que no sea necesario cifrar el dispositivo completo con una única
clave, disponiendo de la posibilidad de proteger de manera más granular
tanto los datos del sistema como de las aplicaciones y del usuario.
1055. En lugar de hacer uso de FDE (Full-Disk Encryption) con una clave única
protegida por el código de acceso del usuario para proteger todos los
contenidos de la partición de datos de usuario, se hace uso de FBE (File-
Based Encryption) [Ref.- 734], empleando diferentes claves para cifrar
ficheros distintos, que pueden ser desbloqueados o accedidos
independientemente.
1056. Una de las principales diferencias entre el cifrado FDE (previo a Android 7.x)
es que, en él, es necesario solicitar al usuario el código de acceso durante el
proceso de arranque, por lo que si el dispositivo móvil se reinicia
inesperadamente en algún momento (por ejemplo, durante la noche), no
estará operativo (las alarmas no funcionarán, no se podrán recibir llamadas o
SMS, o no estarían disponibles los servicios de accesibilidad) hasta que el
usuario sea consciente e introduzca su código de acceso para continuar con el
proceso de arranque.
1057. En el caso de FBE, se pretende que la funcionalidad básica del
dispositivo móvil, como la recepción de llamadas o las alarmas, esté
disponible inmediatamente tras completarse el proceso de arranque. Por
tanto, los dispositivos móviles que hacen uso de FBE pueden implementar
las nuevas capacidades de arranque o inicio directo Direct Boot (ver
apartado "10.5. Direct Boot"), que permiten al dispositivo móvil cifrado
completar el proceso de arranque directamente hasta la pantalla de
desbloqueo.
1058. Las apps de sistema76 que desean ofrecer parte de su funcionalidad tras
completarse el proceso de arranque del dispositivo móvil deben hacer uso
de las nuevas APIs asociadas a Direct Boot (y FBE), siendo conscientes de la
existencia de cifrado y pudiendo operar en un contexto limitado, incluso
antes de que el usuario proporcione su código de acceso y aun manteniendo
sus datos más privados y sensibles protegidos (de manera granular).
1059. En un dispositivo que hace uso de FBE, cada usuario del dispositivo
dispone de dos ubicaciones disponibles para las aplicaciones en el
almacenamiento:
76
Incluyendo las apps de sistema porporcionadas por algunos fabricantes de dispositivos móviles
Android.
entre gran parte de los datos biométricos recolectados a través del lector de
huellas y su representación almacenada durante el proceso de registro de la
huella en el dispositivo móvil. Dado que este conjunto de datos puede variar,
no sería posible extraer una clave concordante al 100%, requisito necesario
para los algoritmos de cifrado.
1068. Los dispositivos que se actualizan a Android 7.x desde versiones
anteriores de Android no serán convertidos de forma automática al modelo
de cifrado FBE, ya que parten del modelo FDE. Para comprobar si el
dispositivo está empleando FDE o FBE, se puede acceder al menú de
establecimiento del código de acceso a través de "Ajustes - Seguridad -
[Seguridad del dispositivo] Bloqueo de pantalla - [Tipo de bloqueo]". Si se
presenta el menú que ofrece la posibilidad de "Requerir <código> para
iniciar dispositivo", esto indica que el tipo de cifrado sigue siendo FDE.
1069. En Android 7.x queda en manos del fabricante del dispositivo móvil
decidir qué modelo de cifrado será empleado, el tradicional FDE o el nuevo
FBE, no siendo posible para el usuario seleccionarlo inicialmente. En algunos
modelos de dispositivo móvil el usuario podrá cambiar de uno a otro.
1070. Para habilitar FBE en caso de disponer actualmente de FDE, es necesario
acceder a las opciones de desarrollo "Ajustes - [Sistema] {} Opciones de
desarrollo - Convertir a cifrado de archivo". Es muy importante reseñar que
esta operación implica un reseteo a fábrica y todos los datos se perderán,
como ilustra el mensaje de solicitud de confirmación (se solicitará introducir
el código de acceso antes de proceder a la conversión):
1071. También puede cambiarse a cifrado FBE a través de ADB y fastboot (esta
operación también implicará un reseteo a fábrica y la consecuente pérdida
de datos):
$ adb reboot-bootloader
$ fastboot --wipe-and-use-fbe
1072. Para que la implementación FBE pueda ser usada de manera segura, se
requiere que el inicio seguro (Verified Boot) se complete de forma exitosa, con el
objetivo de impedir que las credenciales de tipo DE no sean accedidas por un
componente malicioso.
1073. De cara a las actualizaciones de sistema en un entorno FBE, y dado que
la partición de recuperación (recovery) no tiene acceso al almacenamiento
DE en la partición de datos de usuario (userdata), se recomienda que el
dispositivo emplee el modelo "A/B Seamless updates" (ver apartado "6.5.
A/B (Seamless) System updates"), puesto que la actualización OTA se realiza
sin necesidad de que la partición de recuperación acceda a los datos de
usuario cifrados.
1074. Si el dispositivo móvil no soporta el modelo "A/B Seamless updates", y
por tanto emplea el modelo OTA tradicional en el que la partición de
recuperación necesita acceder al fichero OTA en la partición de datos de
usuario, se creará un directorio en lo alto de la jerarquía de la partición
userdata que albergará los paquetes OTA, y se añadirá una regla SELinux (ver
apartado "7.8. SELinux en Android") que controlará que únicamente las apps
que son objeto de la actualización puedan leer o escribir en ese directorio.
1082. Dado que los dispositivos Nexus como el empleado en la presente guía
no tienen ranura física para la inserción de una tarjeta SD externa, la
configuración e imágenes que se detallan a continuación corresponden a la
configuración de un terminal de otro fabricante, por lo que pueden no
coincidir exactamente con las pantallas que se muestren en un terminal de
otros fabricantes de dispositivos móviles Android.
1083. El almacenamiento externo definido como portátil es uno de los
mecanismos disponibles en Android para compartir datos y ficheros entre
apps, almacenar contenidos multimedia por parte del usuario (como por
ejemplo fotos y vídeos), y para compartir datos con un ordenador conectado
por USB al dispositivo móvil.
1084. Al insertar una tarjeta SD externa en un dispositivo móvil que presente
una ranura física, se lanzará una notificación similar a la mostrada a
continuación. Una vez se seleccione la notificación, se lanzará el menú que
permite configurar la tarjeta SD (por defecto, la opción para usar la tarjeta
como almacenamiento portátil estará seleccionada):
-
1086. Una vez configurada la tarjeta, es posible acceder a ella a través de
"Ajustes - [Almacenamiento y USB] <Nombre de la tarjeta> - <…> - Ajustes
de almacenamiento", como se ilustra en las imágenes previas.
1087. Adicionalmente, debe tenerse en cuenta que el sistema de ficheros (FAT
o FAT32; VFAT) empleado por defecto en la tarjeta de almacenamiento
externa configurada como portátil no establece permisos ni impone ninguna
restricción, por lo que cualquier app con permisos de acceso sobre la tarjeta
SD dispondrá de acceso a todos los datos almacenados en ella (de lectura o
de escritura).
1088. En los dispositivos móviles que no disponen de capacidades de
almacenamiento externas reales, en forma de un slot o ranura para tarjetas SD
removibles, sin embargo, también se dispone de almacenamiento externo desde
el punto de vista de Android, entendiendo como tal un espacio de
almacenamiento virtual o emulado en la memoria interna (y, por tanto no
removible) que se asocia a una partición anclada al punto de montaje "/sdcard" (o
"/storage"). Esta partición se trata como si fuera una tarjeta de almacenamiento
externa, por lo que se puede acceder a ella desde un ordenador que se conecte
por USB al dispositivo móvil. Aunque este área de almacenamiento se trata como
si fuera almacenamiento externo, realmente reside en la memoria interna del
dispositivo móvil. En él se almacenan, entre otros, las fotografías y capturas de
pantalla.
1089. Desde un equipo Windows, la referencia a "/sdcard" en el sistema de
ficheros (que normalmente apunta a "/data/media/0" o a
"/storage/sdcard0s") se gestionará como una unidad de almacenamiento
FAT32 al conectar el dispositivo móvil por USB a un ordenador, aunque en
realidad la partición donde reside hace uso del sistema de ficheros ext4 (y se
emplea FUSE para la conversión entre distintos sistemas de ficheros77).
77
http://forum.xda-developers.com/google-nexus-5/general/info-storage-nexus-5-data-info-loss-
t2534010
78
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
1100. Si se opta por mover parte del contenido del almacenamiento interno
del dispositivo móvil a la tarjeta adoptada, se mostrará la siguiente
notificación, y la nueva tarjeta se mostrará en el menú de "Ajustes -
[Dispositivo] Almacenamiento - [Almacenamiento del dispositivo]
<dispositivo>":
1101. Al igual que ocurría en versiones previas de Android (desde Android 2.2
o nivel de API 8) [Ref.- 612], de nuevo, las apps pueden ser movidas por el
usuario manualmente desde la memoria interna a la memoria externa
(configurada como interna), y viceversa.
1102. En el caso de Android 2.2 los ficheros binarios (DEX), los datos privados
de la app, y las librerías nativas permanecen aún en el almacenamiento
interno [Ref.- 613]. Por tanto, la principal diferencia es que en Android 7.x
también los datos privados de la app pueden ser almacenados en el
almacenamiento externo adoptado.
1103. Asimismo, en Android 2.2 se empleaban contenedores cifrados
individuales para cada app, haciendo uso de una clave aleatoria generada y
79
https://developer.android.com/guide/topics/manifest/manifest-element.html#install
1110. Si, durante esa operación, alguna aplicación que acceda al dispositivo
adoptable trata de acceder a él, fallará (como en caso de tomar una captura
de pantalla) y el sistema mostrará una notificación informativa.
1111. Una vez migrados los datos al almacenamiento interno del dispositivo
móvil, se podrá expulsar la tarjeta SD mediante "Ajustes - [Dispositivo]
Almacenamiento - <seleccionar el dispositivo adoptable> - <…> - Expulsar":
1114. Tras completarse esta acción, la tarjeta será vista dentro del apartado
"Almacenamiento portátil" como "No admitido":
1121.
1122. Una vez concluya el formateo, la unidad estará accesible desde "Ajustes
- [Dispositivo] Almacenamiento - [Almacenamiento portátil] Unidad USB":
80
https://nelenkov.blogspot.com.es/2012/05/storing-application-secrets-in-androids.html
81
https://github.com/nelenkov/android-keystore
root@mobile:/data/misc/keystore/user_0 # ls -l
-rw------- keystore keystore 1300 2018-06-20 21:07
1000_CACERT_user+P+XCNI+Y
-rw------- keystore keystore 1412 2018-06-20 21:07
1000_USRCERT_user+P+XCNI+Y
-rw------- keystore keystore 1652 2018-06-20 21:07
1000_USRPKEY_user+P+XCNI+Y
82
https://source.android.com/security/keystore/tags
83
http://developer.android.com/reference/android/accounts/AccountManager.html
84
http://android-developers.blogspot.com.es/2013/02/using-cryptography-to-store-credentials.html
1183. En las versiones 2.x de Android, por defecto, no era posible acceder al
listado de CAs reconocidas por el dispositivo móvil desde el interfaz gráfico
de usuario, y mucho menos disponer de opciones en el interfaz de usuario
que permitieran modificar y gestionar la lista de CAs raíz.
1184. Sin embargo, desde la versión 4.0 de Android ha sido posible acceder al
repositorio de certificados de confianza, tanto de usuario como de sistema,
desde la sección "Almacenamiento de Credenciales", disponible a través del
menú "Ajustes [Personal] - Seguridad [Almacenamiento de Credenciales]", y
en concreto, mediante la opción "Certificados de confianza".
85
Es necesario analizar en detalle los componentes hardware del modelo de dispositivo móvil concreto
para conocer las capacidades de almacenamiento seguro de credenciales disponibles a través del
Keystore y del Keymaster.
1193. El nombre de cada fichero corresponde al hash del certificado digital que
contiene [Ref.- 43], y mediante herramientas estándar, como por ejemplo
"openssl", es posible añadir nuevos certificados (en dispositivos móviles Android
rooteados).
1194. Para poder inspeccionar el contenido de cada uno de estos ficheros
"*.0" es simplemente necesario abrirlos con un editor de texto, ya que
contienen el certificado digital en formato PEM (base64), junto a la
representación del mismo en ASCII para poder ver sus detalles:
shell@mobile:/system/etc/security/cacerts $ cat ff783690.0
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
…
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
44:be:0c:8b:50:00:24:b4:11:d3:36:2a:fe:65:0a:fd
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Nerdware
Validity
Not Before: Jul 9 18:10:42 1999 GMT
Not After : Jul 9 18:19:22 2019 GMT
...
1195. Por tanto, este directorio contiene la lista de todos los certificados
digitales raíz con las CAs disponibles por defecto en Android.
1196. Desde el punto de vista de seguridad, se recomienda evaluar la
necesidad de confiar en todas y cada una de las CAs disponibles por defecto
en Android, gestionadas por empresas privadas de referencia en la industria,
gobiernos, empresas privadas menos conocidas e institutos de investigación,
y deshabilitar todas aquellas que no se consideran de confianza [Ref.- 192].
1197. Por ejemplo, en un estudio realizado sobre éstas, 15 CAs raíz todavía
hacían uso de un certificado digital basado en una clave RSA de 1.024 bits,
longitud considerada insuficiente actualmente (desde finales del año 201386),
recomendándose al menos el uso de claves de 2.048 bits. Por otro lado, 6
CAs raíz todavía hacían uso de un certificado digital basado en una firma o
hash obtenida mediante MD5 (considerado insuficiente desde hace años),
mientras que 115 CAs raíz todavía hacían uso de firmas obtenidas mediante
SHA-1 (considerado insuficiente más recientemente, recomendándose la
utilización de SHA-256).
86
http://csrc.nist.gov/publications/nistpubs/800-131A/sp800-131A.pdf
root@mobile:/data/misc/user/0/cacerts-added # ls -l
-rw-r--r-- system system 883 2017-06-19 22:07 3d45599a.0
-rw-r--r-- system system 712 2017-06-20 14:01 7689a575.0
root@mobile:/data/misc/user/0/cacerts-removed # ls -l
ls -l
-rw-r--r-- system system 1023 2017-06-22 11:35 84cba82f.0
-rw-r--r-- system system 979 2017-06-22 11:35 c3a6a9ad.0
1203. Por otro lado, desde Android 4.1 se extienden las capacidades de gestión de
la confianza depositadas en el repositorio de certificados de confianza del sistema
mediante listas negras (blacklisting) [Ref.- 190], que afectan tanto a apps como al
navegador web y componentes WebView.
1204. Se dispone de dos listas negras de sistema para añadir las claves
públicas de CAs comprometidas, y los números de serie de certificados
digitales de entidades finales (End Entity, EE) comprometidos. Ambas listas
son almacenadas tanto en la base de datos de la app "Ajustes", como en
ficheros bajo "/data/misc/keychain" (sólo accesible por "root" o "system"):
1208. Los certificados digitales raíz asociados a una nueva CA pueden ser
obtenidos (e importados) desde el almacenamiento del dispositivo, ya sea
interno o externo, a través de la opción "Instalar desde almacenamiento"
disponible desde el menú "Ajustes [Personal] - Seguridad [Almacenamiento
de Credenciales]"87.
1209. Para poder añadir un nuevo certificado de CA al repositorio de
credenciales, es indispensable que el acceso al dispositivo esté protegido por
un método de acceso. Si el dispositivo no tiene ninguno, al seleccionar el
nombre del fichero que contiene el certificado, el sistema informará al
usuario de que debe configurar un método de acceso, y llevará al menú de
configuración de selección del código de acceso mediante el botón
"Aceptar". Si dispone de él, se solicitará su introducción antes de proceder a
la instalación del nuevo certificado.
1210. En Android 7.x, si se elimina el código de acceso del dispositivo móvil, se
impedirá poder hacer uso del almacenamiento de credenciales, por ejemplo,
al añadir un perfil VPN, de modo que no se podrá configurar dicho perfil en
base a certificados que hayan sido añadidos previamente por el usuario
mientras el código de acceso estaba configurado:
87
En versiones previas de Android (2.x) el fichero del certificado digital debía almacenarse directamente
en el directorio raíz del almacenamiento interno del dispositivo móvil (o tarjeta SD), no en un
subdirectorio.
1211. Para instalar el certificado basta con transferir el fichero del certificado
digital al dispositivo móvil, bien a través de un servidor web
(preferiblemente propio, frente a servidores públicos de terceros [Ref.- 45]),
correo electrónico, mediante una tarjeta de almacenamiento externa,
dispositivo de almacenamiento USB OTG, o el almacenamiento interno del
propio dispositivo móvil.
1212. Si el certificado digital es obtenido a través de un servidor web
mediante el navegador web existente por defecto (Chrome), Android
presentará al usuario directamente la ventana para importar el certificado
digital en el dispositivo móvil88:
88
Esta opción, disponible en versiones antiguas de Android, no estaba disponible en algunas versiones
de Chrome en Android 6.x.
M
1214. Android 7.x admite certificados digitales X.509 codificados en formato
DER (binario) siempre que tengan la extensión ".cer" o ".crt" (no siendo
".der" una extensión válida en Android) y también si están contenidos en un
archivo de almacén de claves PKCS#12 con extensión ".p12" o ".pfx" [Ref.-
185]. Los archivos correspondientes a certificados admitidos por Android se
representan con el icono de una huella dactilar a la izquierda.
1215. Al seleccionar el fichero correspondiente al certificado digital se
solicitará al usuario un nombre para su identificación, y el propósito del
mismo: "VPN y aplicaciones" o "Wi-Fi", tal como se mostró en las pantallas
anteriores. Es importante reseñar que, si se va a utilizar un certificado para
ambos usos (Wi-Fi, y VPN y aplicaciones), el certificado deberá importarse
dos veces, una para cada escenario de uso.
Nota: Los certificados raíz importados mediante estos métodos (desde Android 4.0) no
sólo afectan a las conexiones Wi-Fi y a las redes VPN que hacen uso de certificados
digitales, sino también a otro tipo de conexiones, como por ejemplo conexiones web
autentificadas y cifradas mediante HTTPS, establecidas desde el navegador web,
conexiones del cliente de correo electrónico, o cualquier otra app cliente, de ahí que la
categoría para las redes VPN se denomine "VPN y aplicaciones" [Ref.- 189].
1216. El proceso de instalación del nuevo certificado digital no muestra los detalles
del mismo, por lo que es muy importante ser especialmente cuidadoso a la hora
de importar nuevos certificados, especialmente los descargados directamente
desde la web.
1217. Si se instala un certificado digital correspondiente a una CA intermedia, el
certificado de la CA raíz no será añadido al almacén de credenciales.
1218. Android 7.x ofrece como novedad la opción "Credenciales de usuario" en el
menú "Ajustes - [Personal] Seguridad [Almacenamiento de credenciales]", que
permite al usuario obtener la lista de los certificados importados por él
1237. Al igual que en el caso de los certificados digitales raíz (ver apartado
"11.3.1. Gestión de certificados digitales de Autoridades Certificadoras"),
Android solicitará al usuario establecer una contraseña o código de acceso
en el dispositivo móvil para poder hacer uso del repositorio de credenciales,
si aún no se ha establecido una.
1238. Para archivos que actúan como almacén de claves, Android soporta
certificados X.509 codificados como PKCS#12. Estos ficheros deberán tener
extensión .p12 o .pfx [Ref.- 185]. Al seleccionar el fichero correspondiente al
certificado digital cliente se solicitará al usuario la contraseña que fue
empleada para proteger el fichero PKCS#12 que contiene el certificado
digital y la clave privada, y poder así extraer los certificados del fichero:
89
En este apartado se hace uso del término certificado digital cliente (o personal) para referirse a los
certificados empleados para la autentificación del usuario, en lugar de emplearse el término certificado
digital de usuario, con el objetivo de evitar confusiones con la pestaña "Usuario" de Android, que
muestra tanto certificados de cliente como de CAs (tal y como se ha descrito en apartados previos).
90
A diferencia de como ocurría en versiones previas de Android (2.x), el certificado digital importado (ya
sea de una CA o personal) no es eliminado de la tarjeta de almacenamiento externa una vez se ha
completado la operación de importación.
1248. Los certificados digitales cliente que se importen con su clave privada
podrán ser utilizados en aquellas apps que requieran autenticación
mediante este método, como por ejemplo, al acceder con un navegador
web a un servicio web que requiere disponer de un certificado de usuario.
1261. Desde Android 4.4 (KitKat) se proporciona un mayor control sobre los
diferentes modos de localización (o ubicación) disponibles [Ref.- 149]: alta
precisión, ahorro de batería o solo en dispositivo.
1262. Las opciones son:
"Alta precisión": hace uso del módulo GPS, de las conexiones Bluetooth (las
cuales no se empleaban para el servicio de ubicación en Android 5.x y
anteriores), de las redes Wi-Fi y de telefonía móvil, y de otros sensores,
para obtener la ubicación más rápida y precisa posible en el dispositivo
móvil.
"Ahorro de batería": emplea como fuentes para la obtención de la
ubicación del dispositivo móvil las redes Wi-Fi, las conexiones Bluetooth y
las redes de telefonía móvil, ya que llevan a cabo un menor consumo de
energía en comparación al módulo GPS.
"Solo en dispositivo": hace uso únicamente del módulo GPS del dispositivo
móvil.
1263. La nueva funcionalidad y API empleada por las apps para acceder a los
servicios de localización, especialmente al usar el modo "Ahorro de batería",
reduce drásticamente el consumo de batería. Previamente, cada app que
necesitaba hacer uso de los servicios de localización despertaba al módulo
GPS hardware y obtenía su información de ubicación propia individualmente.
1264. Cuando una aplicación o servicio del dispositivo móvil interactúa con los
servicios de ubicación, se mostrará en la barra de ajustes rápidos el icono
asociado, que aparece a continuación junto al símbolo del modo vibración:
1270. Es posible consultar las apps que han solicitado información sobre la
ubicación del dispositivo móvil recientemente a través del menú "Ajustes
[Personal] - Ubicación", y de la sección "Solicitudes de Ubicación Recientes".
1276. Adicionalmente, si se hace uso de alguno de los modos que emplean las
redes Wi-Fi para obtener información sobre la ubicación del dispositivo
móvil, es posible configurar si se permite el uso de las capacidades Wi-Fi del
dispositivo móvil para estos servicios y, en concreto, para la búsqueda e
identificación de redes Wi-Fi, aunque la conexión o el interfaz Wi-Fi esté
desactivado.
1277. Esta opción de configuración también está disponible en el proceso de
instalación y configuración inicial del terminal, ver apartado "23. Apéndice A:
Proceso de instalación y configuración inicial"), y se puede acceder a la
misma posteriormente desde el menú "Ajustes - [Conexiones Inalámbricas y
Redes] Wi-Fi - [...] - Ajustes avanzados - Buscar redes siempre":
1306. Hay que resaltar que estos permisos hacen referencia a permisos de
sistema, no a las capacidades que tiene la aplicación Maps para interactuar
con otros servicios de Google (como Google Fotos) y que afectan
directamente a la privacidad del usuario. Por ejemplo, la opción "Correos
electrónicos de la cronología" disponible en "Maps - Ajustes - Contenido
personal", marcada por defecto, hará que Maps envíe periódicamente
información al e-mail del usuario relacionada con los sitios visitados:
1308. La cuenta de usuario que está siendo utilizada por la app Maps es la que
se muestra en la parte superior del menú de "Ajustes de Maps", que figura
tras el icono de un rostro.
1311. Una opción que se añadió a la app Maps en las versiones posteriores a
marzo del 2017 fue la de "Compartir ubicación" [Ref.- 230], que permite que
el usuario comparta su posición geográfica con los contactos de su elección.
1312. Dicha opción permite conceder permisos para ver la ubicación en
tiempo real del dispositivo durante el tiempo especificado por el usuario.
Esta opción se habilita a través del menú de la app Maps denominado
"Compartir ubicación".
1313. Durante el proceso de compartición de ubicación, Maps solicitará al
usuario acceso a sus contactos en el teléfono. Es importante reseñar que,
aunque este permiso no se conceda, y que, por tanto, los contactos no se
puedan recopilar de los contactos del teléfono, Maps sí tendrá acceso a los
contactos que el usuario haya añadido a su cuenta de Google. Por tanto, el
denegar acceso a los contactos no implica que la app Maps pueda
consultarlos a través de la cuenta de Google activa:
12.3. A-GPS
1323. Assisted GPS (A-GPS o aGPS) es un sistema de ayuda para mejorar la
obtención de información y la precisión de los datos de localización
obtenidos mediante GPS, que permite disponer de una estimación de la
ubicación del dispositivo móvil más rápidamente.
1324. Especialmente A-GPS permite agilizar significativamente el tiempo
necesario para ubicar inicialmente el dispositivo móvil, parámetro conocido
como TTFF (Time-To-First-Fix).
1325. El módulo A-GPS está (teóricamente) disponible en dispositivos móviles
Android con GPS, especialmente cuando se hace uso del modo de alta
precisión.
1326. El sistema A-GPS es un sistema híbrido que se basa en obtener
información de las torres de telefonía móvil detectadas desde la ubicación
del dispositivo móvil (y que proporcionan información auxiliar o de
asistencia sobre la ubicación), y adicionalmente, hace uso de las conexiones
de datos (habitualmente 2/3/4G, o Wi-Fi) del dispositivo móvil para obtener
información actualizada de dónde se encuentran los diferentes satélites GPS
en un momento temporal (información con datos de las órbitas y de
sincronización - reloj - de los satélites, conocido también como almanaque).
1327. Por tanto, la funcionalidad A-GPS también es visible a través del tráfico
de datos del dispositivo móvil. Android 7.x, en diferentes momentos
temporales como por ejemplo durante el proceso de arranque del
dispositivo móvil, envía tráfico no cifrado hacia los servidores de
gpsOneXTRA (ver apartado "12.4. gpsOneXTRA").
1328. Debe tenerse en cuenta que, pese a que el uso del módulo GPS está
siempre habilitado por defecto si los servicios de ubicación están activos,
salvo que se haga uso del modo de ahorro de batería, hay escenarios en los
que no es posible obtener señal de GPS (por ejemplo, en el interior de
edificios), por lo que las apps como Maps harán uso automáticamente de las
capacidades de ubicación sin hacer uso del módulo GPS si estas han sido
habilitadas, por ejemplo, en el modo de alta precisión.
1329. En resumen, se recomienda deshabilitar la funcionalidad A-GPS
mediante la activación del modo "Solo en dispositivo" salvo que se quiera
hacer uso explícito de estas capacidades, con el objetivo de evitar desvelar
información de la ubicación del dispositivo móvil (por ejemplo, torres de
telefonía móvil o redes Wi-Fi cercanas) a través del tráfico de datos cifrado
destinado a los servidores de Google.
12.4. GPSONEXTRA
1330. Con el objetivo de agilizar el proceso de localización, complementando
las coordenadas obtenidas del módulo GPS y su precisión, los dispositivos
móviles Android pueden disponer de la funcionalidad asociada a la
asistencia mediante gpsOneXtra (aplicación conocida como QuickGPS en
otras plataformas móviles).
1331. Hasta Android 5.x inclusive, esta funcionalidad se conectaba a un
servidor web del dominio "gpsonextra.net" (xtra1, xtra2 ó xtra3) para
descargar la información semanal de la localización de los satélites GPS
alrededor del planeta (o almanaque). Por defecto, la descarga automática de
esta información está habilitada en Android. A partir de Android 6.x, la
conexión se realiza con servidores web del dominio "izatcloud.net" (en el
ejemplo utilizado para la presente guía, concretamente con el servidor
"xtrapath1").
1332. La descarga se lleva a cabo mediante los servidores de "izatcloud.net"
mencionados previamente, descargándose el fichero "/xtra3grc.bin".
Nota: La configuración interna de Android tanto del servidor de tiempos NTP como de
los servidores de gpsOneXTRA y A-GPS (ver apartado "12.3. A-GPS") está disponible en
el fichero "/system/etc/gps.conf", aunque no se dispone de ningún ajuste de
configuración a través del interfaz gráfico de usuario de Android para modificar estos
parámetros. Ejemplo (parcial) del fichero "gps.conf":
XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra3grc.bin
XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra3grc.bin
XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra3grc.bin
1333. Las conexiones gpsOneXTRA ("xtrapathN.izatcloud.net", TCP/80), para
incrementar la precisión de localización del GPS, se llevan a cabo (por
ejemplo) cada vez que se enciende el dispositivo móvil y éste dispone de
acceso a Internet.
1334. A finales del año 2016 se identificó una vulnerabilidad de denegación de
servicio que afectaba a los dispositivos móviles Android y que podía ser
explotada mediante la manipulación de los ficheros de posicionamiento
obtenidos mediante el servicio gpsOneXtra [Ref.- 223].
Nota: Queda fuera del alcance de la presente guía realizar un análisis detallado de
seguridad de las diferentes apps que hacen uso de los servicios de localización de
Google en Android, así como de la existencia de posibles vulnerabilidades en las
mismas.
A continuación, se muestran ejemplos de algunas apps existentes por defecto que
hacen uso de los servicios de localización. Únicamente se recomienda verificar que las
mismas hagan uso de tráfico cifrado mediante HTTPS, y si exponen o no los datos
intercambiados entre ellas y los servidores remotos mediante tráfico no cifrado,
normalmente empleando el protocolo HTTP. A modo de ejemplo, en algunos casos el
valor del agente de usuario (o "User-Agent") desvelado por las apps proporciona
numerosos detalles sobre la app y el dispositivo móvil asociado.
Se recomienda no hacer uso de apps o servicios que desvelan información detallada de
la ubicación del usuario y del dispositivo móvil empleado, y que hacen uso de
conexiones HTTP no cifradas, salvo que explícitamente se desee acceder a la
información que éstos proporcionan.
La mayoría de apps mencionadas requieren de una conexión de datos (telefonía móvil
o Wi-Fi) para funcionar y acceder a la información necesaria para su funcionalidad.
1351. Los permisos habilitados anteriormente para ciertos sitios web pueden
ser modificados posteriormente (ver apartado "12.6.3. Navegador web").
1369. Aunque dentro de los ajustes de la app "Fotos" Google sugiere utilizar la
ubicación para facilitar la organización y la búsqueda de imágenes, se
recomienda no hacer uso de la funcionalidad que incluye la información del
GPS en fotografías o vídeos, especialmente para su publicación o
distribución en Internet, salvo que se quiera hacer uso explícito de estas
capacidades. En caso contrario, las imágenes y vídeos revelarán los detalles
exactos de donde han sido tomadas.
Nota: El acceso al dispositivo móvil como unidad de almacenamiento USB puede estar
disponible incluso con el modo de depuración USB habilitado en Android. En caso de
conflictos, si está habilitado, basta con deshabilitar este modo (opción recomendada
desde el punto de vista de seguridad), para disponer únicamente de las capacidades de
almacenamiento USB estándar. El modo de depuración se puede deshabilitar mediante
el menú "Ajustes [Sistema] - Opciones de desarrollo" (una vez habilitadas),
desactivando la opción "Depuración USB".
1373. Para acceder a las capacidades de almacenamiento USB basta con
conectar el dispositivo móvil al ordenador mediante el puerto USB. Como
resultado, se generará una notificación correspondiente en la barra superior
de estado, "Cargando este dispositivo por USB", ya que, por defecto, ésa es
la acción configurada tan pronto se detecte la conexión USB. Este tipo de
conexión no involucra ninguna transferencia de datos entre el ordenador y
el dispositivo móvil.
1374. Para habilitar otros usos del puerto USB (el de carga se mantiene en
paralelo a otros que se puedan seleccionar), se abrirá la notificación y se
elegirá el modo deseado en el menú "Utilizar USB para". Las opciones
disponibles (además de "Cargar este dispositivo") son:
"Suministrar corriente eléctrica": en caso de querer que el dispositivo
móvil se comporte como una fuente de alimentación para el otro equipo
conectado vía USB.
"MIDI": esta opción se introdujo con Android 6.x, y permite conectar al
dispositivo móvil un dispositivo tipo MIDI (como un teclado) a controlar
por una app específica (como un sintetizador).
1376. Para poder transferir datos, el usuario debe seleccionar otro modo de
conexión a través de la notificación correspondiente (es decir, seleccionando
la notificación que informa del tipo de conexión USB que está activa en ese
momento), y elegir el tipo de transferencia que se desea ("Transferir
archivos" o "Transferir fotos (PTP)"):
91
La captura de pantalla que ilustra este comportamiento corresponde a un equipo macOS.
92
Existe una solución basada en drivers de terceros para macOS High Sierra, que queda fuera del ámbito
de la presente guía.
1391. Este interfaz de red NDIS del ordenador tiene asociada una dirección
MAC con el OUI "82:77:95" (por ejemplo), que corresponde a una dirección
MAC administrada localmente y, por tanto, no asignada a ningún vendedor
públicamente.
1392. Se recomienda modificar y restringir la configuración de este interfaz de
red para habilitar únicamente los protocolos y servicios que se consideren
necesarios en el ordenador.
1393. El dispositivo móvil, con dirección IP 192.168.42.129, actúa de gateway,
router o pasarela por defecto, de servidor DHCP, y de servidor DNS, y es
alcanzable mediante ping (ICMP).
Nota: El direccionamiento IP empleado por Android para la conexión de red
compartida a través de USB (192.168.42.x/24) no puede ser modificado salvo en
dispositivos móviles Android rooteados [Ref.- 99].
1394. La dirección MAC asociada al interfaz de red empleado para
proporcionar la conexión de red compartida a través de USB por el
dispositivo móvil tiene asociado un OUI que corresponde a una dirección
MAC administrada localmente (al igual que ocurría en el interfaz de red del
ordenador al que proporciona servicio) y, por tanto, no asignada a ningún
vendedor públicamente.
1395. Un análisis de los puertos TCP/IP y servicios disponibles en el interfaz de
red del dispositivo móvil empleado para proporcionar la conexión de red
compartida a través de USB permite obtener las siguientes conclusiones:
El único puerto TCP abierto es el correspondiente al servidor DNS (53/tcp).
El servidor DNS es identificado por nmap como "dnsmasq 2.51".
Los únicos puertos UDP abiertos son los correspondientes al servidor DNS
(53/udp) y al servidor DHCP (67/udp).
1396. Es posible finalizar la compartición de la conexión de datos
deshabilitando la opción "Anclaje de USB" habilitada previamente, opción
recomendada desde el punto de vista de seguridad una vez no se desea
disponer de la conexión de red compartida.
ejecutará el comando "adb kill-server", junto a "adb usb", para evitar que el
puerto ADB quede abierto y un tercero pueda conectarse a él.
root@movil:/data/misc/adb # ls -l
-rw-r----- system shell 717 2016-05-17 20:00 adb_keys
root@movil:/data/misc/adb # cat adb_keys
QAAAAHOy...<...>...EAAQA= unknown@unknown
NOTA: Para acceder a estos ficheros con las claves ADB es necesario disponer de
un dispositivo móvil Android rooteado.
1410. Este mecanismo de protección no puede ser deshabilitado a través de
los ajustes de configuración del dispositivo móvil, opción preferida desde el
punto de vista de seguridad.
1411. Al habilitar la opción de "Depuración USB", el dispositivo móvil mostrará
un mensaje de autorización que deberá ser aprobado por el usuario para
poder establecer la conexión a través del puerto USB:
1444. Para que una app pueda realizar una transferencia por NFC, debe
solicitar en su fichero manifest el permiso NFC ("android.permission.NFC").
1445. Si bien la compartición a través de la funcionalidad Beam requiere que
los dos dispositivos implicados estén muy próximos (a menos de 4 ó 5
centímetros aproximadamente), desde el punto de vista de seguridad se
recomienda no habilitarla para evitar que contenidos sensibles puedan ser
transferidos desde el dispositivo móvil del usuario a otro dispositivo.
1446. Por ejemplo, sería posible una transferencia accidental (o intencionada)
de contenidos entre usuarios que viajen en un medio de transporte como
93
Android HCE emula tarjetas ISO/IEC 7816 que hacen uso del protocolo ISO/IEC 14443-4 (ISO-DEP) para
las trasmisiones sin contacto (contactless).
1459. Adicionalmente, NFC puede ser empleado para gestionar las tarjetas de
fidelización, tarjetas de transporte, tarjetas de identificación y otros servicios
similares.
1460. En la versión 6.x de Android, se introdujo el servicio "Android Pay",
basado en HCE, que amplió la funcionalidad de Google Wallet. Con Android
7.x, la app "Google Pay", sustituta de Android Pay, es la app predeterminada
para la función "Tocar y pagar", y viene instalada por defecto en los
dispositivos Nexus.
1461. La funcionalidad de "Tocar y pagar" (Tap & Pay) [Ref.- 183] accesible a
través del menú de "Ajustes [Dispositivo] - Tocar y pagar", está activa en
Android 7.x por defecto.
94
https://wallet.google.com
1471. El servicio "Google Pay" pretende unificar los distintos medios de pago
(Android Pay y Google Wallet) como parte del servicio ofrecido al usuario a
través de su cuenta de Google. El objetivo del servicio es que la
configuración de pago esté disponible en cualquier dispositivo en el que se
configure la cuenta de usuario de Google, y que se pueda usar tanto para
compras vía web a través de Chrome, en apps de Android con compras
integradas, en pagos vía NFC en comercios físicos, etc. [Ref.- 255].
1472. A pesar de que la transacción en las operaciones de pago a través de
Google Pay y Android Pay no revela la numeración real tarjeta al receptor
del pago, sino un número de cuenta virtual que se asocia durante la
operación de alta de la tarjeta en el servicio, desde el punto de vista de
seguridad no se recomienda hacer uso de estos sistemas sin evaluar las
implicaciones de seguridad en la utilización de los mismos.
1473. Aunque más incómodo para el usuario, se recomienda habilitar
temporalmente estas capacidades únicamente en el momento de ir a hacer
uso de las mismas, volviendo a deshabilitar el interfaz NFC tan pronto se
haya completado la transacción o el intercambio de datos mediante esta
tecnología inalámbrica.
1474. Adicionalmente, si se desea hacer uso del servicio Google Pay, se
recomienda ser extremadamente cauteloso en las medidas de protección de
la cuenta de usuario de Google.
95
A partir de este momento, por simplificar, el menú "Ajustes [Conexiones Inalámbricas y Redes] -
Bluetooth" se abreviará como "Ajustes - Bluetooth".
1477. El estado del interfaz Bluetooth puede ser verificado de forma rápida y
sencilla por el usuario del dispositivo móvil a través de la barra superior de
estado, ya que tan pronto el interfaz está activo, se mostrará el icono de
Bluetooth.
1478. Android proporciona información en la barra superior de estado sobre
el estado del interfaz Bluetooth, y si existe una conexión establecida
actualmente, a través de un conjunto específico de iconos que muestran el
logotipo de Bluetooth. Por ejemplo, el icono de Bluetooth tendrá un par de
pequeños puntos (uno a cada lado) indicando la existencia de una conexión
(ver la barra de notificaciones de la imagen inferior):
1488. Con objeto de proteger la privacidad del usuario, en Android 6.x se bloqueó
el acceso directo a los identificadores hardware del dispositivo móvil de cara a las
apps que no son de sistema; por ejemplo, para las direcciones MAC asociadas a las
APIs de Wi-Fi y Bluetooth [Ref.- 602], si una app solicita conocer una de estas
direcciones, en lugar de la dirección MAC real, Android devolverá el valor
"02:00:00:00:00:00".
1489. Complementariamente, y también con el objetivo de proteger la
privacidad del usuario, cuando un dispositivo móvil inicia un escaneo
Bluetooth de fondo o background (este aspecto también aplica a los
escaneos Wi-Fi), la operación se lleva a cabo empleando una dirección MAC
origen aleatoria, por lo que los dispositivos externos no pueden identificar
de manera directa la dirección MAC real del dispositivo móvil. Sin embargo,
debe tenerse en cuenta que, si posteriormente, el dispositivo móvil
establece una conexión con un dispositivo externo, el dispositivo hará uso
de su dirección MAC real, desvelándose su valor [Ref.- 602].
1495. Debido a que el nombre por defecto desvela el tipo de dispositivo móvil
empleado, se recomienda modificarlo por un valor que no revele detalles ni
del dispositivo móvil (fabricante o modelo) ni del propietario (evitando tanto
referencias al nombre de la persona como de la organización asociadas al
mismo), como por ejemplo "bt0001" ("Bluetooth device 0001").
1496. En el caso de activar el interfaz Bluetooth para hacer uso de esta
tecnología, se recomienda configurar el mismo en modo oculto o no visible,
con el objetivo de no desvelar su presencia frente a las operaciones de
búsqueda de otros dispositivos Bluetooth.
1497. Por defecto, al activar el interfaz Bluetooth, éste se encuentra en modo
oculto o no visible, opción recomendada desde el punto de vista de
seguridad. Sin embargo, desde Android 5.x, al permanecer en la pantalla de
configuración de Bluetooth, el dispositivo móvil estará visible.
1498. Para activar el interfaz Bluetooth en modo oculto, se recomienda no
entrar en el menú de ajustes de Bluetooth, sino utilizar el menú de ajustes
rápidos del dispositivo móvil.
1499. La cantidad de tiempo que el dispositivo permanecerá en estado visible
depende del tiempo que el usuario permanezca en la pantalla de
configuración de Bluetooth.
1500. Se recomienda minimizar la visibilidad del dispositivo al mínimo tiempo
necesario para realizar el emparejamiento, en caso de establecer la conexión
"Just Works": este método se emplea cuando al menos uno de los dos
dispositivos carece de pantalla o de mecanismo de aceptación de un código.
Internamente, los dos dispositivos intercambiarán un número, de forma
similar al caso anterior, pero el usuario no verá dicho número y no se le
solicitará confirmación para el emparejamiento. Este escenario es típico en
el emparejamiento entre un dispositivo móvil y un auricular inalámbrico o
manos libres. Este método no ofrece protección frente a ataques MitM,
aunque sí frente a ataques de interceptación.
96
El perfil de Bluetooth MAP permite al dispositivo móvil intercambiar mensajes con vehículos
equipados con tecnología Bluetooth.
1525. Si la transferencia de datos a través del perfil OBEX Push tiene éxito, se
generará una nueva notificación representada por una flecha apuntando
hacia abajo (transferencia entrante) en la que se mostrará la estadística de
transferencias. Desde esta notificación es posible acceder a la lista de
archivos recibidos y, pulsando sobre cualquiera de ellos, abrirlos con la app
encargada de su manejo según su tipo:
bullhead:/sdcard/bluetooth $ ls -xla
total 3432
drwxrwx--x 2 root sdcard_rw 4096 2018-07-17 02:52 .
drwxrwx--x 4 root sdcard_rw 4096 2018-07-04 14:17 ..
-rw-rw---- 1 root sdcard_rw 1738060 2018-07-17 02:34 IMG_20180714_174047.jpg
-rw-rw---- 1 root sdcard_rw 3293 2018-07-17 02:42 Uninstall_SW_Lenovo-1.txt
-rw-rw---- 1 root sdcard_rw 0 2018-07-17 02:41 Uninstall_SW_Lenovo.txt
-rw-rw---- 1 root sdcard_rw 82 2018-07-17 02:52 User1.vcf
1527. El acceso a los archivos recibidos mediante Bluetooth está disponible desde
"Ajustes - Bluetooth - [...] - Mostrar archivos recibidos", incluyendo tanto los que
han tenido éxito como los intentos fallidos, cancelados o rechazados por el
usuario:
1542. Este interfaz de red Bluetooth del ordenador tiene asociada la dirección
MAC del adaptador Bluetooth empleado en el ordenador.
1543. La configuración de este interfaz de red emplea por defecto DHCP (a
través del servidor DHCP de Android), y toma todos los valores por defecto
existentes en el sistema operativo del ordenador. Así por ejemplo en
Windows 10 la pila de comunicaciones de IP versión 6 está activa, al igual
que NetBIOS sobre TCP/IP.
1544. Se recomienda modificar y restringir la configuración de este interfaz de
red para habilitar únicamente los protocolos y servicios que se consideren
necesarios en el ordenador.
1545. El dispositivo móvil, con dirección IP 192.168.44.1, actúa de gateway,
router o pasarela por defecto, de servidor DHCP, y de servidor DNS, y es
alcanzable mediante ping (ICMP).
shell@bullhead:/ $ ifconfig
bt-pan Link encap:UNSPEC
inet addr:192.168.44.1 Bcast:192.168.44.255 Mask:255.255.255.0
inet6 addr: fe80::825a:4ff:fe0e:15aa/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:54 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:5105 TX bytes:318
1552. Asimismo, Android 5.x introdujo capacidades BLE para que una app
pueda aplicar filtros durante el proceso de escaneo y sólo descubra aquellos
dispositivos en los que está interesada.
1553. En Android, un dispositivo BLE puede ser accedido por más de una app
al mismo tiempo. La conexión física la gestiona el sistema operativo, y cada
app accede a ella como si tuviese la conexión en exclusiva.
1554. Android 6.x añadió mejoras para las apps que hacen escaneos BLE,
pudiendo recibir notificaciones del sistema tan pronto se reciba un anuncio
BLE vinculado al filtro de escaneo especificado, mejorando así el consumo
energético asociado a este tipo de tareas [Ref.- 603].
1555. Cuando se establece una conexión con un dispositivo BLE, la app debe
pasar un parámetro, autoconnect, que determina si Android debería
reintentar la conexión en caso de que ésta se vea interrumpida (salvo que la
interrupción se deba a la inhabilitación del interfaz Bluetooth o a que la app
solicite la desconexión deliberadamente). Éste es el caso de la conexión con
un smartwatch, de forma que, si éste sale del rango de alcance, cuando
vuelva a entrar en él, se restablezca la conexión.
1556. Cuando el parámetro autoconnect tiene valor "verdadero", no se
establecerá un temporizador para los intentos de conexión. Si tiene valor
"falso", se establecerá un temporizador de 30 segundos para la conexión.
1557. Para permitir el escaneo BLE, en Android 6.x se requiere habilitar el
servicio de ubicación y conceder a la app permiso de localización (este
requisito no existía en versiones anteriores de Android). Este requisito
(permiso considerado peligroso por Google) se solicita al usuario en tiempo
de ejecución desde Android 6.x.
97
https://blog.classycode.com/undocumented-android-7-ble-behavior-changes-d1a9bd87d983
98
https://youtu.be/1a0wII96cpE?t=23m2s
99
A partir de este momento, por simplificar, el menú "Ajustes [Conexiones Inalámbricas y Redes] - Wi-
Fi" se abreviará como "Ajustes - Wi-Fi".
rr
100
En algunas versiones de Android, la existencia de flechas hacia arriba y hacia abajo en el icono Wi-Fi
indican que el dispositivo móvil está transmitiendo o recibiendo datos, respectivamente.
1582. Android mantiene el estado del interfaz Wi-Fi tras reiniciar el dispositivo
móvil, es decir, si el interfaz Wi-Fi estaba activo al apagar el terminal, al
encender el dispositivo móvil seguirá activo, incluso con el terminal
bloqueado.
1583. Igualmente, al salir del modo avión el estado del interfaz Wi-Fi será
restaurado, activándose de nuevo en el caso de haber estado activo
previamente (antes de activar el modo avión).
1584. Cuando el dispositivo móvil está conectado a una red, el interfaz Wi-Fi
permanece activo tras pasar al estado de espera o stand-by (desatendido),
es decir, el estado en que el dispositivo móvil está encendido pero con la
"Siempre" (opción por defecto): permite que el interfaz Wi-Fi esté activo y
sea utilizado siempre, incluso cuando el dispositivo móvil está suspendido.
"Solo si se está cargando": permite el uso de Wi-Fi con el dispositivo móvil
suspendido sólo si está conectado a la electricidad. En caso de estar
alimentado solo por la batería, entrarán en vigor las consideraciones del
modo Doze (ver apartado "9.9. Ahorro de batería (Doze)"), que afectan,
entre otros, a los escaneos Wi-Fi.
"Nunca": nunca se hace uso de Wi-Fi si el dispositivo móvil está suspendido,
por lo que en ese caso se hará uso de la conexión de datos de telefonía
móvil (aumentando potencialmente el consumo de datos).
1588. Las opciones "Notificación de red disponible" y "Usar redes Wi-Fi
abiertas automáticamente" deben desmarcarse para evitar conexiones a
lo Link encap:UNSPEC
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope: Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 TX bytes:0
101
https://github.com/bbc/device_api-android/issues/92
1610. La opción "Wi-Fi API" alberga opciones que actúan como comandos
sobre el interfaz Wi-Fi. Es importante reseñar que se trata de opciones no
soportadas, por lo que no se recomienda recurrir a ellas. Por ejemplo,
"disableNetwork" deshabilita la red cuyo identificador se proporcione;
"disconnect" desconecta el interfaz Wi-Fi por completo; "enableNetwork"
habilita la red que se pase como parámetro; "getConfiguredNetworks" y
"getConnectionInfo" no funcionan con la versión 6.0.1 en el dispositivo
Nexus 5X utilizado en la elaboración de la presente guía.
Aunque desde el punto de vista de seguridad es preferible conectar a redes Wi-Fi con
infraestructura, dado que hoy en día es también posible hacer uso de redes ad-hoc con
un nivel de seguridad razonable, existe la posibilidad de modificar este
comportamiento existente por defecto y habilitar el soporte para redes ad-hoc en
dispositivos móviles Android rooteados a través de un conjunto de parches y
modificaciones disponibles, por ejemplo, en distribuciones de Android de terceros,
como LineageOS (previamente CyanogenMod [Ref.- 40]).
Las versiones 2.3, 4.0 (y posteriores) de Android implementan soporte para Wi-Fi
Direct ("P2P", ver apartado "16.7. Wi-Fi Direct ("P2P")"), un estándar de comunicación
Wi-Fi directa entre dispositivos que es similar (pero no sustituye completamente) a las
comunicaciones ad-hoc [Ref.- 41], y añade mejoras de seguridad, facilidad de
configuración, rendimiento y consumo.
1629. Igualmente, el proceso de configuración de las redes Wi-Fi en Android
no permite claramente, y de forma explícita, especificar o comprobar si la
red Wi-Fi es oculta o visible (ver apartado "1650. En caso de que sea
necesario conectarse temporalmente a redes inalámbricas no ocultas (ver
apartado "16.5. Conexión automática a redes Wi-Fi: ocultas o visibles y
restricción de conexión"), o que, siendo ocultas, no sean de uso reiterado, se
aconseja proceder a borrar la red a través del botón "Olvidar" para eliminar
su almacenamiento y configuración del dispositivo móvil Android, y evitar así
ataque basados en la suplantación de redes Wi-Fi cuyo nombre (o SSID) sea
conocido por el dispositivo móvil.
1630. Conexión automática a redes Wi-Fi: ocultas o visibles").
1631. Se recomienda conectarse únicamente a redes que emplean WPA2
(Personal, WPA2-PSK, o Enterprise, WPA2) como mecanismo de
autentificación, y AES como mecanismo de cifrado. En su defecto, debería
emplearse WPA/TKIP (desaconsejado actualmente), pero en ningún caso se
debe hacer uso de WEP.
1632. En caso de emplear WPA2 (o WPA) en su versión Enterprise, es decir,
con mecanismos basados en 802.1x/EAP, la pantalla de ajustes permite
especificar los parámetros de configuración asociados al tipo de mecanismo
EAP a emplear: PEAP, TLS, TTLS, PWD102, SIM, AKA o AKA’ y el método de
autentificación de fase 2 (Ninguno, MSCHAPV2 (PEAPv0) o GTC, (EAP-GTC,
Generic Token Card)):
102
Los tres últimos tipos de métodos EAP corresponden según los estándares a EAP-TLS, EAP-TTLS y
EAP-PWD.
Nota: En la versión de Android 5.x únicamente se soportaban los métodos PEAP, TLS,
TTLS y PWD para las redes 802.1x EAP (ver imagen superior izquierda). A partir de
Android 6.x, se incorporan también los métodos SIM (Subscriber Identity Module,
empleado para autenticación e intercambio de claves a través de redes GSM), AKA
(Authentication and Key Agreement, para autenticación e intercambio de claves a
través de UMTS) y AKA’ (variante del AKA para redes 3G).
1633. En función del tipo de método EAP seleccionado, aparecerán las
diferentes opciones según el tipo de autentificación requerido:
103
https://developer.android.com/reference/android/net/wifi/WifiEnterpriseConfig.html#setDomainSuffix
Match(java.lang.String)
Se mostrará una lista de redes guardadas, que son aquellas a las que el
dispositivo ha intentado conectarse alguna vez, con o sin éxito. A la derecha
de cada red, se dispone de un interruptor, a través del cual se determinará
si dicha red se incluirá en la lista de redes restringidas cuando se habilite la
opción "Restringir conexiones automáticas" (descrita a continuación).
Una vez seleccionadas las redes Wi-Fi sobre las que se desea restringir las
conexiones, se retrocederá al menú anterior de "Uso de datos" y se
seleccionará "Ahorro de datos". Esta opción, que en Android 6.x se
configuraba a través de la opción "Uso de datos - […] - Restringir conexiones
automáticas", provoca que las aplicaciones envíen o reciban datos cuando
ejecutan en segundo plano:
1684. Por defecto, el punto de acceso Wi-Fi hace uso de WPA2-PSK (Pre-
Shared Key, o WPA2-Personal), basado en el uso de una contraseña o clave
precompartida, opción recomendada desde el punto de vista de seguridad.
Android permite también la creación de puntos de acceso Wi-Fi abiertos
("Ninguna"), es decir, que no implementen ningún mecanismo de seguridad
(opción desaconsejada).
1685. Por defecto el dispositivo móvil selecciona una contraseña aleatoria de
12 caracteres de longitud, hexadecimales. Sin embargo, se recomienda
hacer uso de una contraseña propia, de mayor longitud y que pueda ser
1687. Cuando el dispositivo móvil actúa de punto de acceso Wi-Fi, las apps de
Android no pueden utilizar la conexión Wi-Fi como dispositivo cliente. Si
previamente a su activación la conexión Wi-Fi cliente estaba activa, ésta será
deshabilitada automáticamente. Igualmente, tras desactivar el punto de
acceso Wi-Fi, la conexión Wi-Fi cliente será habilitada de nuevo
automáticamente.
1688. En Android 7.x, este comportamiento se constata en la pantalla principal
de ajustes, que mostrará el aviso correspondiente en la zona superior, y el
estado "Inhabilitado" para el interfaz Wi-Fi:
C:\>ping 192.168.43.1
104
Por ejemplo, las conexiones multimedia Miracast pueden ser llevadas a cabo sobre Wi-Fi Direct.
105
http://www.wi-fi.org/news-events/newsroom/wi-fi-alliance-enhances-wi-fi-certified-wi-fi-direct
1712. Una vez el dispositivo móvil descubre otros dispositivos con capacidades
Wi-Fi Direct, puede iniciar una comunicación enviando una invitación para
establecer la conexión. Si el otro dispositivo acepta la invitación, se
establecerá un nuevo grupo de Wi-Fi Direct, y se llevará a cabo la conexión:
106
El valor numérico del nombre cambia aleatoriamente tras restablecer los valores de fábrica.
1715. Cuando un dispositivo móvil quiere establecer una conexión P2P vía Wi-
Fi Direct y envía una invitación, puede, bien solicitar la creación de un grupo
al que unirse, bien iniciar la creación de un grupo a través de una trama de
"GO Negotiation request" (GO - group owner).
1716. En Android 7.x, cuando se establece la conexión con otro dispositivo vía
Wi-Fi Direct, el grupo creado para esa conexión se almacena en el campo
"Grupos recordados", de forma que las conexiones futuras desde ese
dispositivo se realizarán de forma automática, no recibiéndose ningún
mensaje de confirmación de invitación.
1717. Por tanto, si la conexión Wi-Fi Direct se realiza para una operación
puntual, se recomienda eliminar el grupo cuando finalice dicha conexión.
1718. Para el dispositivo móvil empleado en la elaboración de la presente guía,
Google no ofrece la opción de crear grupos Wi-Fi Direct, sino que crea un
grupo nuevo para cada conexión Wi-Fi Direct aceptada (por tanto, los grupos
serán entre dos dispositivos).
107
http://developer.android.com/reference/android/telephony/SmsManager.html
108
https://whispersystems.org/blog/simplifying-otr-deniability/
109
https://github.com/WhisperSystems/Signal-iOS
1741.
1742. Android no permite a través del interfaz de usuario estándar
deshabilitar de forma individualizada las capacidades de telefonía móvil (voz
y SMS); la única opción para ello es activar el "Modo avión", bien a través del
menú "Ajustes [Conexiones Inalámbricas y Redes] - Más..." o del menú de
ajustes rápidos.
1743. Al activar el modo avión en Android, tanto la conectividad a redes Wi-Fi
como la conectividad de Bluetooth puede ser habilitada posteriormente y de
forma independiente, pero no es posible activar la conectividad de telefonía
móvil en ese modo, ni tampoco la conectividad móvil 2/3/4G, directamente
ligada al modo avión:
1753. Android 7.x dispone de una opción que permite al usuario crear una lista
blanca de apps autorizadas a las que sí se permitirá hacer uso de las
comunicaciones de datos móviles cuando estén ejecutando de fondo incluso
aunque el servicio de ahorro de datos "Data Saver" (descrito al final de este
apartado) se encuentre activo.
1754. La opción "Itinerancia de datos" (o roaming), disponible a través del
menú "Ajustes [Conexiones Inalámbricas y Redes] - Más... - Redes móviles",
permite configurar si se desea hacer uso de las capacidades de datos de
telefonía móvil del dispositivo cuando se viaja al extranjero y el terminal se
encuentra en una red de otro operador al que puede asociarse su tarjeta
SIM:
se puede ver si alguna app tiene este permiso. Por defecto, la app "Servicios
de Google Play" se incluye en esta lista:
1764. Para poder conocer los datos móviles que consume una determinada
app cuando ejecuta en segundo plano, se accederá a "Ajustes - [Dispositivo]
Aplicaciones - [Nombre de la app] Uso de datos":
1765. Para dotar a las apps de capacidad para saber si el modo de ahorro de
datos está activo, Google ha añadido funcionalidad a la API
ConnectivityManager110, incluyendo la posibilidad de que la app sepa si se
ha añadido a la lista blanca o no.
1766. Además, a través de ADB se pueden consultar los ajustes de ahorro de
datos, incluyendo los UIDs de las apps que se encuentran en la lista blanca:
110
https://developer.android.com/reference/android/net/ConnectivityManager.html
Nota: El menú para acceder al ajuste de identificador del emisor en cada dispositivo
móvil depende de la versión de la app "Teléfono", por lo que puede no coincidir con el
descrito en la descripción anterior. La versión de la app "Teléfono" empleada para la
elaboración de la presente guía es la 8.1.146524971.
111
https://support.google.com/nexus/answer/2895524
112
https://plus.google.com/photos/+android/albums/5942570061497141729
113
https://support.google.com/accounts/answer/3463280?p=modifynumber
1779. Adicionalmente, existe una opción que permite que, al recibir o cursar
una llamada asociada a un número que no forma parte de los contactos, se
intente ofrecer información sobre el otro interlocutor. Esta funcionalidad
está disponible en Android desde la app del teléfono, mediante el menú de
opciones avanzadas disponible en la parte superior derecha, a través del
menú "… - Ajustes - ID de llamada y spam" (opción que por defecto está
habilitada) [Ref.- 147]:
114
https://support.google.com/nexus/answer/2811843
115
https://github.com/WhisperSystems/Signal-iOS
el término PRL hace referencia a la "Preferred Roaming List" definida por los
operadores de telefonía móvil.
1811. Este cambio de configuración prevalece incluso tras reiniciar el
dispositivo móvil, y fuerza a que el dispositivo móvil sólo haga uso de redes
4G o 3G, más seguras que las redes 2G.
1812. Se debe ser muy cauteloso a la hora de acceder al menú de prueba, y
únicamente aplicar las recomendaciones expuestas en la presente guía,
dado que algunas de ellas pueden provocar comportamientos inesperados
en el dispositivo móvil. En cualquier caso, si se opta por realizar cambios
sobre esta configuración, se deberá apuntar cuáles eran los valores
originales para poder revertir a ellos en caso de comportamientos inestables
de los servicios de voz y datos.
1848. El enlace "Datos del certificado" permite obtener los detalles del
certificado digital a través del "Visor de certificados", que incluye elementos
clave para su verificación, como por ejemplo el número de serie del
certificado, las huellas o fingerprints SHA-1 o SHA-256, información de la
autoridad certificadora involucrada en su emisión, etc.:
dispositivo móvil y las apps (como el navegador web o los clientes de correo
electrónico) a través de un nuevo KeyChain (o gestor de credenciales y
certificados) [Ref.- 122] [Ref.- 188].
1855. Previamente se disponía de un gestor de credenciales y certificados
global para todo el sistema pero únicamente accesible para la conexión a
redes Wi-Fi y VPN, a través de "Ajustes" [Ref.- 188]. Las apps debían hacer
uso de sus propios gestores de certificados privados, ya que no disponían de
una API para acceder a los certificados existentes en el repositorio del
sistema.
1856. En Android 4.x, los certificados digitales cliente guardados en el
repositorio de credenciales están disponibles para su utilización por parte
del navegador web [Ref.- 185].
1857. Existen otros navegadores web de terceros (como por ejemplo Firefox
para Android, junto al add-on o extensión Cert Manager116, SandroB, etc.),
que también disponen de capacidades de autentificación web basada en
certificados digitales cliente, y que adicionalmente definen su propio gestor
de certificados cliente (KeyManager) y su propio gestor de confianza
(TrustManager, para gestionar sus propias CAs) a través de
"javax.net.ssl.SSLContext".
1858. Android 5.x introdujo cambios en la configuración de TLS/SSL empleada,
por ejemplo, para las conexiones HTTPS (entre otras), incluyendo soporte
para TLS v1.1 y v1.2, AES-GCM (AEAD), y dando preferencia a los algoritmos
con capacidades de forward secrecy, como ECDHE y DHE. Por otro lado, se
deshabilita el soporte para MD5, 3DES, y los algoritmos ECDH con claves
estáticas.
1859. Desde Android 6.x, el AKS (Android Keystore System) mejora la gestión
del acceso al material criptográfico del dispositivo móvil, permitiendo a las
apps acceder a los certificados digitales del sistema, de usuario (para uso en
redes VPN y Wi-Fi), de cliente o personales (por ejemplo, para el navegador
web, el cliente de correo, etc.), e incluso a claves secretas con cifrado
simétrico (ver apartado "11.1. Android Keystore System: Almacenamiento
de credenciales").
1860. El proveedor de seguridad de Google Play Services también ofrece estas
capacidades para versiones de Android previas hasta la 2.3.
1861. El uso de SSLSocketFactory y SSLSocket directamente por parte de una
app puede emplearse para establecer comunicaciones cifradas de bajo nivel
sin hacer uso de la configuración y prerrequisitos del sistema previamente
indicados, permitiendo el uso de algoritmos más inseguros.
116
https://addons.mozilla.org/en-US/mobile/addon/cert-manager/
19.5. IPV6
1862. El protocolo IP versión 6 (IPv6) está soportado y activado por defecto en
Android para las comunicaciones de datos mediante Wi-Fi y telefonía móvil
2/3/4G.
1863. En Android 7.x el usuario dispone de capacidades para visualizar la
información de las direcciones IPv6 a través del menú "Ajustes - Información
del teléfono - Estado", y en concreto, mediante el campo "Dirección IP"117,
aunque no dispone de ninguna opción de configuración relacionada con IPv6
desde el interfaz gráfico de usuario (o GUI):
117
https://plus.google.com/+KevinOtte/posts/JUHVxyW1AB3
IP fija para la red Wi-Fi igual a 0.0.0.0, el mismo valor que también debe ser
asignado al gateway [Ref.- 56].
Nota: Las limitaciones del uso exclusivo de IPv6 en el interfaz Wi-Fi de Android están
relacionadas también con problemas en el soporte para otras funcionalidades de IPv6:
- RFC3315 (DHCPv6): https://code.google.com/p/android/issues/detail?id=32621
- RFC6106 (RDNSS): https://code.google.com/p/android/issues/detail?id=32629 118
1867. Durante el proceso de inicialización de conectividad de datos, el
dispositivo móvil Android genera peticiones IPv6 de solicitud de vecinos y de
router mediante ICMPv6, empleando como dirección origen
"fe80::6489:9aff:fe01:0203" (donde su dirección MAC es 64:89:9a:01:02:03),
y añadiendo también su dirección MAC como dirección de enlace.
1868. La utilización de la dirección MAC en la dirección IPv6 sin hacer uso de
las Privacy Extensions de IPv6 (RFC 4941) presenta problemas de seguridad y
permite el seguimiento de los dispositivos móviles Android en Internet [Ref.-
54].
1869. Finalmente, Android 4.0 añadió soporte para las Privacy Extensions de
IPv6, pero sin capacidades de configuración, ya que su utilización está
configurada por defecto, pero no puede ser deshabilitada en caso de que
sea necesario (aunque no recomendado desde el punto de vista de
seguridad) [Ref.- 58].
1870. Adicionalmente, el dispositivo móvil Android envía periódicamente
mensajes IPv6 de informes multicast ("Multicast Listener Report Message
v2").
1871. Se recomienda deshabilitar la disponibilidad de IPv6 en Android por
completo, salvo que se vaya hacer uso de sus capacidades de comunicación,
aunque desafortunadamente esta opción no está disponible actualmente en
la versión de Android analizada (salvo en dispositivos Android rooteados).
Nota: No se ha identificado ningún mecanismo, ni opción de configuración, en Android
que permita deshabilitar o gestionar la pila de comunicaciones de IPv6.
119
http://tools.ietf.org/html/draft-ietf-ipsec-isakmp-xauth
120
http://tools.ietf.org/html/draft-ietf-ipsec-isakmp-hybrid-auth
121
https://www.cloudcracker.com/dictionaries.html (servicio no disponible actualmente).
122
http://www.cisco.com/en/US/tech/tk583/tk372/technologies_security_notice09186a0080215981.html
1884. Tanto para redes L2TP/IPSec PSK como RSA, Android, en función del tipo
de red VPN, también permite habilitar un secreto L2TP (deshabilitado por
defecto), opción que facilita autentificar el propio túnel L2TP mediante un
secreto compartido entre el cliente y el servidor (y que puede ser necesario
en función de la configuración del servidor VPN).
1885. En el caso de redes L2TP/IPSec RSA, y de redes IPSec Xauth RSA, Android
permite establecer el certificado digital cliente de usuario de IPSec, el
certificado de la autoridad certificadora (CA) que ha emitido el certificado
del servidor o concentrador VPN, y específicamente, el certificado digital del
servidor o concentrador VPN (si no se especifica un certificado digital
concreto, Android por defecto aceptará el certificado recibido al establecer
la conexión, opción desaconsejada desde el punto de vista de seguridad):
VPN", es posible editar o eliminar el perfil de la red VPN a través del botón
"Olvidar":
1902. Para cambiar los ajustes de una VPN definida, se debe pulsar el icono de
engranaje a la derecha del nombre.
1903. Por último, Android no dispone de soporte nativo para redes VPN
basadas en OpenVPN, siendo necesario instalar una app de terceros que
actúe de cliente OpenVPN para este tipo de conexiones, como por ejemplo
el cliente oficial de OpenVPN para Android disponible en Google Play123.
123
https://play.google.com/store/apps/details?id=net.openvpn.openvpn
124
A diferencia de como ocurría en versiones previas de Android, 2.x (ver la versión previa de la
presente guía).
1916. En caso de estar interesados en actualizar las apps tan pronto estén
disponibles, tanto a través de redes Wi-Fi como de redes de datos móviles
1930. Esta solicitud puede hacerse válida para los siguientes 30 minutos, con
el objetivo de facilitar la realización de múltiples compras sin que sea
necesario autentificarse para cada una de ellas, o nunca (opción
desaconsejada).
1931. La app "Play Store" recibe actualizaciones silenciosas que se llevan a
cabo automáticamente y sin aviso para el usuario. Se puede comprobar si
hay alguna una actualización de la app "Play Store" disponible para el
dispositivo entrando en los ajustes de la app "Play Store", "Ajustes -
[Información] Versión de la compilación ". Al seleccionar ese campo, si hay
actualizaciones disponibles, se mostrará un mensaje informativo "Una nueva
versión de Google Play Store se descargará e instalará", pero ello no provoca
que la descarga de la actualización se lleve a cabo inmediatamente. La única
forma de forzar una actualización automática de la app "Play Store" (si se
requiere una funcionalidad precisa no disponible en la versión actual) es
llevar a cabo una actualización manual del fichero APK correspondiente a la
app "Play Store" de un sitio web de confianza (no existe ningún sitio oficial
desde el que se puedan descargar las versiones de la app "Play Store").
Cuando la versión está actualizada, se mostrará un mensaje informativo de
ello.
1932. La versión de la app "Play Store", al igual que de cualquier otra app
instalada en Android, puede obtenerse tanto desde la propia app (menú
"Ajustes [Información] - Versión de Play Store", como desde el menú
"Ajustes [Dispositivo] - Aplicaciones", por ejemplo, desde la pestaña "Todas",
seleccionando la app (en el ejemplo inferior, "Google Play Store") de la lista
de todas las apps disponibles (por ejemplo, versión 10.6.08…):
1935. Se puede conocer qué apps son de sistema a través del menú "Ajustes -
[Dispositivo] Aplicaciones - […] Mostrar aplicaciones del sistema".
1936. Se constata en Android 7.1.2 que, aunque aparentemente es posible
desinstalar las actualizaciones de la app "Play Store", tan pronto transcurren
unos segundos el dispositivo recibirá la nueva actualización, sin intervención
alguna del usuario, ni solicitud de confirmación por parte del sistema.
Únicamente se podrá ver un símbolo de flecha de descarga en el área de
notificaciones de la barra superior de estado que, al desplegarse, mostrará
que la descarga de la app está en curso:
2010. La opción "Enlaces compatibles" son los sitios web que la app declaró en
su fichero manifest (y en el fichero assetlinks.json asociado al dominio) como
propios para lanzar una actividad concreta dentro de ella.
2011. La opción "Otros ajustes predeterminados" informa de si la app se ha
seleccionado como aplicación para ejecutarse ante un determinado evento.
Sin embargo, este campo sólo indica si la app tiene algún ajuste de ese tipo,
pero no concretamente cuál. Para consultarlo, se debe acceder a "Ajustes -
[Dispositivo] Aplicaciones - [rueda de configuración] [Predeterminadas]" y
examinar la lista de apps.
2012. En caso de haberse seleccionado como predeterminada una app para una
acción, si se desea cambiarla, se puede elegir entre los siguientes métodos:
2023. La versión 1.1 del SDK de Instant Apps añade un contexto persistente
después de la instalación de una Instant App, permitiendo a la app completa
acceder a los datos de su versión "Instant App". De este modo, si el usuario
instala una versión completa tras haber ejecutado una Instant App, podrá
recuperar elementos de configuración y archivos creados por ella.
2024. Adicionalmente, de cara a los desarrolladores, esta versión 1.1 del SDK
incluye APKs de configuraciones, de forma que se disponga de distintas
variantes según la arquitectura (por ejemplo, ARM o ARM64) o la resolución
de la pantalla del dispositivo móvil, de forma que la app descargada tenga
un tamaño menor.
Nota: La opción "-all" del comando "adb backup" no guarda los datos del
almacenamiento compartido, por lo que aisladamente no realizará un backup
completo del dispositivo. Por este motivo ha de incluirse la opción "-shared". A pesar
de ello, se ha de tener precaución, pues la experiencia demuestra que ciertos datos de
usuario no se mantienen tras la restauración con el comando "adb restore", como los
asociados a múltiples apps.
2034. Tras ejecutar el comando "adb backup", el dispositivo móvil mostrará
una pantalla de confirmación para autorizar la realización de la copia de
seguridad:
2047. Si se reinstala una app de terceros (desde Google Play), el servicio puede
almacenar y restaurar la configuración y los datos asociados a la app
(algunas apps pueden no permitir la realización de copias de seguridad y la
restauración de sus datos).
2048. La opción "Restauración automática" permite restaurar la configuración
y los datos asociados a una app al instalarla (o reinstalarla) en el dispositivo
móvil desde la copia de seguridad disponible en los servidores de Google. Si
la app fue instalada y usada en el mismo, o en otro dispositivo móvil, en el
que se disponía del servicio de copia de seguridad de datos activo con la
misma cuenta de usuario de Google, toda la información de la app será
recuperada.
2049. En caso de que el usuario reemplace, sustituya o renueve su dispositivo
móvil, este servicio ofrece la posibilidad de restaurar los datos desde la copia
de seguridad de Google en el nuevo dispositivo móvil la primera vez que se
accede a Google con la cuenta de usuario asociada a este servicio.
2050. Los datos que serán restaurados incluyen, entre otros, los ajustes de
calendario y Gmail, los datos de redes Wi-Fi (incluyendo las credenciales y
contraseñas de acceso), la configuración de la pantalla de inicio, los ajustes
de idioma e introducción de texto, la lista de apps instaladas desde Google
Play, junto a sus datos y ajustes de configuración, etc. [Ref.- 104].
2051. La opción "Restablecer ajustes de red" eliminará cualquier configuración
que se haya realizado a nivel de comunicaciones en el dispositivo
(incluyendo las contraseñas de las redes Wi-Fi, las redes añadidas
manualmente, los emparejamientos Bluetooth, etc.).
2052. El usuario u organización propietaria del dispositivo móvil Android debe
evaluar en detalle el nivel de confianza depositado en Google para emplear
este servicio y almacenar todos los datos personales y confidenciales de los
usuarios en el mismo.
2056. Los mensajes informativos pueden ser eliminados del menú con un
gesto, deslizando el mensaje hacia uno de los laterales de la pantalla.
2057. Adicionalmente, se presenta un apartado "Sugerencias" en la parte
superior, que invita al usuario a probar nuevas funcionalidades
proporcionadas por Android 7.x. Estas sugerencias se pueden eliminar desde
el botón "…" situado a su derecha.
22.2. SPLIT-SCREEN
2059. Android 7.x (Nougat) implementa el modo "Split-screen" (pantalla
dividida), que ofrece al usuario un entorno multiventana (tanto en vertical
como en horizontal) para interactuar simultáneamente con dos apps.
2075. Para dejar de fijar una pantalla o app concreta, si esta funcionalidad fue
activada manualmente por el usuario, éste deberá presionar
simultáneamente los botones de "retroceso" (icono con un triángulo o
flecha hacia la izquierda situado en la parte inferior izquierda de la pantalla)
y (de nuevo) el botón de "Recientes" (botón con un icono cuadrado), del
dispositivo móvil [Ref.- 236].
125
Mediante una llamada al método "startLockTask()" o "setLockTaskPackages()".
126
Una app con capacidades propietarias del dispositivo es una app administradora del dispositivo que
no puede ser desactivada por el usuario, o desinstalada, una vez ha sido activada por el administrador
en un entorno de gestión empresarial: https://developer.android.com/reference/android/app/admin/
DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String).
2084. Por otro lado, desde Android 4.4, KitKat (nivel de API 19), es posible realizar
una grabación en vídeo (en formato MPEG-4, sin audio) de la pantalla del
dispositivo móvil a través de ADB. El siguiente comando permite realizar una
grabación a 8 Mbps de resolución (en lugar de los 4 Mbps empleados por defecto),
durante 45 segundos como máximo (en lugar de emplear la duración por defecto y
máxima de 3 minutos, 180 segundos), y se almacenará el vídeo en la tarjeta SD del
dispositivo móvil:
C:\> adb shell screenrecord --bit-rate 8000000 --time-limit 45 /sdcard/kitkat-
video.mp4 (pulsar ctrl+c para parar la grabación antes de tiempo)
127
http://developer.android.com/tools/help/adb.html
128
http://developer.android.com/tools/help/adb.html#screenrecord
2100. La versión 5.x de Android ofrecía el menú "Tocar y listo", por el cual era
posible copiar la configuración de otro dispositivo Android mediante NFC,
pero esta opción no está disponible en Android 7.x.
2101. Por el contrario, se presenta la pantalla "¿Tienes otro dispositivo?" que
permitiría copiar las cuentas, aplicaciones y datos desde otro dispositivo
móvil. El alcance de esta guía se centra en llevar a cabo la instalación inicial
completa, desde cero, por lo que se seleccionará la opción "No, gracias" (o
"Configurar como nuevo" en algunas versiones de Android 7.x):
2113. Esta pantalla ofrece la opción "Saltar" para el caso de que no se desee
utilizar un método de protección de acceso. Si se selecciona esta opción, se
informa del riesgo de uso no autorizado, y se solicita confirmación mediante
la opción "SÍ, SALTAR" o revisar la respuesta mediante "VOLVER".
2119. Una vez aceptada la primera huella, se puede elegir añadir más huellas
mediante la opción "Añadir otra", hasta un máximo de 5 huellas en total.
2120. Si transcurre un tiempo determinado entre la adición de una huella y la
siguiente, aparecerá un mensaje de "Registro no completado", se
interrumpirá el proceso y será preciso iniciarlo de nuevo, previa introducción
del PIN, patrón o contraseña que se dio de alta como método alternativo.
2121. Una vez registradas todas las huellas que se desee, se pincha en el
botón LISTO.
2122. Una vez se haya dado de alta un PIN, contraseña o patrón, si el
dispositivo permanece inactivo un tiempo durante este último paso de
configuración, se solicitará desbloquear el terminal mediante la opción
elegida (no se incluye la opción de emplear la huella digital).
2123. Pese a que no se haya optado por vincular el dispositivo móvil con una
cuenta de usuario de Google (ni se haya conectado a una red Wi-Fi), se
ofrecerán ciertas opciones para activar determinadas capacidades asociadas
a los servicios de ubicación de Google (equivalentes a las descritas en el
apartado "23.2. Instalación vinculada a una cuenta de Google") para agilizar
la localización del dispositivo por parte de las apps. Las dos opciones
(habilitadas por defecto), permiten de nuevo recopilar datos de ubicación
por parte de las apps y hacer uso de las capacidades de búsqueda de redes
Wi-Fi para mejorar los servicios de ubicación de Google, incluso cuando el
interfaz Wi-Fi esté deshabilitado:
2135. Tras definir el método de acceso, se iniciará sesión con la nueva cuenta
de usuario de Google, empleando una conexión cifrada mediante HTTPS, y
se presentan al usuario los distintos servicios de Google disponibles (todos
ellos activados por defecto):
2146. Tras pulsar en "Acepto", los pasos de instalación son idénticos a los del
apartado anterior, "23.2.1. Creación de una cuenta de usuario nueva".
24. REFERENCIAS
La siguiente tabla muestra las fuentes de información a las que se hace referencia a lo
largo de la presente guía129:
Referencia Título, autor y ubicación
[Ref.- 1] Android. Google.
URL: http://www.android.com
[Ref.- 2] Google Nexus 5. Google.
URL: http://www.google.com/nexus/5/
[Ref.- 3] Google Nexus 5X. Google.
URL: https://www.google.com/nexus/5x/
[Ref.- 4] Google Play.
URL: https://play.google.com
[Ref.- 5] "Exercising Our Remote Application Removal Feature". Rich Cannings. Android. June 2010.
URL: http://android-developers.blogspot.com/2010/06/exercising-our-remote-application.html
[Ref.- 6] "Actualizar las aplicaciones Android". Google.
URL: https://support.google.com/googleplay/answer/113412?hl=es
[Ref.- 7] Android Developers. Google.
URL: http://developer.android.com
[Ref.- 8] "The dark side of the new Google Play". Denis. Kaspersky Lab Expert. February 2011.
URL:http://www.securelist.com/en/blog/11153/The_dark_side_of_the_new_Android_Play
[Ref.- 9] "Android 2.3 Platform and Updated SDK Tools". December 2010. Google.
URL: http://android-developers.blogspot.com/2010/12/android-23-platform-and-updated-
sdk.html
[Ref.- 10] "Android 2.3.3 Platform, New NFC Capabilities". February 2011. Google.
URL: http://android-developers.blogspot.com/2011/02/android-233-platform-new-nfc.html
[Ref.- 11] "Android Architecture Components". Google.
URL: https://developer.android.com/develop/index.html
[Ref.- 12] "SafetyNet Helper Sample". Google Play.
URL: https://play.google.com/store/apps/details?id=com.scottyab.safetynet.sample
[Ref.- 13] "Google Apps Device Policy". Google. URL:
https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent
URL: https://www.google.com/support/mobile/bin/answer.py?hl=en&answer=190930
[Ref.- 14] "Google Authenticator". Google. Google Play.
URL: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
URL: https://www.google.com/support/accounts/bin/answer.py?answer=1066447
[Ref.- 15] "About 2-step verification". Google.
URL: https://support.google.com/accounts/answer/180744
[Ref.- 16] "Application Fundamentals". Android Developers. Google.
URL: http://developer.android.com/guide/components/fundamentals.html
[Ref.- 17] Android Developers - Direct Share. Google.
URL: https://developer.android.com/samples/DirectShare/index.html
[Ref.- 18] "Mobile Application Security". Himanshu Dwivedi, Chris Clark, David Thiel. McGraw-Hill. ISBN:
0071633561. 2010.
URL: http://www.mhprofessional.com/product.php?isbn=0071633561
[Ref.- 19] "API Levels". Android Developers. Google.
URL: http://developer.android.com/guide/appendix/api-levels.html
129
El texto "[old]" indica que se tiene constancia de que el enlace pudiera no estar operativo, o estar
desactualizado, en la actualidad, pero se mantiene debido a su relevancia y por motivos históricos. En
algunos casos se acompaña de una referencia actualizada, indicada por el texto "[actualizada]".
La siguiente tabla muestra las fuentes de información a las que se hace referencia a lo
largo de la presente guía, en concreto las referencias asociadas directamente al CCN-
CERT:
Referencia Título, autor y ubicación
[Ref.- 400] "Guía CCN-STIC-450: Seguridad de dispositivos móviles". CCN-CERT. Marzo 2013.
URL: https://www.ccn-cert.cni.es/series-ccn-stic/guias-de-acceso-publico-ccn-stic/6-ccn-stic-450-
seguridad-en-dispositivos-moviles/file.html
[Ref.- 401] "Guía CCN-STIC-453(A) - Seguridad de dispositivos móviles: Android 2.x". CCN-CERT. Mayo 2013.
URL: https://www.ccn-cert.cni.es/series-ccn-stic/guias-de-acceso-publico-ccn-stic/11-ccn-stic-
453-seguridad-en-android/file.html
[Ref.- 402] "Guía CCN-STIC-453B - Seguridad de dispositivos móviles: Android 4.x". CCN-CERT. Abril 2015.
URL: https://www.ccn-cert.cni.es/series-ccn-stic/guias-de-acceso-publico-ccn-stic/827-ccn-stic-
453b-seguridad-en-android-4-x/file.html
[Ref.- 403] "CCN-STIC-457: Gestión de dispositivos móviles: MDM (Mobile Device Management)". CCN-
CERT. Noviembre 2013. URL: https://www.ccn-cert.cni.es/series-ccn-stic/guias-de-acceso-
publico-ccn-stic/14-ccn-stic-457-herramienta-de-gestion-de-dispositivos-moviles-mdm/file.html
[Ref.- 404] "Buenas Prácticas. CCN-CERT BP-03/16. Dispositivos móviles". CCN-CERT. Octubre 2016.
URL: https://www.ccn-cert.cni.es/informes/informes-de-buenas-practicas-bp/1757-ccn-cert-bp-
03-16-dispositivos-moviles/file.html
[Ref.- 405] "Guía CCN-STIC-453C - Seguridad de dispositivos móviles: Android 5.x". CCN-CERT. Enero 2018.
URL: https://www.ccn-cert.cni.es/series-ccn-stic/guias-de-acceso-publico-ccn-stic/2733-ccn-stic-
453c-seguridad-en-android-5-x.html
[Ref.- 406] "Guía CCN-STIC-453D - Seguridad de dispositivos móviles: Android 6.x". CCN-CERT. Mayo 2018.
URL: https://www.ccn-cert.cni.es/series-ccn-stic/guias-de-acceso-publico-ccn-stic/2901-ccn-stic-
453d-seguridad-de-dispositivos-moviles-android-6-x.html
[Ref.- 407] "Guía CCN-STIC-456 - Guía de cuenta de usuario, servicios y aplicaciones de Google para
dispositivos móviles Android". CCN-CERT. SEP 2018.
La siguiente tabla muestra las fuentes de información a las que se hace referencia a lo
largo de la presente guía relacionadas específicamente con la versión 5.x (Lollipop) de
Android:
Referencia Título, autor y ubicación
[Ref.- 500] "Android 5.0 Lollipop". Android.
URL: https://www.android.com/versions/lollipop-5-0/
[Ref.- 501] "Android Lollipop". Android Developers.
URL: https://developer.android.com/about/versions/lollipop.html
[Ref.- 502] "Android 5.0 APIs". Android Developers.
URL: https://developer.android.com/about/versions/android-5.0.html
[Ref.- 503] "Android 5.0 Behavior Changes". Android Developers.
URL: https://developer.android.com/about/versions/android-5.0-changes.html
[Ref.- 504] "Android 5.1 APIs". Android Developers.
URL: https://developer.android.com/about/versions/android-5.1.html
[Ref.- 505] "Android in the Workplace and in Education". Android 5.0 Developers.
URL: https://developer.android.com/about/versions/android-5.0.html#Enterprise
[Ref.- 506] "Android Platform Tools r20".
URL: http://dl-ssl.google.com/android/repository/platform-tools_r20-macosx.zip
URL: http://dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip
URL: http://dl-ssl.google.com/android/repository/platform-tools_r20-linux.zip
[Ref.- 507] "Notifications". Android Developers - Google.
URL: https://developer.android.com/guide/topics/ui/notifiers/notifications.html
La siguiente tabla muestra las fuentes de información a las que se hace referencia a lo
largo de la presente guía relacionadas específicamente con la versión 6.x
(Marshmallow) de Android:
Referencia Título, autor y ubicación
[Ref.- 600] "Android 6.0 Marshmallow". Android.
URL: https://www.android.com/versions/marshmallow-6-0/
[Ref.- 601] "Android 6.0 Marshmallow". Android Developers.
URL: https://developer.android.com/about/versions/marshmallow/index.html
[Ref.- 602] "Android 6.0 Changes". Android Developers.
URL: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
[Ref.- 603] "Android 6.0 APIs". Android Developers.
URL: https://developer.android.com/about/versions/marshmallow/android-6.0.html
[Ref.- 604] "Handling App Links". Android Developers.
URL: https://developer.android.com/training/app-links/index.html
La siguiente tabla muestra las fuentes de información a las que se hace referencia a lo
largo de la presente guía relacionadas específicamente con la versión 7.x (Nougat) de
Android:
Referencia Título, autor y ubicación
[Ref.- 700] "Android 7.0 Nougat". Android.
URL: https://www.android.com/versions/nougat-7-0/
[Ref.- 701] "Android 7.0 Nougat". Android Developers.
URL: https://developer.android.com/about/versions/nougat/index.html
[Ref.- 702] "Android 7.0 for Developers". Android Developers.
URL: https://developer.android.com/about/versions/nougat/android-7.0.html
[Ref.- 703] "Android 7.0 Behavior Changes". Android Developers.
URL: https://developer.android.com/about/versions/nougat/android-7.0-changes.html
[Ref.- 704] "Pixel y Pixel XL". Made by Google. October 2016.
URL: https://madeby.google.com/phone/
[Ref.- 705] "Six years of Nexus: A Google Phone History". Android Police. September 2016.
URL: https://www.youtube.com/watch?v=7_tAJIjm6xA
[Ref.- 706] "Keeping Android safe: Security enhancements in Nougat". Android Developers Blog. Sep
2016. URL: http://android-developers.blogspot.com.es/2016/09/security-enhancements-in-
nougat.html
[Ref.- 707] "Hardening the media stack". Android Developers Blog. May 2016.
URL: http://android-developers.blogspot.com/2016/05/hardening-media-stack.html
[Ref.- 708] Seccomp. WikiPedia.
URL: https://en.wikipedia.org/wiki/Seccomp
[Ref.- 709] "Security "Crypto" provider deprecated in Android N". Android Developers Blog. June 2016.
URL: https://android-developers.blogspot.com.es/2016/06/security-crypto-provider-
deprecated-in.html
[Ref.- 710] "Improving Stability with Private C/C++ Symbol Restrictions in Android N". Android
Developers Blog. June 2016. URL: https://android-
developers.blogspot.com.es/2016/06/improving-stability-with-private-cc.html
[Ref.- 711] "Changes to Trusted Certificate Authorities in Android Nougat". Android Developers Blog.
July 2016. URL: https://android-developers.blogspot.com.es/2016/07/changes-to-trusted-
certificate.html