Blog

Come funziona tecnicamente Baby Monitor Timmy

WebRTC, Firebase e protezione end-to-end, spiegati con chiarezza e senza inutili paroloni.

Tre elementi, un unico obiettivo

Dietro le quinte, Timmy è costruito in modo piuttosto pragmatico: Flutter per l'app, WebRTC per l'audio e il video in tempo reale, e Firebase per il coordinamento. Non volevo creare una piattaforma enorme che fa passare tutto attraverso il cloud. Ogni componente deve sapere il meno possibile e funzionare comunque in modo affidabile con gli altri.

WebRTC: connessione diretta, crittografata per impostazione predefinita

WebRTC (Web Real-Time Communication) trasporta audio e video tra il dispositivo del bambino e quello del genitore. Nella situazione migliore, i dati fluiscono direttamente tra i due dispositivi, con una connessione peer-to-peer e senza alcun server multimediale intermedio.

Ogni connessione WebRTC usa DTLS-SRTP per impostazione predefinita. Se qualcuno intercetta i pacchetti di rete, non ottiene audio o video leggibili. Questa crittografia fa parte del protocollo e in WebRTC non può essere semplicemente disattivata.

Per me questo era il punto fondamentale: i dati audio e video della cameretta non devono finire sul mio server. Restano tra i tuoi dispositivi.

Segnalazione tramite Firebase Firestore

Prima che WebRTC possa avviarsi, i dispositivi devono trovarsi e accordarsi su come connettersi. Questa parte si chiama segnalazione. Timmy usa Firebase Firestore, il database cloud di Google, per questo scopo.

Vengono scambiati solo dati tecnici di connessione:

Audio e video non finiscono in Firebase. Firestore trasporta solo i dati tecnici di connessione. Timmy crittografa anche questo livello di segnalazione, così Firestore non diventa un punto di incontro in chiaro per SDP e ICE.

Server TURN: quando il percorso diretto non funziona

Alcune reti bloccano le connessioni dirette, ad esempio firewall rigidi o alcuni operatori mobili. In questi casi WebRTC ha bisogno di un relay TURN (Traversal Using Relays around NAT).

Timmy prova prima il server TURN locale e usa Cloudflare come alternativa quando il relay locale non è disponibile o è sovraccarico. Il relay inoltra pacchetti crittografati. Non riceve le chiavi per audio o video; la crittografia WebRTC resta intatta.

Le credenziali TURN provengono da una Firebase Cloud Function e sono valide solo per 24 ore. Delle credenziali permanenti in un'app baby monitor sarebbero troppo rischiose, per i miei gusti.

Nearby Connections: i dispositivi si trovano automaticamente

Per evitare procedure di configurazione scomode tra il dispositivo del bambino e quello del genitore, Timmy usa Nearby Connections. Google fornisce questo livello di rilevamento tramite Bluetooth e Wi‑Fi.

L'abbinamento automatico in Timmy funziona senza inserire manualmente un codice: i dispositivi si trovano e individuano lo stesso punto di incontro per lo scambio delle chiavi. Se non funziona, puoi inserire un codice di 4 caratteri. Il codice di abbinamento non lascia mai il dispositivo; Firestore vede solo un hash crittografico (SHA-256) come identificatore del documento.

Autenticazione anonima

Timmy usa Firebase Anonymous Authentication. Al primo avvio, ogni dispositivo riceve un ID temporaneo e anonimo. Non c'è alcun account, indirizzo email o password. L'ID serve solo ad applicare le regole di Firestore: solo i dispositivi autenticati possono leggere o scrivere i dati della sessione.

L'architettura: chi invia e chi riceve

Timmy ha due modalità:

I comandi, come il push-to-talk e l'attivazione o disattivazione della fotocamera, utilizzano un DataChannel, un altro canale WebRTC che invia piccoli messaggi crittografati direttamente tra i dispositivi.

Perché Flutter?

Flutter è il framework di Google per app su più piattaforme. Per Timmy, significa che posso scrivere gran parte della logica una sola volta e usarla su Android e iOS. Timmy è disponibile su Android e la versione iOS è quasi pronta per il rilascio. Meno codice duplicato significa meno punti in cui possono insinuarsi bug.

In sintesi

La regola tecnica è semplice: Timmy dovrebbe gestire solo i dati di cui ha davvero bisogno. WebRTC protegge i contenuti multimediali, Firebase coordina la configurazione della connessione, TURN vede solo pacchetti crittografati e Nearby Connections rende l'abbinamento più semplice.

La buona tecnologia sa quasi scomparire nella vita quotidiana. Funziona senza trasformare la cameretta in un progetto nel cloud.


Altri articoli