Galaxus kertoi vapaasti saatavilla olleista vauvakameroiden tallenteista, ja The Verge raportoi noin 1,1 miljoonasta Meari-laitteesta. Minulle opetus on selvä: kirjautuminen ei suojaa lastenhuonetta, jos sen taustalla oleva alusta ei erota viestejä, kuvia tai avaimia selkeästi laitekohtaisesti. Timmy ei ratkaise kaikkia maailman tietoturvaongelmia. Mutta Timmyssä kriittiset media- ja pariliitossalaisuudet eivät sijaitse pilvikamera-alustalla.
Mikä Meari-tapauksessa näyttää menneen pieleen
Julkisten raporttien mukaan kyse oli white-label-alustasta. Monet näkyvät brändit myivät kameroita, jotka perustuivat samaan Meari/CloudEdge-infrastruktuuriin. Siksi tapaus on merkittävä: kun yhteinen alusta määrittää valtuutusrajan väärin, seurauksena ei ole yhden heikon kameran ongelma vaan koko laitekannan laajuinen altistuminen.
Raportoitu ongelmakuvio menee heikkoja oletussalasanoja pidemmälle. Lähteiden mukaan MQTT-viesteissä ei ollut riittäviä laitekohtaisia tilausten rajoituksia, kuvien URL-osoitteet olivat julkisesti saavutettavissa, kuvien peittaus oli heikkoa ja avaimet olivat staattisia tai sovelluksesta poimittavissa. Kyse on alustatason virheestä: infrastruktuuri saattoi paljastaa tietoja, joiden ei olisi koskaan pitänyt olla toisen tilin saatavilla.
| Pilvikameroiden riskit | Timmyn vastamalli |
|---|---|
| Taustajärjestelmä tallentaa tai välittää kuvatapahtumia. | Timmyssä ei ole pilviarkistoa lastenhuoneen kuville; media välitetään suorana WebRTC-yhteytenä. |
| Välittäjäpalvelimen tai tallennussäilön on valtuutettava jokainen laite virheettömästi. | Firestore välittää vain pariliitos- ja signalointitietoja; SDP/ICE salataan ennen tallennusta. |
| Staattiset avaimet voivat vaikuttaa koko laitekantaan. | Jokainen pariliitos luo laitteille oman P-256 ECDH:sta johdetun avaimen. |
| Releyhteys voidaan erehtyä luulemaan mediapääsyksi. | TURN välittää salattuja SRTP-paketteja, mutta ei vastaanota media-avaimia. |
Miten Timmy luo salaisuuden
Nelimerkkinen Timmy-koodi ei tarkoituksella ole salaisuus. Se toimii vain kohtaamispaikkana: sovellus johtaa siitä tunnisteen meetingKey , jonka avulla molemmat laitteet löytävät saman Firestoressa tapahtuvan julkisten avainten vaihdon. Yksityiset ECDH-avaimet eivät koskaan poistu laitteilta.
Molemmat laitteet laskevat sitten saman P-256 ECDH -jaetun salaisuuden. Pariliitosavain johdetaan paikallisesti. Kaksinumeroinen SAS johdetaan jaetusta salaisuudesta sekä molemmista järjestetyistä julkisista avaimista. Jos avaintenvaihtoa peukaloidaan, laitteet näyttävät eri numerot, mikä kertoo käyttäjille, ettei pariliitosta pidä vahvistaa.
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
Yksinkertaistettu Timmyn tietoturvaketju: Firestore toimii kohtaamis- ja signalointiväylänä, TURN on vain rele ja media pysyy WebRTC-salattuna.
Miksi WebRTC-mediaa ei voi katsella huomaamatta
WebRTC ei ole vain ”lähetä videota”. Ennen kuin media liikkuu, laitteet tekevät DTLS-kättelyn. Äänen ja videon SRTP-avaimet johdetaan tästä suojatusta siirtoyhteydestä. Mediapaketit salataan sitten SRTP:llä. TURN-palvelin voi välittää nämä paketit, mutta se ei saa äänen tai videon avaamiseen tarvittavia avaimia.
Timmy lisää tätä ennen vielä yhden kerroksen: signalointitiedot, kuten SDP-tarjoukset, SDP-vastaukset ja ICE-ehdokkaat, salataan AES-256-GCM:llä ennen kuin ne päätyvät Firestoreen. Firestore auttaa laitteita neuvottelemaan yhteyden; sinne ei ole tarkoitus tallentaa selväkielistä videota, ääntä tai signalointia.
Mitä Timmy ei silti väitä
Yksikään vakavasti otettava vauvavalvontaratkaisu ei voi väittää olevansa mahdoton murtaa. Jos puhelin on vaarantunut, mitä tahansa sovellusta voidaan hyökätä vastaan. Haitallinen sovellusversio muuttaa riskimallia. Palvelinasetusten on pysyttävä oikeina. Timmyn rajatumpi väite koskee arkkitehtuuria: se välttää taustajärjestelmän luettavissa olevia lastenhuoneen mediajälkiä ja tekee tietoturvakriittisen pariliitoslogiikan tarkasteltavaksi julkisessa ydinprojektissa.
Kysymyksiä, jotka kannattaa esittää mistä tahansa vauvavalvontakamerasta
- Tallentaako toimittaja kuvia tai videoleikkeitä?
- Ovatko mediaosoitteet yksityisiä, lyhytkestoisia ja laitekohtaisesti valtuutettuja?
- Luodaanko avaimet laite- tai pariliitoskohtaisesti sen sijaan, että ne olisivat staattisia sovelluksessa?
- Voiko välittäjäpalvelin välittää viestejä vain laitteelle, jonka todella omistat?
- Antaako pariliitos käyttäjälle mahdollisuuden huomata väliintulohyökkäys?
Lue koodi
- ECDH ja SAS Timmy Coressa
- Tapaamisavain, asiakirja-avain ja AES-GCM
- Firestoren säännöt istunnoille ja pariliitokselle
- Tietoturvadokumentaatio ydinprojektissa
Lähteet
- Vauvakameroiden tallenteet vapaasti saatavilla · Galaxus
- Miljoona vauvavalvontalaitetta ja turvakameraa oli hakkereiden helposti katseltavissa · The Verge
- kukaan ei laita vauvaa nurkkaan · Sammy Azdoufal
- Vanhempien opas samasta tapauksesta · Baby Monitor Timmy