AV
angelvelasquez.dev
MacMirror para Android • Código Abierto (MIT) • Política de Privacidad

Política de Privacidad

Fecha de entrada en vigor: 4 de marzo de 2026 • Versión 1.0.0

Esta política detalla con precisión técnica cómo MacMirror para Android gestiona los datos, utiliza los permisos del sistema operativo y asegura la ausencia total de recopilación remota. La aplicación implementa una arquitectura local protegida por cifrado de extremo a extremo, transmitiendo notificaciones exclusivamente sobre tu red Wi-Fi local sin servidores intermediarios en la nube.

01

Cero Servidores en la Nube

Opera estrictamente en tu red Wi-Fi local (LAN). Sin servidores externos, bases de datos remotas ni proxies intermedios.

02

Cifrado Extremo a Extremo

Intercambio efímero ECDH (Curva P-256) autenticado por PIN de 6 dígitos y cifrado de carga útil con AES-256-GCM.

03

Cero Telemetría y Anuncios

Sin SDKs de analítica, sin rastreadores de comportamiento, sin librerías de publicidad y sin reporte remoto de fallos.

04

Código 100% Auditable

Software libre bajo Licencia MIT. Puedes inspeccionar y verificar cada línea de código fuente en GitHub.

1. Identificación del Proyecto y Desarrollador

MacMirror para Android es una aplicación móvil de código abierto desarrollada y mantenida por Ángel Velásquez ("Desarrollador"). La aplicación compañera de escritorio es MacMirror para macOS.

2. Arquitectura Exclusivamente Local (Cero Servidores en la Nube)

MacMirror opera bajo un principio estricto de Cero Dependencia de la Nube. La aplicación no utiliza, no se conecta ni interactúa con ningún servidor remoto, base de datos en la nube, broker de mensajería externo o infraestructura alojada.

Toda la comunicación ocurre de punto a punto dentro de tu red de área local privada (LAN / Wi-Fi) entre tu teléfono Android y tu computadora Mac vinculada. Ningún contenido de tus notificaciones sale jamás de tu red local bajo ninguna circunstancia.

3. Permisos de Android y Tratamiento de Datos

Para cumplir su función principal de reflejar notificaciones en tiempo real, MacMirror solicita permisos específicos del sistema Android. A continuación se desglosa el propósito técnico de cada permiso y sus límites de tratamiento:

android.permission.BIND_NOTIFICATION_LISTENER_SERVICE Permiso Funcional Central

Finalidad: Capturar las alertas que llegan a la barra de estado de Android (título de la notificación, cuerpo de texto, paquete de la aplicación emisora e ícono visual).

Tratamiento de los datos: Las notificaciones se procesan de forma efímera en la memoria volátil (RAM) del dispositivo únicamente durante el tiempo necesario para cifrarlas. Se transmiten de inmediato vía WebSocket local a tu Mac vinculado. La app nunca almacena las notificaciones en disco permanente, nunca genera registros históricos de mensajes y nunca las sube a servidores externos.

FOREGROUND_SERVICE & FOREGROUND_SERVICE_CONNECTED_DEVICE Prioridad para Dispositivo Conectado (Android 14+)

Finalidad: A partir de Android 14 (API 34+), los servicios en primer plano requieren declarar un tipo funcional explícito. MacMirror declara el tipo connectedDevice porque mantiene una sesión de socket activa con un dispositivo compañero de escritorio (tu Mac). Esto otorga prioridad de ejecución al proceso y previene que los optimizadores de memoria agresivos de ciertos fabricantes (MIUI/HyperOS, One UI, ColorOS) corten la conexión.

Tratamiento de los datos: Gestiona exclusivamente la estabilidad del proceso y la conexión de red local. Cero recopilación de métricas personales, telemetría o registros de usuario.

android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Exención de Doze Mode (Transmisión Local 24/7)

Finalidad: Solicita al usuario desactivar la optimización de batería para MacMirror. Cuando un teléfono Android entra en reposo con la pantalla apagada (Doze Mode), el sistema operativo suspende los sockets de red Wi-Fi y congela tareas en segundo plano, lo que retrasaría o impediría el reflejo de notificaciones entrantes.

Tratamiento de los datos: Es un permiso a nivel de gestión de energía del sistema. No recopila, almacena ni transmite ningún dato del usuario. Solo garantiza que el socket Wi-Fi local no se interrumpa con la pantalla bloqueada.

android.permission.POST_NOTIFICATIONS Indicador Visual de Estado

Finalidad: Requerido en Android 13 en adelante para mostrar una notificación persistente y silenciosa (IMPORTANCE_LOW) que informa en todo momento el estado del servicio ("Conectado a Mac" / "En espera"). También se utiliza para emitir alertas de prueba solicitadas por el usuario dentro de la app.

