Galaxus 報導,有些嬰兒攝影機錄影可被自由存取;The Verge 報導約有 1.1 百萬台 Meari 裝置受影響。對我來說,這件事帶來的教訓務實而明確:如果背後平台沒有依裝置確實分開訊息、影像或金鑰,登入機制也保護不了嬰兒房。Timmy 無法解決世上所有資安問題,但 Timmy 的關鍵媒體祕密與配對祕密不會存放在雲端攝影機平台中。
Meari 事件中似乎出了什麼問題
公開報導指出,這是一個白牌平台。許多可見品牌販售的攝影機都依賴同一套 Meari/CloudEdge 基礎架構。因此這起事件格外重要:當共用平台錯誤劃定授權界線,暴露的就不只是一台安全性較弱的攝影機,而是整批裝置。
報導中的問題不只是預設密碼太弱。消息來源描述了缺乏足夠單一裝置訂閱控管的 MQTT 訊息、可公開連線的影像 URL、薄弱的影像混淆,以及固定或可從 App 擷取的金鑰。這是平台層級的失敗:基礎架構可能洩露本不該提供給其他帳戶的資料。
| 雲端攝影機的風險 | Timmy 的對應設計 |
|---|---|
| 後端會儲存或分發影像事件。 | Timmy 不會在雲端保存嬰兒房影像;媒體採用即時 WebRTC 傳輸。 |
| 訊息代理或儲存桶必須完美地為每台裝置進行授權控管。 | Firestore 只傳遞配對與訊號資料;SDP/ICE 在寫入前就已加密。 |
| 固定金鑰可能影響整批裝置。 | 每次配對都會在裝置上建立各自的 P-256 ECDH 衍生金鑰。 |
| 中繼路徑可能被誤認為能存取媒體。 | TURN 只會轉送已加密的 SRTP 封包,不會取得媒體金鑰。 |
Timmy 如何建立祕密
四個字元的 Timmy 代碼刻意不作為祕密。在程式中,它只是個會合點:App 會從中衍生出一個 meetingKey ,讓兩台裝置能找到同一個 Firestore 公開金鑰交換。私有 ECDH 金鑰永遠不會離開裝置。
接著,兩台裝置會計算出相同的 P-256 ECDH 共享祕密。配對金鑰會在本機衍生;兩位數 SAS 則由共享祕密和兩個排序後的公開金鑰衍生而來。若這次金鑰交換遭到竄改,兩台裝置會顯示不同數字,提醒使用者不要確認配對。
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
簡化版 Timmy 安全鏈:Firestore 用於會合與訊號傳遞;TURN 只是中繼;媒體會以 WebRTC 加密保護。
為什麼 WebRTC 媒體無法被悄悄觀看
WebRTC 不只是「傳送影片」。在媒體開始傳輸前,裝置會進行 DTLS 握手。音訊與視訊的 SRTP 金鑰會從這條安全傳輸連線衍生,之後媒體封包會以 SRTP 加密。TURN 伺服器可以轉送這些封包,但不會取得解開音訊或視訊所需的金鑰。
Timmy 在此之前還多加了一層:SDP offer、SDP answer 與 ICE candidate 等訊號資料,在送到 Firestore 前會先以 AES-256-GCM 加密。Firestore 協助裝置協商連線;它並不是用來存放明文視訊、音訊或明文訊號資料的地方。
Timmy 仍不會宣稱的事
沒有任何認真的嬰兒監視器應宣稱自己無法被駭。如果手機遭入侵,任何 App 都可能受到攻擊;惡意修改的 App 版本也會改變風險模型。伺服器設定仍必須正確。Timmy 的主張更聚焦於架構:避免讓後端可讀取嬰兒房媒體資料,並讓安全關鍵的配對邏輯能在公開核心專案中檢視。
選購任何嬰兒攝影機時該問的問題
- 廠商是否儲存影像或影片片段?
- 媒體 URL 是否私密、有效期短,並依裝置個別授權?
- 金鑰是否依每台裝置或每次配對產生,而非固定寫在 App 裡?
- 訊息代理是否只能傳遞屬於你實際擁有裝置的訊息?
- 配對時,人是否能察覺中間人攻擊?
閱讀程式碼
資料來源
- 嬰兒攝影機錄影可被自由存取 · Galaxus
- 駭客可輕易觀看百萬台嬰兒監視器與安全攝影機 · The Verge
- 沒人該把寶寶晾在角落 · Sammy Azdoufal
- 同一事件的家長指南 · Baby Monitor Timmy