1. Titolare del trattamento
Il titolare del trattamento dei dati personali è:
2. Introduzione
Taski è un'applicazione di messaggistica istantanea disponibile su iOS, Android, Apple Watch, Web (web.taski.chat) e Desktop (macOS e Windows tramite Tauri). Pone la privacy e la sicurezza al centro della propria architettura.
Taski utilizza Crittografia End-to-End per tutte le conversazioni 1-1 e di gruppo, per le chiamate vocali/video e per i media. Solo l'utente e i destinatari possono leggere i messaggi. Neanche gli sviluppatori hanno accesso al loro contenuto.
3. Dati raccolti
3.1 Dati di registrazione
- Numero di telefono: identificativo primario, verificato via SMS (servizio Twilio).
- Codice di verifica: codice temporaneo a 6 cifre inviato via SMS, valido 10 minuti. In alternativa all'SMS l'utente può chiedere di ricevere il codice con una chiamata vocale automatica (Twilio, con sintesi vocale Amazon Polly), al massimo 3 chiamate al giorno.
- PIN anti-SIM-swap (opzionale): codice di 6 cifre scelto dall'utente per sbloccare l'accesso da un nuovo telefono senza il vecchio dispositivo. Il server non conserva il PIN, ma solo un verificatore derivato (PBKDF2 + HMAC con pepper); dopo 5 tentativi errati l'accesso viene bloccato.
- Passkey (opzionale): chiave di accesso gestita dal sistema operativo; il server conserva solo la chiave pubblica della passkey.
3.1-bis Nuovo dispositivo, trasferimento dell'account e recupero
Un account Taski ha un solo telefono principale alla volta (iPhone o Android). I dispositivi collegati (Web, Desktop, Apple Watch) dipendono dal telefono principale.
- Approvazione dal vecchio telefono: quando l'utente attiva Taski su un nuovo telefono, il telefono principale riceve la richiesta "Accesso da nuovo dispositivo" con nome e piattaforma del dispositivo richiedente, data/ora e una posizione approssimativa ricavata dall'indirizzo IP. L'approvazione richiede l'autenticazione biometrica (es. Face ID) o il codice del dispositivo. Una volta approvato il trasferimento, il vecchio telefono viene disconnesso.
- Trasferimento delle chiavi: se l'utente approva dal vecchio telefono, le chiavi private di cifratura (inclusa la chiave d'identità e le chiavi storiche necessarie a leggere i messaggi già ricevuti) vengono trasferite al nuovo telefono cifrate end-to-end verso una chiave temporanea generata dal nuovo dispositivo. Il pacchetto transita dai nostri server, che non possono decifrarlo, e viene eliminato alla consegna (di norma entro pochi minuti).
- Accesso senza il vecchio telefono: in alternativa l'utente può usare la passkey, il PIN anti-SIM-swap oppure il recupero con assistenza. In questi casi le chiavi non vengono trasferite: l'account riparte con nuove chiavi di cifratura (vedere 7).
- Recupero con assistenza: l'utente scatta un selfie tenendo in mano un documento d'identità valido e un foglio con un codice mostrato dall'app. La foto viene caricata sui nostri server (Cloudflare R2), esaminata manualmente da un operatore tramite un link temporaneo e cancellata all'approvazione o al rifiuto della richiesta, e comunque entro 24 ore. Non viene effettuato alcun riconoscimento biometrico automatico. L'esito viene comunicato via SMS. Il registro della richiesta (numero di telefono, codice, esito, date) è conservato fino alla cancellazione dell'account.
- Registro di sicurezza dei trasferimenti: per ogni richiesta registriamo indirizzo IP, nome e piattaforma del dispositivo richiedente, data/ora ed esito. Il registro serve a prevenire furti di account ed è conservato fino alla cancellazione dell'account.
3.2 Dati del profilo
Sono dati opzionali che l'utente può scegliere di fornire:
- Nome visualizzato
- Stato/Bio (breve descrizione)
- Foto profilo (memorizzata sui nostri server, accessibile in base alle impostazioni privacy dell'utente)
3.3 Conversazioni 1-1 (E2EE)
- Crittografate end-to-end con X25519 (scambio chiavi) + AES-256-GCM (cifratura).
- I messaggi non vengono memorizzati permanentemente sui nostri server. Restano in coda offline per massimo 7 giorni per garantire la consegna.
- Per la sincronizzazione tra i dispositivi dell'utente (iPhone, Android, Watch, Web, Desktop), i messaggi possono restare in forma cifrata fino a 7 giorni dopo la consegna.
- Una volta scaduto il periodo, i messaggi vengono eliminati automaticamente.
3.4 Conversazioni di gruppo (E2EE)
- Crittografate con chiave simmetrica AES-256 condivisa tra i membri, distribuita tramite ECDH (Curve25519).
- I metadati di gruppo (nome, partecipanti, amministratori) sono memorizzati per la gestione.
- Le chiavi vengono rigenerate al cambio di membri.
- I messaggi cifrati restano sul server per la consegna e la sincronizzazione al massimo 7 giorni, poi vengono eliminati automaticamente.
3.5 Chiamate vocali e video (E2EE)
- Ogni chiamata deriva una chiave unica AES-256-GCM tramite HKDF (ECDH + salt casuale per chiamata + ID chiamata).
- Neanche il fornitore di trasporto (Agora) può accedere al contenuto audio/video.
- Nessuna registrazione: le chiamate non vengono mai memorizzate.
- Metadati conservati: chi ha chiamato chi, tipo (audio/video), durata, data/ora — solo per la cronologia chiamate nell'app.
- Heartbeat: durante una chiamata attiva i dispositivi inviano un segnale periodico di presenza. Se il segnale manca per 90 secondi, la chiamata viene considerata terminata. Una singola chiamata dura al massimo 4 ore.
3.6 Storie
- Il media (foto o video) è crittografato end-to-end: il server non può visualizzarne il contenuto. I metadati di engagement (visualizzazioni, "mi piace") sono invece visibili al server in chiaro, perché necessari per mostrare i conteggi e l'elenco "chi ha visualizzato" al creatore. Le risposte alle storie viaggiano come messaggi normali in chat 1-1, quindi sono cifrate end-to-end.
- Vengono eliminate automaticamente dopo 24 ore.
- Il creatore può vedere chi ha visualizzato la propria storia.
- È possibile mettere "mi piace" e rispondere alle storie.
3.7 Dati tecnici
I dati tecnici raccolti per il funzionamento del servizio sono:
- Token push APNs / FCM
- Per inviare notifiche all'utente.
- Token VoIP
- Per ricevere chiamate quando l'app è in background (PushKit).
- Chiavi pubbliche di crittografia
- Per lo scambio sicuro delle chiavi E2EE. Le chiavi private sono generate e conservate sui dispositivi dell'utente (Keychain su iOS, archivio protetto dell'app su Android e nel browser) e non sono mai accessibili ai nostri server: lasciano il telefono solo cifrate end-to-end verso il nuovo dispositivo durante un trasferimento dell'account (vedere 3.1-bis).
- Rubrica contatti
- Se l'utente concede il permesso, vengono sincronizzati solo gli hash crittografici (HMAC con pepper) dei numeri di telefono e degli indirizzi email presenti in rubrica. I numeri e gli indirizzi in chiaro non vengono mai inviati ai nostri server. Quando un contatto della rubrica risulta registrato su Taski, il server memorizza il collegamento tra l'account dell'utente e quello del contatto. La sincronizzazione è necessaria per avviare nuove chat 1-1: per prevenire spam e l'estrazione di numeri di telefono, una nuova chat può essere aperta solo con persone presenti nella rubrica sincronizzata o con cui si condivide già un gruppo (l'utente può comunque sempre rispondere a chi lo ha già contattato).
- Timestamp di accesso
- Per "ultimo accesso" e consegna messaggi (rispettando le impostazioni di privacy).
- Metadati conversazioni
- ID conversazione, timestamp, stato di lettura/consegna.
- Dispositivi collegati
- Piattaforma, tipo di client (browser o app desktop), nome del dispositivo, user-agent, ID sessione, ultimo accesso e apertura del client Web/Desktop (usata per avvisare l'utente sul telefono, al massimo una volta ogni 24 ore, che una sessione collegata è in uso).
- Indirizzo IP
- Usato per la sicurezza del servizio (rate limiting, prevenzione degli abusi, registro dei trasferimenti di account) e registrato nei log tecnici della piattaforma Cloudflare, raccolti a campione e con conservazione limitata. Dai log vengono rimossi i parametri delle URL.
- Token Location Push (iOS)
- Se l'utente concede alla posizione il permesso "Sempre", il telefono principale registra un token Apple dedicato alle funzioni di posizione in tempo reale e Contatto fidato (vedere 3.11 e 3.11-bis). Viene eliminato al logout, alla cancellazione dell'account o quando Apple lo segnala come non più valido.
3.8 Media
- Immagini, video, vocali, documenti: tutti cifrati end-to-end (AES-256-GCM) prima dell'upload, memorizzati temporaneamente su Cloudflare R2.
- Posizione statica: inviata come messaggio cifrato end-to-end (coordinate e indirizzo). Per la posizione in tempo reale vedere 3.11; per la posizione su richiesta del Contatto fidato vedere 3.11-bis.
- GIF: la ricerca avviene tramite nostro proxy (la query non è associata all'account dell'utente). La GIF scelta viene poi scaricata dai dispositivi di mittente e destinatario, anche per l'anteprima nelle notifiche, direttamente dalla rete di distribuzione di Giphy, che riceve quindi l'indirizzo IP del dispositivo.
- Reazioni emoji: memorizzate come metadati.
- Sticker AI generati: generati on-demand tramite OpenAI (gpt-image-2.5-flare o gpt-image-1 a seconda dello stile). Solo per gli sticker creati da un testo, se OpenAI non è disponibile, viene usato un ripiego (Anthropic Claude Haiku 4.5 + Flux Schnell su Cloudflare Workers AI); le foto non vengono mai inviate a questi fornitori di ripiego. In modalità "foto → sticker" l'immagine sorgente viene inviata in chiaro al worker Taski e da lì trasmessa a OpenAI: non è cifrata end-to-end in questa fase (protetta solo da TLS in transito; il worker non la memorizza). Lo sticker risultante è poi cifrato end-to-end come gli altri media prima dell'invio in chat.
3.9 Ascolto musicale (opzionale)
- Taski può condividere lo stato di ascolto musicale con i contatti dell'utente (Apple Music o Spotify).
- Dati condivisi: titolo brano e nome artista in riproduzione.
- Disattivabile nelle impostazioni privacy. Non viene salvato sui server.
3.10 Backup
- Backup su iCloud: sullo spazio iCloud personale dell'utente.
- Crittografia AES-256 con password scelta dall'utente.
- Include messaggi, contatti, chiavi E2EE e opzionalmente media.
- Non abbiamo accesso ai backup dell'utente. In caso di smarrimento della password, i dati sono irrecuperabili.
3.11 Posizione in tempo reale (opzionale)
Nelle chat 1-1 l'utente può condividere la propria posizione in tempo reale per 15 minuti, 1 ora o 8 ore. La funzione è disponibile su iPhone e Android; sul Web e sul Desktop il destinatario vede solo il punto di partenza. Non è disponibile nei gruppi.
- Cosa viene inviato, cifrato end-to-end: coordinate, istante della misura, accuratezza, velocità, direzione, modalità di spostamento stimata dal telefono (a piedi, di corsa, in bici, in auto, fermo), soste, inizio e fine della condivisione e, su iPhone, il livello della batteria. Questi dati sono cifrati sul dispositivo con la stessa cifratura dei messaggi 1-1 (X25519 + AES-256-GCM): il server non può leggerli.
- Messaggio di avvio: all'avvio viene inviato in chat un messaggio cifrato end-to-end con il punto di partenza e la durata della condivisione.
- Cosa vede il server: i metadati necessari alla consegna, cioè chi condivide con chi, identificativo della condivisione, inizio, scadenza e fine, identificativo del dispositivo di origine, numero progressivo, ora di arrivo e dimensione di ogni aggiornamento. Poiché gli aggiornamenti sono più frequenti quando ci si sposta, dalla loro cadenza è possibile dedurre in modo approssimativo se l'utente è in movimento o fermo.
- Conservazione sul server: gli aggiornamenti cifrati sono conservati per la durata della condivisione e fino a 36 ore dopo la sua fine, per permettere al destinatario di recuperare il percorso completo anche se non ha aperto l'app. Poi vengono cancellati automaticamente. Vengono cancellati subito se la chat o l'account vengono eliminati.
- Conservazione sul dispositivo: su iPhone il percorso (tracciato, viaggi e soste) viene salvato nella sezione "Percorsi" del profilo della chat sia da chi condivide sia da chi riceve, e resta sul dispositivo finché l'utente non lo elimina. Chi ha condiviso non può cancellare la copia salvata sul dispositivo di chi l'ha ricevuta. Se è attiva la "Protezione dati" (vedere 7), tracciato, viaggi e soste sono cifrati anche a riposo sul dispositivo.
- Permessi e funzionamento in background: su iPhone la condivisione richiede il permesso di posizione "Sempre" e, facoltativamente, il permesso Movimento e fitness (per stimare la modalità di spostamento). Per continuare ad aggiornare la posizione ad app chiusa vengono usati i servizi di background di iOS e il servizio Location Push di Apple: se il destinatario apre la chat e l'ultimo aggiornamento è vecchio, o se la condivisione resta silenziosa troppo a lungo, il server può chiedere al telefono di chi condivide una nuova posizione (con limiti di frequenza). Su Android la condivisione usa un servizio in primo piano con una notifica fissa e il pulsante "Interrompi".
- Mappe e indirizzi: per mostrare indirizzi e tempo di arrivo, l'app iOS invia a Apple (MapKit) le coordinate interessate, senza identificativi dell'account. Su Android le mappe vengono scaricate da OpenStreetMap (vedere 5).
- Interruzione: la condivisione può essere interrotta in qualsiasi momento solo da chi l'ha avviata. Termina automaticamente alla scadenza, al logout e alla cancellazione dell'account. Una nuova condivisione nella stessa chat sostituisce la precedente.
- Notifiche: l'avvio genera una notifica con testo generico ("Posizione in tempo reale"), senza coordinate. Gli aggiornamenti successivi non generano notifiche.
3.11-bis Contatto fidato: posizione su richiesta (opzionale)
Dal profilo di un contatto con cui ha una chat 1-1, l'utente può renderlo contatto fidato. Da quel momento quella persona può chiedere dove si trova l'utente anche quando non è attiva una condivisione in tempo reale, e il telefono dell'utente risponde da solo con un solo punto, la posizione di quell'istante: non è una condivisione continua. La fiducia vale in un solo verso, si concede a un massimo di 5 contatti e la persona resa fidata ne è informata con un messaggio in chat, senza doverla accettare (se usa Android, vede solo un messaggio generico "Posizione su richiesta"). Al momento concedere la fiducia, chiedere la posizione ed essere localizzati è possibile solo con l'app iPhone (sull'Apple Watch si vedono le richieste in chat); la funzione non è disponibile nei gruppi né su Android, Web e Desktop.
- Chi decide: solo l'utente che concede la fiducia, con un gesto sul proprio telefono. Il telefono risponde soltanto alle persone confermate su quel telefono: un elenco ricevuto dal server non basta. Dopo un logout o una reinstallazione dell'app i contatti fidati restano "da confermare" e il telefono non risponde finché l'utente non li conferma di nuovo.
- Risposta automatica: la richiesta raggiunge il telefono tramite il servizio Location Push di Apple e il telefono risponde anche se è bloccato o l'app è chiusa, senza che l'utente debba fare nulla. Serve il permesso di posizione "Sempre". Se il permesso manca, se il telefono è spento o senza rete o se non riesce a rispondere entro circa un minuto, non parte nessun punto e chi ha chiesto vede "Non raggiungibile".
- Cosa viene inviato, cifrato end-to-end: coordinate, precisione, ora del rilevamento e, se disponibile, livello della batteria. Il punto è cifrato sul telefono di chi viene localizzato per la sola persona che l'ha chiesto (X25519 + AES-256-GCM), con la sua chiave pubblica verificata (vedere 7): il server non può leggerlo.
- Cosa conserva il server: l'elenco dei contatti fidati (chi ha concesso la fiducia a chi e da quando) e, per ogni richiesta, chi l'ha fatta, a chi, in quale chat 1-1, gli orari di richiesta, scadenza e risposta, l'esito (posizione inviata, non inviata, in attesa) e il punto cifrato. Il motivo di una mancata risposta non viene conservato. Dall'esito il server può dedurre se il telefono era raggiungibile, non le coordinate; come per ogni chiamata al server, la risposta del telefono arriva con il suo indirizzo IP (vedere 3.7).
- Conservazione sul server: il punto cifrato resta a disposizione di chi l'ha chiesto per 24 ore, poi non viene più consegnato e viene cancellato con la pulizia automatica giornaliera successiva (al più tardi entro 48 ore); i dati delle richieste vengono cancellati con la pulizia automatica giornaliera dopo 30 giorni (al più tardi entro 31 giorni); l'elenco dei contatti fidati resta finché la fiducia non viene revocata. Fiducia e richieste vengono cancellate subito, in entrambi i versi, con la cancellazione dell'account.
- Conservazione sul dispositivo: le richieste compaiono nella chat 1-1 delle due persone (e sull'Apple Watch associato) come messaggi creati dall'app, che non passano dal server come messaggi di chat: chi ha chiesto vede il punto su una mappa, chi è stato localizzato vede che la sua posizione è stata inviata (con la mappa) oppure che non è stata inviata. Sul telefono di chi viene localizzato le richieste compaiono quando l'app si aggiorna con il server, al più tardi alla riapertura successiva, ma solo se sono tra le ultime 50 richieste degli ultimi 7 giorni e la chat è ancora presente sul telefono. Questi messaggi non si possono inoltrare e restano sul dispositivo finché l'utente non elimina la chat; come gli altri messaggi, coordinate comprese, sono inclusi nel backup cifrato, se attivo (vedere 3.10), finché il backup non viene sostituito o eliminato. Chi è stato localizzato non può cancellare la copia sul dispositivo di chi ha chiesto. Il telefono di chi è stato localizzato conserva inoltre una copia tecnica degli ultimi punti inviati (al massimo 50, con destinatario e ora), che serve a mostrare la mappa nella chat: i punti più vecchi di 7 giorni vengono tolti solo quando ne parte uno nuovo, quindi la copia resta sul telefono, anche dopo il logout, finché non viene sostituita da punti nuovi o l'app non viene disinstallata.
- Mappe e indirizzi: per mostrare la mappa e l'indirizzo, l'app (anche su Apple Watch) invia ad Apple (MapKit) le coordinate interessate, senza identificativi dell'account.
- TaskiAI: se nella chat una delle due persone invoca
@TaskiAIo usa le azioni "Spiega" o "Suggerisci", le richieste e i punti presenti negli ultimi 20 messaggi, decifrati sul dispositivo e con le coordinate, entrano nel contesto inviato ad Anthropic (vedere 5.6 e l'Informativa TaskiAI). - Notifiche: ogni volta che il telefono invia la posizione, Taski invia una notifica a chi è stato localizzato anche se la chat è silenziata, purché le notifiche di Taski siano consentite nelle impostazioni del telefono; la notifica non viene rimessa in coda per nuovi tentativi, quindi se il servizio di notifica non la consegna non arriva. In ogni caso la richiesta compare in chat e tra le ultime richieste in Impostazioni → Privacy → Chi può vedere dove sei, con i limiti indicati sopra. Chi ha chiesto viene avvisato quando il punto arriva, secondo le normali impostazioni di notifica della chat (ad esempio nessun avviso se la chat è silenziata o è aperta in quel momento). Le notifiche non contengono coordinate.
- Limiti: ogni contatto fidato può chiedere la posizione al massimo una volta ogni 5 minuti e 20 volte in 24 ore; per il server contano anche le richieste rimaste senza risposta. Il telefono di chi viene localizzato, per conto suo, non invia alla stessa persona più di un punto ogni 5 minuti circa né più di 20 punti in 24 ore, anche se il server non rispettasse i limiti.
- Promemoria: finché c'è almeno un contatto fidato confermato sul telefono, circa ogni 30 giorni una notifica ricorda chi può ancora chiedere la posizione (nomina fino a tre contatti). Il promemoria successivo viene programmato dall'app quando è in uso (all'avvio o quando l'elenco cambia): se l'app non viene usata a lungo ne arriva uno solo, e nessuno se le notifiche di Taski sono disattivate.
- Revoca: in qualsiasi momento, dal profilo del contatto (interruttore "Contatto fidato") o da Impostazioni → Privacy → Chi può vedere dove sei, dove sono elencati anche i contatti fidati e le ultime richieste. Il blocco di un contatto revoca la fiducia in entrambi i versi. Dopo la revoca il telefono non risponde più e il server non accetta né nuove richieste né risposte a quelle in corso. Togliendo il permesso di posizione "Sempre" dalle impostazioni di sistema il telefono smette di inviare punti.
3.12 Messaggi urgenti e silenziosi
- L'utente può inviare un messaggio come silenzioso (arriva senza suono né vibrazione) o come urgente (su iPhone usa le notifiche "tempestive" di iOS e può superare Full immersion e Riepilogo notifiche, in base alle impostazioni del destinatario; su Android usa un canale di notifica dedicato).
- L'indicazione urgente/silenzioso viaggia all'interno del messaggio cifrato end-to-end: il server non la vede.
- L'app consente al massimo 1 messaggio urgente ogni 60 minuti per destinatario.
3.13 Taski Plus e acquisti in-app
- L'abbonamento Taski Plus si acquista nell'app iPhone tramite l'App Store di Apple, che gestisce il pagamento. Non riceviamo né conserviamo i dati della carta o del metodo di pagamento.
- Per associare l'acquisto all'account, l'app comunica ad Apple un identificativo pseudonimo dell'account. Da Apple riceviamo i dati della transazione: prodotto acquistato, identificativi della transazione, date di acquisto, rinnovo e scadenza, stato dell'abbonamento (prova, attivo, rinnovo, rimborso, scadenza) e Paese dello store.
- Conserviamo lo stato dell'abbonamento e lo storico delle transazioni per tutta la durata dell'account. Dopo la cancellazione dell'account i record delle transazioni vengono dissociati dall'account e conservati solo per prevenire frodi (ad esempio il riutilizzo dello stesso acquisto su un altro account), gestire rimborsi e contestazioni e adempiere agli obblighi di legge.
4. Come utilizziamo i dati
Utilizziamo i dati raccolti esclusivamente per:
- Fornire il servizio di messaggistica (consegna, sincronizzazione, notifiche, chiamate).
- Gestire l'account dell'utente (autenticazione, verifica, profilo).
- Garantire la sicurezza (prevenire abusi, spam, attacchi automatizzati).
- Migliorare l'app (analisi anonime per identificare bug e ottimizzare prestazioni).
- Rispettare obblighi di legge se richiesto da autorità competenti.
NON utilizziamo i dati dell'utente per:
- Pubblicità mirata o profilazione
- Vendita o condivisione con terze parti commerciali
- Analisi del contenuto dei messaggi E2EE (non è possibile: sono cifrati)
- Tracciamento del comportamento per scopi di marketing
4.1 Basi giuridiche del trattamento
Ai sensi dell'art. 6 del Regolamento UE 2016/679 (GDPR), ogni trattamento si fonda su una specifica base giuridica:
| Finalità | Base giuridica |
|---|---|
| Fornire il servizio di messaggistica: registrazione, autenticazione, consegna e sincronizzazione dei messaggi, notifiche, chiamate, gestione dell'account | Esecuzione del contratto — art. 6(1)(b) |
| Sicurezza del servizio: prevenzione di abusi, spam e attacchi automatizzati, protezione anti-bot (Turnstile), rate limiting, Key Transparency, moderazione su segnalazione | Legittimo interesse — art. 6(1)(f) (interesse perseguito: integrità e sicurezza del servizio e degli utenti) |
| Miglioramento dell'app tramite analisi anonime e aggregate | Legittimo interesse — art. 6(1)(f) |
| Sincronizzazione della rubrica per trovare i contatti registrati e avviare nuove chat | Esecuzione del contratto — art. 6(1)(b) per i dati dell'utente; legittimo interesse — art. 6(1)(f) per i numeri e gli indirizzi dei terzi presenti in rubrica, trattati solo in forma di hash |
| Nuovo dispositivo, trasferimento dell'account, recupero con assistenza (inclusa la foto di verifica), PIN anti-SIM-swap, registro dei trasferimenti | Esecuzione del contratto — art. 6(1)(b) e legittimo interesse — art. 6(1)(f) (prevenire il furto degli account) |
| Abbonamento Taski Plus e gestione degli acquisti | Esecuzione del contratto — art. 6(1)(b); obbligo legale — art. 6(1)(c) per la conservazione dei dati fiscali e contabili |
| Funzioni opzionali attivate dall'utente: TaskiAI, posizione in tempo reale, condivisione dell'ascolto musicale, backup su iCloud | Consenso — art. 6(1)(a), revocabile in qualsiasi momento |
| Contatto fidato (posizione su richiesta): elenco dei contatti fidati, richieste e invio del punto | Consenso — art. 6(1)(a) di chi concede la fiducia, revocabile in qualsiasi momento; esecuzione del contratto — art. 6(1)(b) per i dati della persona resa fidata e di chi invia le richieste |
| Adempimento di obblighi di legge e riscontro a richieste di autorità competenti | Obbligo legale — art. 6(1)(c) |
Dove la base è il legittimo interesse, l'utente ha diritto di opporsi al trattamento (art. 21 GDPR). Dove la base è il consenso, la revoca è sempre possibile dalle impostazioni dell'app e non pregiudica la liceità del trattamento effettuato prima della revoca.
5. Condivisione dei dati con terze parti
5.1 Cloudflare
- Servizio: hosting backend (Workers), database D1, storage R2, cache KV, WebSocket e conservazione temporanea della posizione in tempo reale cifrata tramite Durable Objects, log tecnici (Workers Logs), metriche tecniche aggregate senza identificativi di utenti o conversazioni (Workers Analytics Engine), modelli AI di moderazione e di ripiego per gli sticker (Workers AI), hosting client Web (Pages), protezione anti-bot (Turnstile).
- Dati condivisi: tutti i dati memorizzati sui nostri server. Per la protezione anti-bot, Turnstile raccoglie indirizzo IP, TLS fingerprint e User-Agent; questi segnali sono classificati come strettamente necessari e non vengono utilizzati per identificare, profilare o tracciare gli utenti.
- Privacy Policy: cloudflare.com/privacypolicy
- Turnstile Privacy: cloudflare.com/turnstile-privacy-policy
5.2 Apple (APNs, PushKit, Location Push, MapKit, App Store)
- Servizio: notifiche push e VoIP; Location Push per la posizione in tempo reale e per il Contatto fidato; mappe, indirizzi e tempi di percorrenza (MapKit); App Store per gli acquisti in-app.
- Dati condivisi: token APNs/VoIP/Location Push. Il contenuto delle notifiche di norma è un placeholder; la decifratura avviene localmente nelle estensioni dell'app con la chiave privata dell'utente, che non lascia il dispositivo. Le richieste Location Push contengono solo identificativi tecnici (conversazione, condivisione, destinatario, scadenza), mai coordinate. Lo stesso vale per le richieste del Contatto fidato (richiesta, richiedente, conversazione, scadenza); le relative notifiche contengono il nome visualizzato e il numero di telefono dell'altra persona, per mostrarla con il nome della rubrica, mai coordinate. Per mappe, indirizzi e tempi di arrivo l'app invia a MapKit le coordinate interessate. Per gli acquisti: i dati della transazione descritti in 3.13.
- Privacy Policy: apple.com/legal/privacy
5.3 Google — Firebase Cloud Messaging (FCM)
- Servizio: notifiche push per i dispositivi Android.
- Dati condivisi: token push FCM e i metadati necessari a comporre la notifica (ID conversazione e mittente, nome visualizzato e numero del mittente, URL firmato dell'avatar). Il contenuto del messaggio è cifrato end-to-end e Google non possiede le chiavi per decifrarlo. Per i soli messaggi di servizio non cifrati (es. risposte del supporto) titolo e corpo della notifica sono visibili.
- Privacy Policy: firebase.google.com/support/privacy
5.4 Twilio
- Servizio: invio di SMS e chiamate vocali automatiche per la verifica del numero e per le comunicazioni sul recupero dell'account. Per le chiamate vocali il codice viene letto da una voce sintetica Amazon Polly tramite Twilio.
- Dati condivisi: numero di telefono, codice di verifica, testo del messaggio.
- Privacy Policy: twilio.com/legal/privacy
5.5 Agora
- Servizio: infrastruttura per chiamate vocali/video.
- Dati condivisi: stream audio/video cifrato E2EE (non accessibile ad Agora), ID canale, ID utente anonimizzato.
- Privacy Policy: agora.io/en/privacy-policy
5.6 Anthropic (TaskiAI)
- Servizio: assistente AI per la modalità inline
@TaskiAInelle chat con altre persone, per le azioni rapide sui messaggi, per la riscrittura delle bozze (AI Rewrite) e per la chat dedicata "Taski AI" (Claude Sonnet 5, Claude Opus 4.7, Claude Haiku 4.5). - Dati condivisi (modalità inline): SOLO al momento dell'invocazione esplicita di
@TaskiAI— ultimi 20 messaggi di contesto (incluse le eventuali posizioni, con le coordinate: quelle condivise nella chat e, per la funzione "Contatto fidato", le richieste di posizione e il punto inviato in risposta dal telefono di chi le ha ricevute), max 3 foto recenti (descritte da Haiku in didascalia), nome dell'invocatore, domanda. - Dati condivisi (chat dedicata): ad ogni messaggio inviato nella chat dedicata — testo del messaggio, cronologia recente della chat dedicata, eventuali foto e PDF allegati (inviati come file), memoria persistente del chatbot come parte del prompt.
- Dati condivisi (AI Rewrite e azioni rapide): solo il testo della bozza o del messaggio selezionato; le azioni "Spiega" e "Suggerisci" ricevono anche, come contesto, gli ultimi 20 messaggi della chat (posizioni comprese, come sopra).
- Garanzia contrattuale: Anthropic non usa i dati per addestrare modelli.
- Vedere anche: Informativa TaskiAI
- Privacy Policy: anthropic.com/legal/privacy
5.7 OpenAI
- Servizi: generazione sticker AI on-demand (gpt-image-2.5-flare, gpt-image-1), generazione e ritocco di immagini TaskiAI inline e in chat dedicata su richiesta esplicita (gpt-image-2.5-flare, con ripiego su gpt-image-2), chiamata vocale full-duplex con il chatbot Taski AI (gpt-realtime-2.1 + gpt-4o-mini-transcribe).
- Dati condivisi: prompt testuale; la foto sorgente in modalità "foto → sticker" e nel ritocco foto (che in modalità inline può essere una foto inviata dall'altro partecipante della chat); audio del microfono in streaming ed eventuali foto inviate durante la chiamata vocale; system prompt iniziale con nome utente e memoria del chatbot. Dettagli nell'Informativa TaskiAI.
- Privacy Policy: openai.com/policies/privacy-policy
5.8 Giphy
- Servizio: libreria GIF: ricerca tramite nostro proxy, download delle GIF dalla rete di distribuzione di Giphy.
- Dati condivisi: query di ricerca (non associata all'account dell'utente); indirizzo IP del dispositivo che scarica la GIF.
- Privacy Policy: giphy.com/privacy
5.9 Amazon Web Services — Witness Key Transparency
Taski pubblica un registro pubblico, append-only e verificabile (albero di Merkle, standard RFC-6962) delle chiavi pubbliche di crittografia degli utenti (Key Transparency), così che i client possano rilevare un'eventuale sostituzione occulta di chiavi. Per rendere rilevabile anche un'equivocation del server (mostrare registri divergenti a utenti diversi), le impronte del registro (Signed Tree Head) vengono co-firmate da un witness indipendente ospitato su Amazon Web Services (AWS Lambda, regione Tokyo, Giappone).
- Dati trasmessi: esclusivamente hash crittografici aggregati (root hash dell'albero di Merkle), firme digitali e prove di consistenza. Nessun dato personale, contenuto di messaggi, chiave privata, numero di telefono o identificativo utente.
- Scopo: garantire l'integrità e la non-equivocation del registro delle chiavi pubbliche.
- Modalità: la co-firma avviene lato server (i client non contattano AWS) e solo al sigillo periodico del registro (poche chiamate al giorno).
- Privacy Policy: aws.amazon.com/privacy
5.10 Tavily
- Servizio: ricerca web durante la chiamata vocale con il chatbot Taski AI (al massimo 3 ricerche per chiamata).
- Dati condivisi: la query di ricerca formulata dall'AI (max 400 caratteri) e il Paese dedotto dalla lingua. Nessun identificativo dell'utente.
- Privacy Policy: tavily.com/privacy
5.11 OpenStreetMap
- Servizio: mappe (tile) mostrate dall'app Android per la posizione in tempo reale.
- Dati condivisi: indirizzo IP del dispositivo e area della mappa visualizzata. Nessun identificativo dell'account.
- Privacy Policy: osmfoundation.org/wiki/Privacy_Policy
6. Conservazione dei dati
| Tipo di dato | Periodo di conservazione |
|---|---|
| Messaggi 1-1 (coda offline) | Max 7 giorni (eliminati dopo consegna) |
| Messaggi 1-1 (sincronizzazione multi-device) | Max 7 giorni dopo la consegna, sempre cifrati E2EE |
| Messaggi di gruppo | Max 7 giorni, sempre cifrati E2EE |
| Immagini, video, documenti, vocali (cifrati E2EE) | 20 giorni dopo l'invio |
| Posizione in tempo reale (aggiornamenti cifrati E2EE) | Durata della condivisione (max 8 ore) + 36 ore |
| Percorsi della posizione in tempo reale (sul dispositivo iPhone) | Finché l'utente non li elimina |
| Elenco dei contatti fidati | Fino alla revoca, al blocco del contatto o alla cancellazione dell'account |
| Richieste del Contatto fidato (chi chiede, a chi, chat, orari, esito) | 30 giorni, poi cancellate con la pulizia automatica giornaliera (al più tardi entro 31 giorni) |
| Punto inviato in risposta a una richiesta del Contatto fidato (cifrato E2EE) | Disponibile per 24 ore, poi cancellato con la pulizia automatica giornaliera successiva (al più tardi entro 48 ore) |
| Richieste e posizioni del Contatto fidato nella chat (sul dispositivo) | Finché l'utente non elimina la chat; nel backup cifrato, se attivo, finché il backup non viene sostituito o eliminato |
| Copia tecnica dei punti inviati (sul telefono di chi è stato localizzato) | Al massimo 50 punti: ogni nuovo invio toglie quelli più vecchi di 7 giorni; senza nuovi invii restano, anche dopo il logout, fino alla disinstallazione dell'app |
| Token Location Push | Fino a logout, cancellazione dell'account o invalidazione da parte di Apple |
| Storie | 24 ore (eliminazione automatica) |
| Foto profilo (avatar) | Fino alla cancellazione dell'account |
| Storico chiamate | Fino alla cancellazione dell'account |
| Notifiche push fallite | 7 giorni (con retry automatico) |
| Codici di verifica SMS | 10 minuti |
| Pacchetto cifrato di trasferimento delle chiavi | Fino alla consegna al nuovo dispositivo (pochi minuti; max 24 ore se autorizzato dall'assistenza) |
| Foto di verifica per il recupero con assistenza | Fino all'approvazione o al rifiuto, comunque max 24 ore |
| Registro delle richieste di recupero e dei trasferimenti (IP, dispositivo, esito) | Fino alla cancellazione dell'account |
| Cronologia della chat dedicata Taski AI (non E2EE) | 7 giorni sul server; sul dispositivo fino a cancellazione |
| Immagini generate o ritoccate da TaskiAI in chat con altre persone | 7 giorni |
| Immagini generate nella chat dedicata Taski AI | 24 ore |
| Memoria TaskiAI sincronizzata (cifrata E2EE) | 90 giorni dall'ultimo aggiornamento |
| Caption foto TaskiAI (cache) | 14 giorni per conversazione |
| Messaggio segnalato e messaggi di contesto | Fino alla revisione, poi 30 giorni |
| Stato dell'abbonamento e transazioni Taski Plus | Durata dell'account; poi dissociati dall'account per prevenzione frodi e obblighi di legge |
| Hash rubrica contatti | Fino alla cancellazione dell'account o disattivazione del permesso |
Nota: i messaggi mantenuti per la sincronizzazione restano cifrati end-to-end per l'intero periodo. Né noi né terzi possiamo accedervi. Fanno eccezione la chat dedicata Taski AI e i contenuti generati dall'AI, che non sono cifrati end-to-end (vedere Informativa TaskiAI).
7. Sicurezza tecnica
- E2EE: X25519 + AES-256-GCM per chat 1-1 e gruppi.
- Chiamate E2EE: HKDF (ECDH + salt random) + AES-256-GCM.
- AKD (Auditable Key Directory): hash chain su key_events per rilevare manomissioni delle chiavi pubbliche (MITM).
- Key Transparency: registro pubblico, append-only e verificabile (albero di Merkle RFC-6962) di tutti i cambi di chiave pubblica, con impronte firmate (Signed Tree Head) co-firmate da un witness indipendente e verificate in modo incrociato tra i dispositivi: un server malevolo non può sostituire di nascosto la chiave di un contatto senza essere rilevato (vedere 5.9).
- Identity Key pinning: i cambi di chiave di ogni utente sono firmati da una chiave d'identità personale che non è mai accessibile al server (lascia il telefono solo cifrata end-to-end durante il trasferimento su un nuovo dispositivo). Ogni chiave d'identità può appartenere a un solo account. Se la chiave di un contatto risulta sostituita in modo non verificabile, l'invio viene bloccato con un avviso finché la situazione non è risolta (la lettura non viene mai bloccata) — protezione attiva contro i downgrade.
- Reset delle chiavi: se l'utente accede da un nuovo telefono senza trasferire le chiavi (PIN, passkey o recupero con assistenza), l'account riparte con nuove chiavi di cifratura. In questo caso i contatti vengono avvisati che il codice di sicurezza è cambiato, le sessioni collegate vengono disconnesse e i messaggi non ancora consegnati al vecchio dispositivo non possono più essere decifrati e vanno persi.
- Rotazione chiavi: rigenerazione automatica delle chiavi E2EE ogni 10 giorni (con minimo 7 giorni tra rotazioni consecutive). Le chiavi private precedenti restano disponibili localmente in grace period per decifrare i messaggi storici già ricevuti.
- Crittografia in transito: TLS 1.3 + WebSocket sicuri.
- Crittografia a riposo (lato server): database e storage protetti AES-256.
- Protezione dati (a riposo sul dispositivo): livello opzionale (iOS e Android) che cifra anche i messaggi, i media e i percorsi della posizione in tempo reale memorizzati sul dispositivo, mantenendoli illeggibili quando il telefono è bloccato (irrobustimento contro l'estrazione forense). Attivabile da Impostazioni.
- Contatto fidato: il punto è cifrato end-to-end per chi l'ha chiesto solo con una chiave pubblica verificata (pinning della chiave d'identità e controllo AKD) e contiene l'identificativo della richiesta, così non può essere attribuito a un'altra richiesta; chi lo riceve verifica la chiave di chi l'ha inviato prima di mostrarlo. Il telefono risponde solo alle persone confermate su quel dispositivo e applica da solo i limiti di frequenza: un server compromesso non può aggiungere contatti fidati né far inviare punti oltre i limiti, e in nessun caso può leggere i punti.
- Nessun fallback in chiaro: in caso di errore di cifratura, il messaggio non viene inviato.
- Autenticazione: codice via SMS o chiamata vocale + Passkey (post-onboarding) + PIN anti-SIM-swap opzionale + Face ID/Touch ID per blocco app.
- Anti-SIM-swap: un nuovo telefono può attivare l'account solo con l'approvazione del telefono principale (con autenticazione biometrica) oppure con passkey, PIN o recupero con assistenza; il solo codice SMS non basta. Blocco della verifica SMS su web se l'utente ha un device iOS attivo entro 30 giorni.
- Azioni distruttive solo dal telefono principale: la cancellazione dell'account e l'eliminazione delle conversazioni sul server possono essere richieste solo dal telefono principale, non da Web o Desktop.
- Nuovi dispositivi collegati: su iPhone il collegamento di un nuovo dispositivo Web/Desktop richiede Face ID/Touch ID; nelle chiamate dal Web è visibile il codice di sicurezza della cifratura end-to-end.
- App Attest (iOS): attestazione crittografica dell'integrità dell'app tramite Apple App Attest, per impedire l'accesso alle API da client manomessi o contraffatti.
- Rate limiting su tutti gli endpoint sensibili.
- Gestione dispositivi: le sessioni sono visualizzabili e revocabili dalle impostazioni.
8. Piattaforme e client
- iOS (iPhone): app nativa con tutte le funzionalità, richiede iOS 17.6 o successivo.
- Android: app nativa con le funzionalità E2EE (chat, gruppi, chiamate, media, storie, vocali, posizione in tempo reale, Key Transparency); richiede Android 8.0 (API 26) o successivo. Notifiche push tramite Firebase Cloud Messaging. Il Contatto fidato non è disponibile su Android: un utente Android reso contatto fidato vede in chat solo un messaggio generico "Posizione su richiesta".
- Apple Watch: companion per visualizzare e rispondere ai messaggi (incluso vocali E2EE).
- Web: client accessibile da web.taski.chat, collegato via QR code. Supporta chat, chiamate, media e le funzionalità E2EE; non consente di condividere la posizione in tempo reale, di usare il Contatto fidato né di cancellare l'account.
- Desktop: macOS e Windows (build Tauri), aggiornamenti automatici firmati.
Le sessioni web/desktop sono visibili e revocabili in qualsiasi momento da Impostazioni → Dispositivi collegati.
9. Diritti dell'utente (GDPR)
Ai sensi del Regolamento UE 2016/679 (GDPR) l'utente ha il diritto di:
- Accesso: ottenere copia dei propri dati (funzione Backup).
- Rettifica: correggere dati inesatti dall'app (Impostazioni profilo).
- Cancellazione: eliminare il proprio account e i dati associati dal telefono principale (Impostazioni → Elimina account), con le eccezioni indicate in Diritti dell'interessato.
- Portabilità: ricevere i propri dati in formato leggibile (esportazione backup).
- Opposizione: opporsi al trattamento per finalità specifiche.
- Limitazione: richiedere la limitazione del trattamento.
- Reclamo: presentare reclamo al Garante per la protezione dei dati personali (garanteprivacy.it).
Per istruzioni dettagliate vedere: Diritti dell'interessato.
10. Impostazioni privacy nell'app
- Ultimo accesso: tutti / solo contatti / nessuno.
- Foto profilo: tutti / solo contatti / nessuno.
- Stato/Bio: tutti / solo contatti / nessuno.
- Conferme di lettura: attivabili/disattivabili; la scelta è salvata sull'account e vale su tutti i dispositivi.
- Ascolto musicale: condivisione attivabile/disattivabile.
- Notifiche con Web attivo: ricevere o no le notifiche su iPhone quando il Web è connesso.
- Blocco utenti: blocca senza notifica.
- Posizione in tempo reale: interruzione in qualsiasi momento dalla chat; eliminazione dei percorsi salvati dal profilo della chat; permessi di posizione e movimento gestibili dalle impostazioni di sistema.
- Contatto fidato: si attiva e si revoca dal profilo di ogni contatto; in Impostazioni → Privacy → Chi può vedere dove sei sono elencati i contatti fidati e le ultime richieste, con la possibilità di confermare o revocare; il blocco revoca la fiducia; promemoria circa ogni 30 giorni.
- Messaggi urgenti: il destinatario decide se consentire le notifiche tempestive di Taski dalle impostazioni di iOS.
- TaskiAI: opt-out completo (vedere Informativa TaskiAI).
- Sistema anti-abuso: trasparenza sulle moderazioni (vedere Politica di uso accettabile).
- Dispositivi collegati: le sessioni Web/Desktop sono visualizzabili e revocabili.
Reciprocità: se l'utente disattiva ultimo accesso, conferme di lettura e visualizzazione della foto profilo, automaticamente non visualizzerà più le stesse informazioni dei suoi contatti.
11. Minori
Taski è destinato a utenti di età pari o superiore a 16 anni. Non raccogliamo consapevolmente dati di minori di 16 anni. Chiunque venga a conoscenza del fatto che un minore abbia fornito dati è invitato a contattarci immediatamente per la rimozione.
Per la protezione dei minori, Taski adotta tolleranza zero su contenuti pedopornografici (CSAM): vedere Politica di uso accettabile.
12. Trasferimenti internazionali
I dati dell'utente sono ospitati su Cloudflare, che opera una rete globale. I dati possono essere processati edge-side nel data center geograficamente più vicino. Cloudflare è certificata EU-U.S. Data Privacy Framework per i trasferimenti UE → USA. Il witness di Key Transparency è ospitato su Amazon Web Services in Giappone e riceve unicamente hash crittografici aggregati e firme del registro delle chiavi pubbliche, che non costituiscono dati personali. I trasferimenti verso i fornitori (Apple, Google, Twilio, Agora, Anthropic, OpenAI, Giphy, Tavily, OpenStreetMap Foundation, Amazon Web Services) avvengono secondo Standard Contractual Clauses approvate dalla Commissione UE. Il Giappone, dove è ospitato il witness, è inoltre oggetto di decisione di adeguatezza della Commissione UE. L'utente può richiedere copia delle garanzie adottate (Standard Contractual Clauses) scrivendo a [email protected].
13. Modifiche all'informativa
Possiamo aggiornare questa informativa per riflettere modifiche al servizio o agli obblighi di legge. Le modifiche sostanziali saranno comunicate tramite:
- Notifica in-app
- Aggiornamento della data "Ultimo aggiornamento" in cima a questo documento
L'uso continuato di Taski dopo le modifiche costituisce accettazione della nuova informativa.
14. Ricerca semantica on-device
Taski include una ricerca semantica intelligente delle chat dell'utente che funziona interamente sul dispositivo dell'utente. Nessun testo, embedding o query lascia mai il dispositivo.
Come funziona
- I messaggi vengono trasformati in vettori (embeddings 512-dim) usando il modello open
EmbeddingGemma, eseguito on-device su iPhone e Android. Il file del modello viene scaricato una sola volta dai server Taski: il download non contiene dati dell'utente. - L'indice è salvato in locale sul dispositivo, cifrato a riposo dal sistema operativo.
- Durante una ricerca, anche la query viene trasformata in vettore on-device e confrontata localmente.
- Funziona offline / in modalità aereo.
Due livelli di intelligenza
- Versione base (iPhone con iOS 17.6+ e Android): ricerca semantica completa con embedding on-device, scoring con time-decay.
- Versione avanzata (iPhone con Apple Intelligence, iOS 26+): re-ranker aggiuntivo che usa il modello Apple Foundation on-device per ordinare meglio i risultati per rilevanza.
In entrambi i casi tutto è on-device: né il server Taski né Apple, Google o alcun provider ricevono testo o query (i modelli girano localmente).
Controlli a disposizione dell'utente
- Toggle ON/OFF in Impostazioni → Privacy → Ricerca Semantica.
- L'utente può cancellare l'indice in qualsiasi momento; verrà ricostruito al successivo bootstrap.
- Filtri faceted (data, tipo messaggio, mittente, chat) applicati localmente sui risultati ranked.
15. Supporto in-app
Taski offre un sistema di assistenza integrato, accessibile dalla sezione Impostazioni → Supporto. Le conversazioni di supporto non sono cifrate end-to-end, in quanto il personale di assistenza (e un assistente AI di prima risposta) deve poter leggere i messaggi per fornire aiuto.
- Crittografia a riposo: i messaggi di supporto sono cifrati server-side (AES-256) nel database dedicato. Nessun dato transita o viene memorizzato in chiaro.
- Infrastruttura separata: il sistema di supporto utilizza un worker Cloudflare, un database (D1) e uno storage (R2) dedicati e distinti da quelli delle chat dell'utente.
- Assistente AI: un modello linguistico (Anthropic Claude Haiku) può elaborare i messaggi di supporto per fornire risposte iniziali automatiche. Si applicano le stesse condizioni descritte nella sezione 5.6 Anthropic (TaskiAI).
- Conservazione: le conversazioni di supporto sono conservate per il tempo necessario alla risoluzione della richiesta e comunque non oltre 12 mesi dalla chiusura del ticket, dopodiché vengono cancellate automaticamente.
- Eventuali allegati (screenshot, log) inviati dall'utente al supporto sono cifrati a riposo su Cloudflare R2 e cancellati insieme alla conversazione.
16. Contatti
Email Privacy: [email protected]
Sito Web: taski.chat
Tempo di risposta: entro 48 ore (giorni lavorativi)