Tratamiento de los datos: Genera únicamente indicadores informativos locales en tu dispositivo. Ningún historial de alertas se envía al exterior.

android.permission.QUERY_ALL_PACKAGES Filtro de Aplicaciones

Finalidad: Consultar la lista de aplicaciones instaladas en tu dispositivo con el único objetivo de mostrarlas en la pantalla de ajustes de "Filtro de Aplicaciones".

Tratamiento de los datos: Te permite elegir con total granularidad qué aplicaciones tienen permitido reflejar alertas y cuáles quedan bloqueadas. La lista de aplicaciones instaladas se procesa estrictamente en el dispositivo, jamás se envía por la red ni se comparte con terceros.

INTERNET, ACCESS_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE Red Local (LAN)

Finalidad: Descubrir el servicio del Mac en la red local mediante mDNS / Bonjour (servicio _macmirror._tcp) y establecer la conexión WebSocket en el puerto 50002.

Tratamiento de los datos: Aunque Android clasifica el socket de red bajo el permiso general INTERNET, MacMirror realiza cero conexiones hacia la Internet pública. Todo el tráfico circula exclusivamente en la subred local de tu Wi-Fi.

4. Seguridad Criptográfica y Cifrado Extremo a Extremo

Incluso dentro de la red local Wi-Fi, MacMirror implementa Cifrado Extremo a Extremo (E2EE) autenticado para prevenir inspecciones de paquetes o escuchas no autorizadas en tu red:

  • Vinculación y Acuerdo de Claves: Intercambio efímero mediante Diffie-Hellman en Curvas Elípticas (ECDH sobre Curva NIST P-256) combinado con un PIN criptográfico de 6 dígitos mostrado fuera de banda en la barra de menú de macOS durante el handshake (POST /pair/initiate y POST /pair/confirm).
  • Derivación de Claves: Las claves de sesión se derivan mediante HKDF-SHA256 (RFC 5869) garantizando secreto perfecto hacia adelante (forward secrecy).
  • Cifrado de Carga Útil: Todos los paquetes de notificación transmitidos vía WebSocket se cifran con AES-256-GCM con vectores de inicialización (IV) únicos y etiquetas de autenticación, asegurando confidencialidad e integridad contra manipulaciones.
  • Almacenamiento Seguro: La clave simétrica de sesión se almacena localmente en el dispositivo utilizando Android Keystore y Jetpack DataStore / EncryptedSharedPreferences, respaldada por módulos de seguridad en hardware (TEE/StrongBox) donde esté disponible.

5. Ausencia de Terceros, Analíticas y Publicidad

Categoría Estado Detalle
Recopilación de Datos Personales NINGUNA No se solicitan cuentas, correos, nombres, teléfonos ni identificadores únicos.
Analítica y Telemetría NINGUNA Sin Google Analytics, Firebase, Mixpanel ni herramientas de telemetría.
Librerías de Publicidad NINGUNA Totalmente libre de anuncios y sin cookies de seguimiento.
Registro Remoto de Errores NINGUNA Sin herramientas externas de diagnóstico de fallos (Sentry, Crashlytics).
Venta o Transferencia de Datos CERO Tus datos nunca se monetizan, venden, alquilan ni ceden a terceros.

6. Retención y Eliminación de Datos

Dado que MacMirror no recopila datos en servidores externos, no existe ningún registro ni perfil de usuario en la nube susceptible de eliminación.

Mantienes el control absoluto sobre los datos locales en tu dispositivo:

  • Desvinculación Bidireccional: Al desvincular el dispositivo desde Android o desde macOS, se revoca de inmediato el handshake criptográfico, se elimina la clave de sesión AES de EncryptedSharedPreferences y se desconecta el WebSocket.
  • Borrado de Datos de la App: Desde Ajustes de Android > Aplicaciones > MacMirror > Almacenamiento > Borrar datos, se purgan de forma irreversible todas las configuraciones locales y cachés.
  • Desinstalación: Al desinstalar la app, el sistema operativo borra automáticamente todos los archivos y claves criptográficas asociadas.

7. Privacidad de Menores y Auditoría de Código Abierto

MacMirror no solicita, procesa ni almacena deliberadamente información personal de ninguna persona, incluyendo menores de 13 años (o 16 según la jurisdicción aplicable).

Al ser un proyecto bajo la Licencia MIT, cada uno de nuestros compromisos de seguridad y privacidad es auditable de forma transparente. Cualquier usuario, desarrollador o investigador de seguridad puede examinar el código, comprobar las dependencias y compilar el archivo APK directamente desde el repositorio: