Blog

Como funciona tecnicamente Baby Monitor Timmy

WebRTC, Firebase e protección de extremo a extremo, explicados sen néboa de palabras de moda.

Tres pezas fundamentais, un obxectivo

Por dentro, Timmy está feito dun xeito bastante práctico: Flutter para a aplicación, WebRTC para o audio e o vídeo en tempo real, e Firebase para a coordinación. Non quería crear unha plataforma enorme que o pase todo pola nube. Cada parte debe saber o menos posible e, aínda así, funcionar de forma fiable coas demais.

WebRTC: conexión directa, cifrada por defecto

WebRTC (Web Real-Time Communication) leva o audio e o vídeo entre os dispositivos do bebé e dos pais. No mellor dos casos, os datos circulan directamente entre os dous dispositivos, de igual a igual, sen ningún servidor multimedia polo medio.

Cada conexión WebRTC usa DTLS-SRTP por defecto. Se alguén captura paquetes de rede, non obterá audio nin vídeo que se poida ler. Este cifrado forma parte do protocolo e non se pode desactivar sen máis en WebRTC.

Para min, este era o punto importante: o contido da habitación do bebé non debe estar no meu servidor. Queda entre os teus dispositivos.

Sinalización mediante Firebase Firestore

Antes de que WebRTC poida comezar, os dispositivos teñen que atoparse e negociar como poden conectarse. Esta parte chámase sinalización. Timmy usa Firebase Firestore, a base de datos na nube de Google, para facelo.

Só se intercambian datos técnicos da conexión:

O audio e o vídeo non chegan a Firebase. Firestore só transporta os datos técnicos da conexión. Timmy tamén cifra esta capa de sinalización, para que Firestore non se converta nun punto de encontro en texto claro para SDP e ICE.

Servidores TURN: cando a ruta directa non funciona

Algunhas redes bloquean as conexións directas, por exemplo, os cortalumes estritos ou determinadas operadoras móbiles. Nese caso, WebRTC necesita un relé TURN (Traversal Using Relays around NAT).

Timmy proba primeiro o servidor TURN local e usa Cloudflare como alternativa cando o relé local non está dispoñible ou está sobrecargado. O relé reenvía paquetes cifrados. Non recibe as claves do son nin do vídeo; o cifrado de WebRTC mantense intacto.

As credenciais TURN proceden dunha Firebase Cloud Function e só son válidas durante 24 horas. As credenciais permanentes nunha aplicación de vixilabebés pareceríanme demasiado arriscadas.

Nearby Connections: os dispositivos atópanse automaticamente

Para evitar pasos de configuración incómodos entre o dispositivo do bebé e o dos pais, Timmy usa Nearby Connections. Google ofrece esta capa de detección mediante Bluetooth e WiFi.

O emparellamento automático en Timmy funciona sen introducir códigos manualmente: os dispositivos detéctanse e atopan o mesmo punto de encontro para o intercambio de claves. Se isto falla, hai un código de 4 caracteres que podes escribir. O código de emparellamento nunca sae do dispositivo; Firestore só ve un hash criptográfico (SHA-256) como identificador do documento.

Autenticación anónima

Timmy usa a autenticación anónima de Firebase. No primeiro inicio, cada dispositivo recibe un ID temporal e anónimo. Non hai conta, enderezo de correo electrónico nin contrasinal. O ID só serve para aplicar as regras de Firestore: só os dispositivos autenticados poden ler ou escribir datos de sesión.

A arquitectura: quen envía e quen recibe

Timmy ten dous modos:

Os controis, como pulsar para falar e activar ou desactivar a cámara, usan un DataChannel, outra canle de WebRTC que envía pequenas mensaxes cifradas directamente entre dispositivos.

Por que Flutter?

Flutter é o framework de Google para aplicacións en varias plataformas. Para Timmy, isto significa que podo escribir gran parte da lóxica unha soa vez e usala en Android e iOS. Timmy está dispoñible en Android e a versión para iOS está a piques de saír. Menos código duplicado significa menos lugares onde poden aparecer erros.

Resumo

A regra técnica é sinxela: Timmy só debe tocar os datos que realmente necesita. WebRTC protexe o contido multimedia, Firebase coordina a configuración da conexión, TURN só ve paquetes cifrados e Nearby Connections fai máis sinxelo o emparellamento.

A boa tecnoloxía intégrase un pouco na vida diaria. Funciona sen converter o cuarto do bebé nun proxecto na nube.


Máis artigos