Explicații despre securitate

Vulnerabilitatea de securitate a camerei Meari pentru monitorizarea bebelușilor: prin ce se deosebește Timmy

Cazul Meari arată că o autentificare bine pusă la punct nu este suficientă. Securitatea unui monitor pentru bebeluși depinde de arhitectură, autorizare și gestionarea cheilor.

Galaxus a relatat despre înregistrări ale unor camere pentru bebeluși care puteau fi accesate liber, iar The Verge a relatat că au fost afectate aproximativ 1,1 milioane de dispozitive Meari. Pentru mine, concluzia este una sobră: autentificarea nu protejează camera copilului dacă platforma din spatele ei nu separă corect, pentru fiecare dispozitiv, mesajele, imaginile și cheile. Timmy nu rezolvă toate problemele de securitate din lume. Însă secretele esențiale pentru fluxurile audio-video și împerechere ale Timmy nu sunt păstrate într-o platformă cloud pentru camere.

Ce pare să fi eșuat în cazul Meari

Rapoartele publice descriu o platformă de tip white-label, folosită sub mărci diferite. Numeroase mărci cunoscute au vândut camere care depindeau de aceeași infrastructură Meari/CloudEdge. De aceea este important acest incident: când o platformă comună definește greșit limita de autorizare, rezultatul nu este o singură cameră vulnerabilă, ci expunerea unei întregi flote de dispozitive.

Modelul raportat depășește problema parolelor implicite slabe. Sursele descriu mesaje MQTT fără controale suficiente asupra abonamentelor pentru fiecare dispozitiv, URL-uri de imagini accesibile public, mascarea slabă a imaginilor și chei statice sau care pot fi extrase din aplicație. Este o defecțiune a platformei: infrastructura putea dezvălui date care nu ar fi trebuit să fie disponibile niciodată unui alt cont.

Riscurile camerelor conectate la cloudSoluția alternativă adoptată de Timmy
Sistemul backend stochează sau distribuie evenimente care conțin imagini.Timmy nu are o arhivă cloud pentru imaginile din camera copilului; fluxurile audio-video sunt transmise în direct prin WebRTC.
Un broker sau un spațiu de stocare trebuie să autorizeze corect fiecare dispozitiv, fără nicio eroare.Firestore transportă numai datele de împerechere și semnalizare; datele SDP și ICE sunt criptate înainte de a fi scrise.
Cheile statice pot afecta o întreagă flotă de dispozitive.Pentru fiecare împerechere, dispozitivele generează o cheie proprie, derivată prin ECDH P-256.
Folosirea unui releu poate fi confundată cu accesul la fluxurile audio-video.TURN redirecționează pachetele SRTP criptate, dar nu primește cheile necesare pentru decriptarea fluxurilor audio-video.

Cum generează Timmy valoarea secretă

Codul Timmy din patru caractere nu este secretul propriu-zis. În implementare, el servește doar drept punct de întâlnire pentru cele două dispozitive. meetingKey Astfel, ambele dispozitive pot găsi același schimb de chei publice în Firestore. Cheile private ECDH nu părăsesc niciodată dispozitivele.

Apoi, ambele dispozitive calculează același secret partajat prin ECDH P-256. Cheia de împerechere este derivată local. Codul SAS din două cifre este derivat din secretul partajat și din cele două chei publice ordonate. Dacă schimbul de chei este manipulat, dispozitivele afișează numere diferite, indicându-le utilizatorilor că nu trebuie să confirme împerecherea.

sequenceDiagram
    participant Baby as Baby device
    participant Firestore as Firestore meeting point
    participant Parent as Parent device
    participant Turn as TURN relay

    Baby->>Baby: Generate P-256 ECDH keypair
    Parent->>Parent: Generate P-256 ECDH keypair
    Baby->>Firestore: Write public key only under meetingKey
    Parent->>Firestore: Write public key only under meetingKey
    Firestore-->>Baby: Parent public key
    Firestore-->>Parent: Baby public key
    Baby->>Baby: Compute sharedSecret + SAS
    Parent->>Parent: Compute sharedSecret + SAS
    Baby-->>Parent: Humans compare SAS on both screens
    Baby->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
    Parent->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
    Baby-)Turn: WebRTC media as DTLS/SRTP packets
    Turn-)Parent: Relay forwards encrypted packets
    Note over Turn: TURN sees network metadata, not media keys
        

Lanțul de securitate Timmy, pe scurt: Firestore servește drept punct de întâlnire și transport pentru semnalizare; TURN este doar un releu; fluxurile audio-video rămân criptate prin WebRTC.

De ce fluxurile WebRTC nu pot fi urmărite pe ascuns

WebRTC nu înseamnă doar „trimite semnalul video”. Înainte de transmiterea fluxurilor audio-video, dispozitivele efectuează o negociere DTLS. Cheile SRTP pentru sunet și imagine sunt derivate din acest canal securizat. Pachetele audio-video sunt apoi criptate prin SRTP. Un server TURN poate redirecționa aceste pachete, dar nu primește cheile necesare pentru a le decripta conținutul audio sau video.

Timmy adaugă înaintea acestui proces încă un nivel de protecție: datele de semnalizare, precum ofertele SDP, răspunsurile SDP și candidații ICE, sunt criptate cu AES-256-GCM înainte de a ajunge în Firestore. Firestore ajută dispozitivele să negocieze conexiunea; nu este destinat să conțină fluxuri video sau audio necriptate ori date de semnalizare în clar.

Ce nu pretinde Timmy

Niciun monitor pentru bebeluși serios nu ar trebui să pretindă că este imposibil de compromis. Dacă un telefon este compromis, orice aplicație instalată pe el poate fi atacată. O versiune malițioasă a aplicației schimbă modelul de risc. Configurația serverului trebuie să rămână corectă. Afirmația mai restrânsă a Timmy ține de arhitectură: evită păstrarea în backend a unor imagini sau înregistrări din camera copilului care ar putea fi citite acolo și permite inspectarea logicii de împerechere esențiale pentru securitate în proiectul public Timmy Core.

Întrebări de pus despre orice cameră pentru bebeluși

  • Furnizorul stochează imagini sau clipuri?
  • Adresele URL ale fluxurilor audio-video sunt private, au o durată de viață scurtă și sunt autorizate separat pentru fiecare dispozitiv?
  • Cheile sunt generate pentru fiecare dispozitiv sau împerechere, în loc să fie statice în aplicație?
  • Poate un broker să livreze mesaje doar pentru dispozitivul pe care îl dețineți efectiv?
  • Procesul de împerechere îi permite utilizatorului să observe o tentativă de atac de tip man-in-the-middle?

Citește codul

Surse