1. Responsable del tratamiento
El responsable del tratamiento de los datos personales es:
2. Introducción
Taski es una aplicación de mensajería instantánea disponible en iOS, Android, Apple Watch, Web (web.taski.chat) y Escritorio (macOS y Windows mediante Tauri). Sitúa la privacidad y la seguridad en el centro de su arquitectura.
Taski utiliza Cifrado de extremo a extremo (E2EE) para todas las conversaciones 1-1 y de grupo, para las llamadas de voz/vídeo y para los archivos multimedia. Solo el usuario y los destinatarios pueden leer los mensajes. Ni siquiera nosotros, como desarrolladores, tenemos acceso a su contenido.
3. Datos recopilados
3.1 Datos de registro
- Número de teléfono: identificador principal, verificado por SMS (servicio Twilio).
- Código de verificación: código temporal de 6 dígitos enviado por SMS, válido durante 10 minutos. Como alternativa al SMS, el usuario puede solicitar recibir el código mediante una llamada de voz automática (Twilio, con síntesis de voz Amazon Polly), con un máximo de 3 llamadas al día.
- PIN anti-SIM-swap (opcional): código de 6 dígitos elegido por el usuario para desbloquear el acceso desde un nuevo teléfono sin el dispositivo anterior. El servidor no conserva el PIN, sino solo un verificador derivado (PBKDF2 + HMAC con pepper); tras 5 intentos fallidos, el acceso se bloquea.
- Passkey (opcional): clave de acceso gestionada por el sistema operativo; el servidor conserva solo la clave pública de la passkey.
3.1 bis Nuevo dispositivo, transferencia de la cuenta y recuperación
Una cuenta de Taski tiene un único teléfono principal a la vez (iPhone o Android). Los dispositivos vinculados (Web, Escritorio, Apple Watch) dependen del teléfono principal.
- Aprobación desde el teléfono anterior: cuando el usuario activa Taski en un nuevo teléfono, el teléfono principal recibe la solicitud "Acceso desde un nuevo dispositivo" con el nombre y la plataforma del dispositivo solicitante, la fecha/hora y una ubicación aproximada obtenida a partir de la dirección IP. La aprobación requiere la autenticación biométrica (p. ej., Face ID) o el código del dispositivo. Una vez aprobada la transferencia, el teléfono anterior se desconecta.
- Transferencia de las claves: si el usuario aprueba desde el teléfono anterior, las claves privadas de cifrado (incluida la clave de identidad y las claves históricas necesarias para leer los mensajes ya recibidos) se transfieren al nuevo teléfono cifradas de extremo a extremo hacia una clave temporal generada por el nuevo dispositivo. El paquete transita por nuestros servidores, que no pueden descifrarlo, y se elimina en el momento de la entrega (normalmente en pocos minutos).
- Acceso sin el teléfono anterior: como alternativa, el usuario puede utilizar la passkey, el PIN anti-SIM-swap o la recuperación con asistencia. En estos casos las claves no se transfieren: la cuenta se reinicia con nuevas claves de cifrado (véase 7).
- Recuperación con asistencia: el usuario se hace un selfi sosteniendo en la mano un documento de identidad válido y una hoja con un código mostrado por la app. La foto se sube a nuestros servidores (Cloudflare R2), un operador la examina manualmente mediante un enlace temporal y se elimina al aprobarse o rechazarse la solicitud y, en todo caso, en un plazo de 24 horas. No se realiza ningún reconocimiento biométrico automático. El resultado se comunica por SMS. El registro de la solicitud (número de teléfono, código, resultado, fechas) se conserva hasta la eliminación de la cuenta.
- Registro de seguridad de las transferencias: para cada solicitud registramos la dirección IP, el nombre y la plataforma del dispositivo solicitante, la fecha/hora y el resultado. El registro sirve para prevenir el robo de cuentas y se conserva hasta la eliminación de la cuenta.
3.2 Datos del perfil
Son datos opcionales que el usuario puede elegir proporcionar:
- Nombre visible
- Estado/Bio (breve descripción)
- Foto de perfil (almacenada en nuestros servidores, accesible según los ajustes de privacidad del usuario)
3.3 Conversaciones 1-1 (E2EE)
- Cifradas de extremo a extremo con X25519 (intercambio de claves) + AES-256-GCM (cifrado).
- Los mensajes no se almacenan permanentemente en nuestros servidores. Permanecen en cola offline durante un máximo de 7 días para garantizar la entrega.
- Para la sincronización entre los dispositivos del usuario (iPhone, Android, Watch, Web, Escritorio), los mensajes pueden permanecer cifrados hasta 7 días después de la entrega.
- Una vez vencido el plazo, los mensajes se eliminan automáticamente.
3.4 Conversaciones de grupo (E2EE)
- Cifradas con clave simétrica AES-256 compartida entre los miembros, distribuida mediante ECDH (Curve25519).
- Los metadatos del grupo (nombre, participantes, administradores) se almacenan para la gestión.
- Las claves se regeneran al cambiar los miembros.
- Los mensajes cifrados permanecen en el servidor para la entrega y la sincronización durante un máximo de 7 días y, después, se eliminan automáticamente.
3.5 Llamadas de voz y vídeo (E2EE)
- Cada llamada deriva una clave única AES-256-GCM mediante HKDF (ECDH + salt aleatorio por llamada + ID de llamada).
- Ni siquiera el proveedor de transporte (Agora) puede acceder al contenido de audio/vídeo.
- Sin grabaciones: las llamadas nunca se almacenan.
- Metadatos conservados: quién ha llamado a quién, tipo (audio/vídeo), duración, fecha/hora — solo para el historial de llamadas en la app.
- Heartbeat: durante una llamada activa, los dispositivos envían una señal periódica de presencia. Si la señal falta durante 90 segundos, la llamada se considera finalizada. Una sola llamada dura como máximo 4 horas.
3.6 Historias
- El medio (foto o vídeo) está cifrado de extremo a extremo: el servidor no puede ver su contenido. Los metadatos de interacción (visualizaciones, "me gusta") sí son visibles para el servidor en claro, ya que son necesarios para mostrar los recuentos y la lista "quién la ha visto" al creador. Las respuestas a las historias viajan como mensajes normales en el chat 1 a 1, por lo que están cifradas de extremo a extremo.
- Se eliminan automáticamente después de 24 horas.
- El creador puede ver quién ha visualizado su historia.
- Se puede dar "me gusta" y responder a las historias.
3.7 Datos técnicos
- Tokens push APNs/FCM: para enviar notificaciones al usuario.
- Token VoIP: para recibir llamadas cuando la app está en segundo plano (PushKit).
- Claves públicas de cifrado: para el intercambio seguro de claves E2EE. Las claves privadas se generan y se conservan en los dispositivos del usuario (Keychain en iOS, almacenamiento protegido de la app en Android y en el navegador) y nunca son accesibles para nuestros servidores: solo salen del teléfono cifradas de extremo a extremo hacia el nuevo dispositivo durante una transferencia de la cuenta (véase 3.1 bis).
- Agenda de contactos: si el usuario concede el permiso, sincronizamos solo los hashes criptográficos (HMAC con pepper) de los números de teléfono y de las direcciones de correo electrónico presentes en la agenda. Los números y las direcciones en claro nunca se envían a nuestros servidores. Cuando un contacto de la agenda resulta estar registrado en Taski, el servidor almacena el vínculo entre la cuenta del usuario y la del contacto. La sincronización es necesaria para iniciar nuevos chats 1-1: para prevenir el spam y la extracción de números de teléfono, solo se puede abrir un nuevo chat con personas presentes en la agenda sincronizada o con las que ya se comparte un grupo (el usuario siempre puede responder a quien ya le haya contactado).
- Marcas de tiempo de acceso: para "última conexión" y entrega de mensajes (respetando los ajustes de privacidad).
- Metadatos de conversaciones: ID de conversación, marca de tiempo, estado de lectura/entrega.
- Dispositivos vinculados: plataforma, tipo de cliente (navegador o app de escritorio), nombre del dispositivo, user-agent, ID de sesión, última conexión y apertura del cliente Web/Escritorio (utilizada para avisar al usuario en el teléfono, como máximo una vez cada 24 horas, de que hay una sesión vinculada en uso).
- Dirección IP: utilizada para la seguridad del servicio (limitación de tasa, prevención de abusos, registro de las transferencias de cuenta) y registrada en los logs técnicos de la plataforma Cloudflare, recogidos por muestreo y con conservación limitada. De los logs se eliminan los parámetros de las URL.
- Token Location Push (iOS): si el usuario concede a la ubicación el permiso "Siempre", el teléfono principal registra un token de Apple dedicado a las funciones de ubicación en tiempo real y Contacto de confianza (véanse 3.11 y 3.11 bis). Se elimina al cerrar sesión, al eliminar la cuenta o cuando Apple lo señala como no válido.
3.8 Multimedia
- Imágenes, vídeos, mensajes de voz, documentos: todo cifrado de extremo a extremo (AES-256-GCM) antes de la subida, almacenado temporalmente en Cloudflare R2.
- Ubicación estática: se envía como mensaje cifrado de extremo a extremo (coordenadas y dirección). Para la ubicación en tiempo real, véase 3.11; para la ubicación bajo petición del Contacto de confianza, véase 3.11 bis.
- GIF: la búsqueda se realiza a través de nuestro proxy (la consulta no se asocia a la cuenta del usuario). A continuación, los dispositivos del remitente y del destinatario descargan el GIF elegido, también para la vista previa en las notificaciones, directamente de la red de distribución de Giphy, que por tanto recibe la dirección IP del dispositivo.
- Reacciones emoji: almacenadas como metadatos.
- Stickers generados por IA: generados bajo demanda mediante OpenAI (gpt-image-2.5-flare o gpt-image-1 según el estilo). Solo para los stickers creados a partir de un texto, si OpenAI no está disponible, se utiliza un respaldo (Anthropic Claude Haiku 4.5 + Flux Schnell en Cloudflare Workers AI); las fotos nunca se envían a estos proveedores de respaldo. En el modo "foto → sticker", la imagen de origen se envía en claro al worker de Taski y desde allí se reenvía a OpenAI: NO está cifrada de extremo a extremo en esta fase (solo protegida por TLS en tránsito; el worker no la almacena). El sticker resultante se cifra de extremo a extremo como el resto del contenido multimedia antes de enviarlo al chat.
3.9 Escucha musical (opcional)
- Taski puede compartir el estado de escucha musical con los contactos del usuario (Apple Music o Spotify).
- Datos compartidos: título de la canción y nombre del artista en reproducción.
- Desactivable en los ajustes de privacidad. No se guarda en los servidores.
3.10 Copia de seguridad
- Copia en iCloud: en el espacio iCloud personal del usuario.
- Cifrado AES-256 con contraseña elegida por el usuario.
- Incluye mensajes, contactos, claves E2EE y opcionalmente multimedia.
- No tenemos acceso a las copias de seguridad del usuario. Si se pierde la contraseña, los datos son irrecuperables.
3.11 Ubicación en tiempo real (opcional)
En los chats 1-1, el usuario puede compartir su ubicación en tiempo real durante 15 minutos, 1 hora u 8 horas. La función está disponible en iPhone y Android; en la Web y en Escritorio el destinatario solo ve el punto de partida. No está disponible en los grupos.
- Qué se envía, cifrado de extremo a extremo: coordenadas, instante de la medición, precisión, velocidad, dirección, modo de desplazamiento estimado por el teléfono (a pie, corriendo, en bicicleta, en coche, parado), paradas, inicio y fin de la compartición y, en iPhone, el nivel de batería. Estos datos se cifran en el dispositivo con el mismo cifrado que los mensajes 1-1 (X25519 + AES-256-GCM): el servidor no puede leerlos.
- Mensaje de inicio: al iniciarse, se envía al chat un mensaje cifrado de extremo a extremo con el punto de partida y la duración de la compartición.
- Qué ve el servidor: los metadatos necesarios para la entrega, es decir, quién comparte con quién, identificador de la compartición, inicio, vencimiento y fin, identificador del dispositivo de origen, número secuencial, hora de llegada y tamaño de cada actualización. Dado que las actualizaciones son más frecuentes cuando el usuario se desplaza, a partir de su cadencia es posible deducir de forma aproximada si el usuario está en movimiento o parado.
- Conservación en el servidor: las actualizaciones cifradas se conservan durante la compartición y hasta 36 horas después de su fin, para permitir que el destinatario recupere el recorrido completo aunque no haya abierto la app. Después se eliminan automáticamente. Se eliminan de inmediato si se elimina el chat o la cuenta.
- Conservación en el dispositivo: en iPhone, el recorrido (trazado, trayectos y paradas) se guarda en la sección "Recorridos" del perfil del chat tanto de quien comparte como de quien recibe, y permanece en el dispositivo hasta que el usuario lo elimina. Quien ha compartido no puede eliminar la copia guardada en el dispositivo de quien la ha recibido. Si está activa la "Protección de datos" (véase 7), el trazado, los trayectos y las paradas se cifran también en reposo en el dispositivo.
- Permisos y funcionamiento en segundo plano: en iPhone, la compartición requiere el permiso de ubicación "Siempre" y, opcionalmente, el permiso Movimiento y forma física (para estimar el modo de desplazamiento). Para seguir actualizando la ubicación con la app cerrada se utilizan los servicios en segundo plano de iOS y el servicio Location Push de Apple: si el destinatario abre el chat y la última actualización es antigua, o si la compartición permanece en silencio demasiado tiempo, el servidor puede solicitar al teléfono de quien comparte una nueva ubicación (con límites de frecuencia). En Android, la compartición utiliza un servicio en primer plano con una notificación fija y el botón "Detener".
- Mapas y direcciones: para mostrar direcciones y el tiempo de llegada, la app de iOS envía a Apple (MapKit) las coordenadas correspondientes, sin identificadores de la cuenta. En Android, los mapas se descargan de OpenStreetMap (véase 5).
- Interrupción: solo quien la ha iniciado puede interrumpir la compartición en cualquier momento. Finaliza automáticamente al vencer, al cerrar sesión y al eliminar la cuenta. Una nueva compartición en el mismo chat sustituye a la anterior.
- Notificaciones: el inicio genera una notificación con un texto genérico ("Ubicación en tiempo real"), sin coordenadas. Las actualizaciones posteriores no generan notificaciones.
3.11 bis Contacto de confianza: ubicación bajo petición (opcional)
Desde el perfil de un contacto con el que tiene un chat 1-1, el usuario puede convertirlo en contacto de confianza. A partir de ese momento, esa persona puede preguntar dónde se encuentra el usuario aunque no haya ninguna compartición en tiempo real activa, y el teléfono del usuario responde por sí solo con un único punto, la ubicación de ese instante: no es una compartición continua. La confianza funciona en un solo sentido, se concede a un máximo de 5 contactos y la persona que la recibe es informada con un mensaje en el chat, sin tener que aceptarla (si usa Android, solo ve un mensaje genérico "Ubicación bajo petición"). Por ahora, conceder la confianza, pedir la ubicación y ser localizado solo es posible con la app de iPhone (en el Apple Watch las solicitudes se ven en el chat); la función no está disponible en los grupos ni en Android, la Web y Escritorio.
- Quién decide: solo el usuario que concede la confianza, con un gesto en su propio teléfono. El teléfono responde únicamente a las personas confirmadas en ese teléfono: una lista recibida del servidor no basta. Tras cerrar sesión o reinstalar la app, los contactos de confianza quedan "por confirmar" y el teléfono no responde hasta que el usuario los confirma de nuevo.
- Respuesta automática: la solicitud llega al teléfono a través del servicio Location Push de Apple y el teléfono responde aunque esté bloqueado o la app esté cerrada, sin que el usuario tenga que hacer nada. Se necesita el permiso de ubicación "Siempre". Si falta el permiso, si el teléfono está apagado o sin red, o si no consigue responder en aproximadamente un minuto, no se envía ningún punto y quien ha preguntado ve "No disponible".
- Qué se envía, cifrado de extremo a extremo: coordenadas, precisión, hora de la medición y, si está disponible, el nivel de batería. El punto se cifra en el teléfono de la persona localizada solo para quien lo ha solicitado (X25519 + AES-256-GCM), con su clave pública verificada (véase 7): el servidor no puede leerlo.
- Qué conserva el servidor: la lista de contactos de confianza (quién ha concedido la confianza a quién y desde cuándo) y, para cada solicitud, quién la ha hecho, a quién, en qué chat 1-1, las horas de la solicitud, del vencimiento y de la respuesta, el resultado (ubicación enviada, no enviada, en espera) y el punto cifrado. El motivo de una falta de respuesta no se conserva. A partir del resultado, el servidor puede deducir si el teléfono estaba disponible, no las coordenadas; como en cualquier llamada al servidor, la respuesta del teléfono llega con su dirección IP (véase 3.7).
- Conservación en el servidor: el punto cifrado permanece a disposición de quien lo ha solicitado durante 24 horas; después deja de entregarse y se elimina con la siguiente limpieza automática diaria (a más tardar en 48 horas); los datos de las solicitudes se eliminan con la limpieza automática diaria a los 30 días (a más tardar en 31 días); la lista de contactos de confianza se mantiene hasta que se retira la confianza. La confianza y las solicitudes se eliminan de inmediato, en ambos sentidos, al eliminar la cuenta.
- Conservación en el dispositivo: las solicitudes aparecen en el chat 1-1 de ambas personas (y en el Apple Watch vinculado) como mensajes creados por la app, que no pasan por el servidor como mensajes de chat: quien ha preguntado ve el punto en un mapa; la persona localizada ve que su ubicación se ha enviado (con el mapa) o que no se ha enviado. En el teléfono de la persona localizada, las solicitudes aparecen cuando la app se sincroniza con el servidor, a más tardar la próxima vez que se abre, pero solo si están entre las últimas 50 solicitudes de los últimos 7 días y el chat sigue en el teléfono. Estos mensajes no se pueden reenviar y permanecen en el dispositivo hasta que el usuario elimina el chat; como los demás mensajes, coordenadas incluidas, forman parte de la copia de seguridad cifrada, si está activada (véase 3.10), hasta que la copia se sustituye o se elimina. La persona localizada no puede eliminar la copia que está en el dispositivo de quien ha preguntado. El teléfono de la persona localizada conserva además una copia técnica de los últimos puntos enviados (como máximo 50, con destinatario y hora), que sirve para mostrar el mapa en el chat: los puntos con más de 7 días se eliminan solo cuando se envía uno nuevo, por lo que la copia permanece en el teléfono, incluso tras cerrar sesión, hasta que la sustituyen puntos nuevos o se desinstala la app.
- Mapas y direcciones: para mostrar el mapa y la dirección, la app (también en el Apple Watch) envía a Apple (MapKit) las coordenadas correspondientes, sin identificadores de la cuenta.
- TaskiAI: si en el chat una de las dos personas invoca
@TaskiAIo usa las acciones "Explicar" o "Sugerir", las solicitudes y los puntos que figuran entre los últimos 20 mensajes, descifrados en el dispositivo y con sus coordenadas, se incluyen en el contexto enviado a Anthropic (véanse 5.6 y la Política de TaskiAI). - Notificaciones: cada vez que el teléfono envía la ubicación, Taski envía una notificación a la persona localizada aunque el chat esté silenciado, siempre que las notificaciones de Taski estén permitidas en los ajustes del teléfono; la notificación no se vuelve a poner en cola para nuevos intentos, por lo que, si el servicio de notificaciones no la entrega, no llega. En cualquier caso, la solicitud aparece en el chat y entre las últimas solicitudes en Ajustes → Privacidad → Quién puede ver dónde estás, con los límites indicados arriba. Quien ha preguntado recibe un aviso cuando llega el punto, según los ajustes de notificación habituales del chat (por ejemplo, ningún aviso si el chat está silenciado o abierto en ese momento). Las notificaciones no contienen coordenadas.
- Límites: cada contacto de confianza puede pedir la ubicación como máximo una vez cada 5 minutos y 20 veces en 24 horas; para el servidor también cuentan las solicitudes que se han quedado sin respuesta. El teléfono de la persona localizada, por su cuenta, no envía a la misma persona más de un punto cada 5 minutos aproximadamente ni más de 20 puntos en 24 horas, aunque el servidor no respetara los límites.
- Recordatorio: mientras haya al menos un contacto de confianza confirmado en el teléfono, aproximadamente cada 30 días una notificación recuerda quién puede seguir pidiendo la ubicación (nombra hasta tres contactos). La app programa el siguiente recordatorio mientras está en uso (al iniciarse o cuando cambia la lista): si la app no se usa durante mucho tiempo, solo llega uno, y ninguno si las notificaciones de Taski están desactivadas.
- Retirada: en cualquier momento, desde el perfil del contacto (interruptor "Contacto de confianza") o desde Ajustes → Privacidad → Quién puede ver dónde estás, donde también figuran los contactos de confianza y las últimas solicitudes. Bloquear a un contacto retira la confianza en ambos sentidos. Tras la retirada, el teléfono deja de responder y el servidor ya no acepta nuevas solicitudes ni respuestas a las solicitudes en curso. Si se quita el permiso de ubicación "Siempre" en los ajustes del sistema, el teléfono deja de enviar puntos.
3.12 Mensajes urgentes y silenciosos
- El usuario puede enviar un mensaje como silencioso (llega sin sonido ni vibración) o como urgente (en iPhone utiliza las notificaciones "urgentes" de iOS y puede superar los modos de concentración y el Resumen programado, según los ajustes del destinatario; en Android utiliza un canal de notificación dedicado).
- La indicación urgente/silencioso viaja dentro del mensaje cifrado de extremo a extremo: el servidor no la ve.
- La app permite como máximo 1 mensaje urgente cada 60 minutos por destinatario.
3.13 Taski Plus y compras dentro de la app
- La suscripción Taski Plus se compra en la app de iPhone a través de la App Store de Apple, que gestiona el pago. No recibimos ni conservamos los datos de la tarjeta o del método de pago.
- Para asociar la compra a la cuenta, la app comunica a Apple un identificador seudónimo de la cuenta. De Apple recibimos los datos de la transacción: producto comprado, identificadores de la transacción, fechas de compra, renovación y vencimiento, estado de la suscripción (prueba, activa, renovación, reembolso, vencimiento) y país de la tienda.
- Conservamos el estado de la suscripción y el historial de transacciones durante toda la vigencia de la cuenta. Tras la eliminación de la cuenta, los registros de las transacciones se disocian de la cuenta y se conservan únicamente para prevenir fraudes (por ejemplo, la reutilización de la misma compra en otra cuenta), gestionar reembolsos y reclamaciones y cumplir las obligaciones legales.
4. Cómo se utilizan los datos del usuario
Utilizamos los datos recopilados exclusivamente para:
- Prestar el servicio de mensajería (entrega, sincronización, notificaciones, llamadas).
- Gestionar la cuenta del usuario (autenticación, verificación, perfil).
- Garantizar la seguridad (prevenir abusos, spam, ataques automatizados).
- Mejorar la app (análisis anónimos para identificar errores y optimizar el rendimiento).
- Cumplir obligaciones legales si lo requieren las autoridades competentes.
NO utilizamos los datos del usuario para:
- Publicidad dirigida o elaboración de perfiles
- Venta o cesión a terceros con fines comerciales
- Análisis del contenido de los mensajes E2EE del usuario (no podemos: están cifrados)
- Seguimiento del comportamiento con fines de marketing
4.1 Base jurídica del tratamiento
Conforme al artículo 6 del Reglamento (UE) 2016/679 (RGPD), cada tratamiento se basa en una base jurídica específica:
| Finalidad | Base jurídica |
|---|---|
| Prestación del servicio de mensajería: registro, autenticación, entrega y sincronización de mensajes, notificaciones, llamadas, gestión de la cuenta | Ejecución del contrato — art. 6(1)(b) |
| Seguridad del servicio: prevención de abusos, spam y ataques automatizados, protección anti-bot (Turnstile), limitación de velocidad, Key Transparency, moderación previa denuncia | Interés legítimo — art. 6(1)(f) (interés perseguido: integridad y seguridad del servicio y de los usuarios) |
| Mejora de la aplicación mediante análisis anónimos y agregados | Interés legítimo — art. 6(1)(f) |
| Sincronización de la agenda para encontrar los contactos registrados e iniciar nuevos chats | Ejecución del contrato — art. 6(1)(b) para los datos del usuario; interés legítimo — art. 6(1)(f) para los números y las direcciones de terceros presentes en la agenda, tratados solo en forma de hash |
| Nuevo dispositivo, transferencia de la cuenta, recuperación con asistencia (incluida la foto de verificación), PIN anti-SIM-swap, registro de las transferencias | Ejecución del contrato — art. 6(1)(b) e interés legítimo — art. 6(1)(f) (prevenir el robo de cuentas) |
| Suscripción Taski Plus y gestión de las compras | Ejecución del contrato — art. 6(1)(b); obligación legal — art. 6(1)(c) para la conservación de los datos fiscales y contables |
| Funciones opcionales activadas por el usuario: TaskiAI, ubicación en tiempo real, compartición de la escucha musical, copia de seguridad en iCloud | Consentimiento — art. 6(1)(a), revocable en cualquier momento |
| Contacto de confianza (ubicación bajo petición): lista de contactos de confianza, solicitudes y envío del punto | Consentimiento — art. 6(1)(a) de quien concede la confianza, revocable en cualquier momento; ejecución del contrato — art. 6(1)(b) para los datos de la persona que recibe la confianza y de quien envía las solicitudes |
| Cumplimiento de obligaciones legales y respuesta a solicitudes de las autoridades competentes | Obligación legal — art. 6(1)(c) |
Cuando la base jurídica es el interés legítimo, el usuario tiene derecho a oponerse al tratamiento (art. 21 RGPD). Cuando la base jurídica es el consentimiento, este puede revocarse en cualquier momento desde los ajustes de la aplicación, sin que ello afecte a la licitud del tratamiento realizado con anterioridad a la revocación.
5. Compartición de datos con terceros
5.1 Cloudflare
- Servicio: hosting backend (Workers), base de datos D1, almacenamiento R2, caché KV, WebSocket y conservación temporal de la ubicación en tiempo real cifrada mediante Durable Objects, logs técnicos (Workers Logs), métricas técnicas agregadas sin identificadores de usuarios ni de conversaciones (Workers Analytics Engine), modelos de IA de moderación y de respaldo para los stickers (Workers AI), hosting del cliente Web (Pages), protección anti-bot (Turnstile).
- Datos compartidos: todos los datos almacenados en nuestros servidores. Para la protección anti-bot, Turnstile recopila dirección IP, TLS fingerprint y User-Agent; estas señales se clasifican como estrictamente necesarias y no se utilizan para identificar, perfilar ni rastrear a los usuarios.
- Política de Privacidad: cloudflare.com/privacypolicy
- Privacidad de Turnstile: cloudflare.com/turnstile-privacy-policy
5.2 Apple (APNs, PushKit, Location Push, MapKit, App Store)
- Servicio: notificaciones push y VoIP; Location Push para la ubicación en tiempo real y para el Contacto de confianza; mapas, direcciones y tiempos de recorrido (MapKit); App Store para las compras dentro de la app.
- Datos compartidos: token APNs/VoIP/Location Push. El contenido de las notificaciones suele ser un placeholder; el descifrado se realiza localmente en las extensiones de la app con la clave privada del usuario, que no sale del dispositivo. Las solicitudes Location Push contienen solo identificadores técnicos (conversación, compartición, destinatario, vencimiento), nunca coordenadas. Lo mismo vale para las solicitudes del Contacto de confianza (solicitud, solicitante, conversación, vencimiento); las notificaciones correspondientes contienen el nombre visible y el número de teléfono de la otra persona, para mostrarla con el nombre de la agenda, nunca coordenadas. Para mapas, direcciones y tiempos de llegada, la app envía a MapKit las coordenadas correspondientes. Para las compras: los datos de la transacción descritos en 3.13.
- Política de Privacidad: apple.com/legal/privacy
5.3 Google — Firebase Cloud Messaging (FCM)
- Servicio: notificaciones push para dispositivos Android.
- Datos compartidos: token push FCM y los metadatos necesarios para componer la notificación (ID de conversación y del remitente, nombre mostrado y número del remitente, URL firmada del avatar). El contenido del mensaje está cifrado de extremo a extremo y Google no posee las claves para descifrarlo. Solo para los mensajes de servicio no cifrados (p. ej. respuestas de soporte) el título y el cuerpo de la notificación son visibles.
- Política de Privacidad: firebase.google.com/support/privacy
5.4 Twilio
- Servicio: envío de SMS y llamadas de voz automáticas para la verificación del número y para las comunicaciones sobre la recuperación de la cuenta. En las llamadas de voz, el código lo lee una voz sintética de Amazon Polly a través de Twilio.
- Datos compartidos: número de teléfono, código de verificación, texto del mensaje.
- Política de Privacidad: twilio.com/legal/privacy
5.5 Agora
- Servicio: infraestructura para llamadas de voz/vídeo.
- Datos compartidos: stream de audio/vídeo cifrado E2EE (no accesible a Agora), ID de canal, ID de usuario anonimizado.
- Política de Privacidad: agora.io/en/privacy-policy
5.6 Anthropic (TaskiAI)
- Servicio: asistente de IA para la modalidad inline
@TaskiAIen los chats con otras personas, para las acciones rápidas sobre los mensajes, para la reescritura de borradores (AI Rewrite) y para el chat dedicado "Taski AI" (Claude Sonnet 5, Claude Opus 4.7, Claude Haiku 4.5). - Datos compartidos (modalidad inline): SOLO en el momento de la invocación explícita de
@TaskiAI— los últimos 20 mensajes de contexto (incluidas las posibles ubicaciones, con sus coordenadas: las compartidas en el chat y, en el caso de la función "Contacto de confianza", las solicitudes de ubicación y el punto enviado como respuesta por el teléfono de quien las recibió), máx. 3 fotos recientes (descritas por Haiku como pie de imagen), nombre del invocador, pregunta. - Datos compartidos (chat dedicado): en cada mensaje enviado en el chat dedicado — texto del mensaje, historial reciente del chat dedicado, fotos y PDF adjuntos (enviados como archivos), memoria persistente del chatbot como parte del prompt.
- Datos compartidos (AI Rewrite y acciones rápidas): solo el texto del borrador o del mensaje seleccionado; las acciones "Explicar" y "Sugerir" reciben además, como contexto, los últimos 20 mensajes del chat (ubicaciones incluidas, como arriba).
- Garantía contractual: Anthropic no usa los datos para entrenar modelos.
- Véase también: Política de TaskiAI
- Política de Privacidad: anthropic.com/legal/privacy
5.7 OpenAI
- Servicios: generación de stickers IA bajo demanda (gpt-image-2.5-flare, gpt-image-1), generación y retoque de imágenes TaskiAI (inline y chat dedicado) a petición explícita del usuario (gpt-image-2.5-flare, con respaldo en gpt-image-2), llamada de voz full-duplex con el chatbot Taski AI (gpt-realtime-2.1 + gpt-4o-mini-transcribe).
- Datos compartidos: prompt textual; la foto de origen en el modo "foto → sticker" y en el retoque de fotos (que en la modalidad inline puede ser una foto enviada por el otro participante del chat); audio del micrófono en streaming y las fotos enviadas durante la llamada de voz; system prompt inicial con el nombre del usuario y la memoria del chatbot. Detalles en la Política de TaskiAI.
- Política de Privacidad: openai.com/policies/privacy-policy
5.8 Giphy
- Servicio: librería de GIF: búsqueda mediante nuestro proxy, descarga de los GIF desde la red de distribución de Giphy.
- Datos compartidos: consulta de búsqueda (no asociada a la cuenta del usuario); dirección IP del dispositivo que descarga el GIF.
- Política de Privacidad: giphy.com/privacy
5.9 Amazon Web Services — Witness de Key Transparency
Taski publica un registro público, append-only y verificable (árbol de Merkle, estándar RFC-6962) de las claves públicas de cifrado de los usuarios (Key Transparency), para que los clientes puedan detectar cualquier sustitución encubierta de claves. Para hacer detectable también una equivocation del servidor (mostrar registros divergentes a usuarios distintos), las huellas del registro (Signed Tree Head) son co-firmadas por un witness independiente alojado en Amazon Web Services (AWS Lambda, región Tokio, Japón).
- Datos transmitidos: exclusivamente hashes criptográficos agregados (hash raíz de Merkle), firmas digitales y pruebas de consistencia. Ningún dato personal, contenido de mensajes, clave privada, número de teléfono o identificador de usuario.
- Finalidad: garantizar la integridad y la no-equivocation del registro de claves públicas.
- Cómo: la co-firma ocurre del lado del servidor (los clientes nunca contactan AWS) y solo al sellado periódico del registro (pocas llamadas al día).
- Política de Privacidad: aws.amazon.com/privacy
5.10 Tavily
- Servicio: búsqueda web durante la llamada de voz con el chatbot Taski AI (como máximo 3 búsquedas por llamada).
- Datos compartidos: la consulta de búsqueda formulada por la IA (máx. 400 caracteres) y el país deducido del idioma. Ningún identificador del usuario.
- Política de Privacidad: tavily.com/privacy
5.11 OpenStreetMap
- Servicio: mapas (teselas) mostrados por la app de Android para la ubicación en tiempo real.
- Datos compartidos: dirección IP del dispositivo y zona del mapa visualizada. Ningún identificador de la cuenta.
- Política de Privacidad: osmfoundation.org/wiki/Privacy_Policy
6. Conservación de los datos
| Tipo de dato | Periodo de conservación |
|---|---|
| Mensajes 1-1 (cola offline) | Máx. 7 días (eliminados tras la entrega) |
| Mensajes 1-1 (sincronización multi-dispositivo) | Máx. 7 días tras la entrega, siempre cifrados E2EE |
| Mensajes de grupo | Máx. 7 días, siempre cifrados E2EE |
| Imágenes, vídeos, documentos, mensajes de voz (cifrados E2EE) | 20 días tras el envío |
| Ubicación en tiempo real (actualizaciones cifradas E2EE) | Duración de la compartición (máx. 8 horas) + 36 horas |
| Recorridos de la ubicación en tiempo real (en el dispositivo iPhone) | Hasta que el usuario los elimine |
| Lista de contactos de confianza | Hasta la retirada de la confianza, el bloqueo del contacto o la eliminación de la cuenta |
| Solicitudes del Contacto de confianza (solicitante, destinatario, chat, horas, resultado) | 30 días; después se eliminan con la limpieza automática diaria (a más tardar en 31 días) |
| Punto enviado en respuesta a una solicitud del Contacto de confianza (cifrado E2EE) | Disponible durante 24 horas; después se elimina con la siguiente limpieza automática diaria (a más tardar en 48 horas) |
| Solicitudes y ubicaciones del Contacto de confianza en el chat (en el dispositivo) | Hasta que el usuario elimine el chat; en la copia de seguridad cifrada, si está activada, hasta que la copia se sustituya o se elimine |
| Copia técnica de los puntos enviados (en el teléfono de la persona localizada) | Como máximo 50 puntos: cada nuevo envío elimina los que tienen más de 7 días; sin nuevos envíos permanecen, incluso tras cerrar sesión, hasta que se desinstala la app |
| Token Location Push | Hasta el cierre de sesión, la eliminación de la cuenta o la invalidación por parte de Apple |
| Historias | 24 horas (eliminación automática) |
| Foto de perfil (avatar) | Hasta la eliminación de la cuenta |
| Historial de llamadas | Hasta la eliminación de la cuenta |
| Notificaciones push fallidas | 7 días (con reintento automático) |
| Códigos de verificación SMS | 10 minutos |
| Paquete cifrado de transferencia de las claves | Hasta la entrega al nuevo dispositivo (pocos minutos; máx. 24 horas si lo autoriza el servicio de asistencia) |
| Foto de verificación para la recuperación con asistencia | Hasta la aprobación o el rechazo, en todo caso máx. 24 horas |
| Registro de las solicitudes de recuperación y de las transferencias (IP, dispositivo, resultado) | Hasta la eliminación de la cuenta |
| Historial del chat dedicado Taski AI (no E2EE) | 7 días en el servidor; en el dispositivo hasta su eliminación |
| Imágenes generadas o retocadas por TaskiAI en chats con otras personas | 7 días |
| Imágenes generadas en el chat dedicado Taski AI | 24 horas |
| Memoria TaskiAI sincronizada (cifrada E2EE) | 90 días desde la última actualización |
| Pies de foto TaskiAI (caché) | 14 días por conversación |
| Mensaje denunciado y mensajes de contexto | Hasta la revisión y, después, 30 días |
| Estado de la suscripción y transacciones de Taski Plus | Vigencia de la cuenta; después, disociados de la cuenta para la prevención del fraude y el cumplimiento de obligaciones legales |
| Hashes de la agenda de contactos | Hasta la eliminación de la cuenta o desactivación del permiso |
Nota: los mensajes mantenidos para la sincronización permanecen cifrados de extremo a extremo durante todo el periodo. Ni nosotros ni terceros podemos acceder a ellos. Se exceptúan el chat dedicado Taski AI y los contenidos generados por la IA, que no están cifrados de extremo a extremo (véase la Política de TaskiAI).
7. Seguridad técnica
- E2EE: X25519 + AES-256-GCM para chats 1-1 y grupos.
- Llamadas E2EE: HKDF (ECDH + salt aleatorio) + AES-256-GCM.
- AKD (Auditable Key Directory): hash chain en key_events para detectar manipulaciones de las claves públicas (MITM).
- Key Transparency: un registro público, append-only y verificable (árbol de Merkle, RFC-6962) de todos los cambios de clave pública, cuyas huellas firmadas (Signed Tree Head) son co-firmadas por un witness independiente y verificadas de forma cruzada entre los dispositivos: un servidor malicioso no puede sustituir de forma encubierta la clave de un contacto sin ser detectado (véase 5.9).
- Identity Key pinning: los cambios de clave de cada usuario se firman con una clave de identidad personal que nunca es accesible para el servidor (solo sale del teléfono cifrada de extremo a extremo durante la transferencia a un nuevo dispositivo). Cada clave de identidad puede pertenecer a una sola cuenta. Si la clave de un contacto parece sustituida de forma no verificable, el envío se bloquea con un aviso hasta que se resuelva (la lectura nunca se bloquea) — protección activa contra los downgrades.
- Restablecimiento de las claves: si el usuario accede desde un nuevo teléfono sin transferir las claves (PIN, passkey o recuperación con asistencia), la cuenta se reinicia con nuevas claves de cifrado. En este caso, se avisa a los contactos de que el código de seguridad ha cambiado, se desconectan las sesiones vinculadas y los mensajes aún no entregados al dispositivo anterior ya no pueden descifrarse y se pierden.
- Rotación de claves: regeneración automática de las claves E2EE cada 10 días (con un mínimo de 7 días entre rotaciones consecutivas). Las claves privadas anteriores permanecen disponibles localmente en un período de gracia para descifrar mensajes históricos ya recibidos.
- Cifrado en tránsito: TLS 1.3 + WebSocket seguros.
- Cifrado en reposo (del lado del servidor): base de datos y almacenamiento protegidos con AES-256.
- Protección de datos (en reposo en el dispositivo): capa opcional (iOS y Android) que cifra también los mensajes, el contenido multimedia y los recorridos de la ubicación en tiempo real almacenados en el dispositivo, manteniéndolos ilegibles mientras el teléfono está bloqueado (refuerzo frente a la extracción forense). Se puede activar en los Ajustes.
- Contacto de confianza: el punto se cifra de extremo a extremo para quien lo ha solicitado solo con una clave pública verificada (pinning de la clave de identidad y control AKD) y contiene el identificador de la solicitud, de modo que no puede atribuirse a otra solicitud; quien lo recibe verifica la clave del remitente antes de mostrarlo. El teléfono responde solo a las personas confirmadas en ese dispositivo y aplica por su cuenta los límites de frecuencia: un servidor comprometido no puede añadir contactos de confianza ni hacer que se envíen puntos más allá de los límites, y en ningún caso puede leer los puntos.
- Sin fallback en claro: en caso de error de cifrado, el mensaje no se envía.
- Autenticación: código por SMS o llamada de voz + Passkey (post-onboarding) + PIN anti-SIM-swap opcional + Face ID/Touch ID para el bloqueo de la app.
- Anti-SIM-swap: un nuevo teléfono solo puede activar la cuenta con la aprobación del teléfono principal (con autenticación biométrica) o bien con passkey, PIN o recuperación con asistencia; el código SMS por sí solo no basta. Bloqueo de la verificación SMS en web si el usuario tiene un dispositivo iOS activo en los últimos 30 días.
- Acciones destructivas solo desde el teléfono principal: la eliminación de la cuenta y la eliminación de las conversaciones en el servidor solo pueden solicitarse desde el teléfono principal, no desde la Web o Escritorio.
- Nuevos dispositivos vinculados: en iPhone, la vinculación de un nuevo dispositivo Web/Escritorio requiere Face ID/Touch ID; en las llamadas desde la Web es visible el código de seguridad del cifrado de extremo a extremo.
- App Attest (iOS): atestación criptográfica de la integridad de la app mediante Apple App Attest, para impedir el acceso a las API desde clientes manipulados o falsificados.
- Limitación de tasa en todos los endpoints sensibles.
- Gestión de dispositivos: el usuario puede visualizar y revocar las sesiones desde los ajustes.
8. Plataformas y clientes
- iOS (iPhone): app nativa con todas las funcionalidades, requiere iOS 17.6 o posterior.
- Android: app nativa con las funciones E2EE (chats, grupos, llamadas, medios, historias, mensajes de voz, ubicación en tiempo real, Key Transparency); requiere Android 8.0 (API 26) o posterior. Notificaciones push mediante Firebase Cloud Messaging. El Contacto de confianza no está disponible en Android: un usuario de Android al que se concede la confianza solo ve en el chat un mensaje genérico "Ubicación bajo petición".
- Apple Watch: companion para visualizar y responder a los mensajes (incluidos mensajes de voz E2EE).
- Web: cliente accesible desde web.taski.chat, vinculado mediante código QR. Soporta chat, llamadas, multimedia y las funcionalidades E2EE; no permite compartir la ubicación en tiempo real, usar el Contacto de confianza ni eliminar la cuenta.
- Escritorio: macOS y Windows (build Tauri), actualizaciones automáticas firmadas.
Las sesiones web/escritorio son visibles y revocables en cualquier momento desde Ajustes → Dispositivos vinculados.
9. Derechos del usuario (RGPD)
De conformidad con el Reglamento UE 2016/679 (RGPD) el usuario tiene derecho a:
- Acceso: obtener una copia de los datos (función Copia de seguridad).
- Rectificación: corregir datos inexactos desde la app (Ajustes del perfil).
- Supresión: eliminar la cuenta y los datos asociados desde el teléfono principal (Ajustes → Eliminar cuenta), con las excepciones indicadas en Derechos del interesado.
- Portabilidad: recibir los datos en formato legible (exportar copia de seguridad).
- Oposición: oponerse al tratamiento para finalidades específicas.
- Limitación: solicitar la limitación del tratamiento.
- Reclamación: presentar una reclamación ante la Agencia Española de Protección de Datos (aepd.es) o, si el usuario reside en otro país de la UE, ante la autoridad de control nacional correspondiente (edpb.europa.eu). Para usuarios italianos: Garante per la protezione dei dati personali (garanteprivacy.it).
Para instrucciones detalladas, véase: Derechos del interesado.
10. Ajustes de privacidad en la app
- Última conexión: todos / solo contactos / nadie.
- Foto de perfil: todos / solo contactos / nadie.
- Estado/Bio: todos / solo contactos / nadie.
- Confirmaciones de lectura: activables/desactivables; la elección se guarda en la cuenta y se aplica en todos los dispositivos.
- Escucha musical: compartición activable/desactivable.
- Notificaciones con Web activo: recibir o no las notificaciones en el iPhone cuando la Web está conectada.
- Bloqueo de usuarios: permite bloquear sin notificación.
- Ubicación en tiempo real: interrupción en cualquier momento desde el chat; eliminación de los recorridos guardados desde el perfil del chat; permisos de ubicación y movimiento gestionables desde los ajustes del sistema.
- Contacto de confianza: se activa y se retira desde el perfil de cada contacto; en Ajustes → Privacidad → Quién puede ver dónde estás figuran los contactos de confianza y las últimas solicitudes, con la opción de confirmar o retirar; el bloqueo retira la confianza; recordatorio aproximadamente cada 30 días.
- Mensajes urgentes: el destinatario decide si permite las notificaciones urgentes de Taski desde los ajustes de iOS.
- TaskiAI: opt-out completo (véase Política de TaskiAI).
- Sistema antiabuso: transparencia sobre las moderaciones (véase Política de uso aceptable).
- Dispositivos vinculados: permite visualizar y revocar las sesiones Web/Escritorio.
Reciprocidad: si el usuario desactiva la última conexión, las confirmaciones de lectura y la visualización de la foto de perfil, automáticamente dejará de ver esos mismos datos de sus contactos.
11. Menores
Taski está destinada a usuarios de edad igual o superior a 16 años. No recopilamos conscientemente datos de menores de 16 años. Si se tiene conocimiento de que un menor ha proporcionado datos, se ruega contactar con nosotros inmediatamente para su eliminación.
Para la protección de los menores, Taski adopta tolerancia cero ante contenidos pedopornográficos (CSAM): véase Política de uso aceptable.
12. Transferencias internacionales
Los datos del usuario están alojados en Cloudflare, que opera una red global. Los datos pueden procesarse edge-side en el centro de datos geográficamente más cercano. Cloudflare está certificada en el EU-U.S. Data Privacy Framework para las transferencias UE → EE. UU. El witness de Key Transparency está alojado en Amazon Web Services en Japón y recibe únicamente hashes criptográficos agregados y firmas del registro de claves públicas, que no constituyen datos personales. Las transferencias hacia los proveedores (Apple, Google, Twilio, Agora, Anthropic, OpenAI, Giphy, Tavily, OpenStreetMap Foundation, Amazon Web Services) se realizan según las Cláusulas Contractuales Tipo aprobadas por la Comisión Europea. Japón, donde se aloja el witness, está además cubierto por una decisión de adecuación de la Comisión Europea. El usuario puede solicitar una copia de las garantías adoptadas (Cláusulas Contractuales Tipo) escribiendo a [email protected].
13. Modificaciones de la política
Podemos actualizar esta política para reflejar cambios en el servicio o en las obligaciones legales. Las modificaciones sustanciales se comunicarán mediante:
- Notificación en la app
- Actualización de la fecha "Última actualización" en la parte superior de este documento
El uso continuado de Taski tras los cambios constituye aceptación de la nueva política.
14. Búsqueda semántica on-device
Taski incluye una búsqueda semántica inteligente de los chats del usuario que funciona enteramente en el dispositivo del usuario. Ningún texto, embedding o consulta sale jamás del dispositivo.
Cómo funciona
- Los mensajes se transforman en vectores (embeddings 512-dim) usando el modelo abierto
EmbeddingGemma, ejecutado on-device en iPhone y Android. El archivo del modelo se descarga una sola vez de los servidores de Taski: la descarga no contiene datos del usuario. - El índice se almacena localmente en el dispositivo, cifrado en reposo por el sistema operativo.
- Cuando el usuario realiza una búsqueda, la consulta también se transforma en vector on-device y se compara localmente.
- Funciona offline / en modo avión.
Dos niveles de inteligencia
- Versión base (iPhone con iOS 17.6+ y Android): búsqueda semántica completa con embeddings on-device, scoring con decaimiento temporal.
- Versión avanzada (iPhone con Apple Intelligence, iOS 26+): re-ranker adicional que utiliza el modelo Apple Foundation on-device para ordenar mejor los resultados por relevancia.
En ambos casos todo se ejecuta on-device: ni el servidor Taski, ni Apple, ni Google, ni ningún proveedor reciben texto o consultas (los modelos se ejecutan localmente).
Controles disponibles para el usuario
- Activar/Desactivar en Configuración → Privacidad → Búsqueda Semántica.
- El usuario puede borrar el índice en cualquier momento; se reconstruirá en el siguiente bootstrap.
- Filtros faceted (fecha, tipo de mensaje, remitente, chat) aplicados localmente sobre los resultados ranked.
15. Soporte en la app
Taski ofrece un sistema de asistencia integrado, accesible desde Ajustes → Soporte. Las conversaciones de soporte no están cifradas de extremo a extremo, ya que el personal de asistencia (y un asistente de IA de primera respuesta) necesita leer los mensajes para poder ayudar.
- Cifrado en reposo: los mensajes de soporte están cifrados en el servidor (AES-256) en una base de datos dedicada. Ningún dato se transmite ni almacena en texto plano.
- Infraestructura separada: el sistema de soporte utiliza un Worker de Cloudflare, una base de datos (D1) y un almacenamiento (R2) dedicados e independientes de los datos de chat del usuario.
- Asistente de IA: un modelo de lenguaje (Anthropic Claude Haiku) puede procesar los mensajes de soporte para proporcionar respuestas iniciales automáticas. Se aplican las mismas condiciones descritas en la sección 5.6 Anthropic (TaskiAI).
- Conservación: las conversaciones de soporte se conservan durante el tiempo necesario para resolver la solicitud y no más de 12 meses después del cierre del ticket, tras lo cual se eliminan automáticamente.
- Archivos adjuntos (capturas de pantalla, registros) enviados por el usuario al soporte están cifrados en reposo en Cloudflare R2 y se eliminan junto con la conversación.
16. Contacto
Email Privacidad: [email protected]
Sitio Web: taski.chat
Tiempo de respuesta: en un plazo de 48 horas (días laborables)