安全性說明

Meari 嬰兒攝影機安全漏洞:Timmy 有何不同

Meari 事件顯示,登入介面做得再完善也不夠。嬰兒監視器的安全性取決於系統架構、授權機制與金鑰管理。

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 裡?
  • 訊息代理是否只能傳遞屬於你實際擁有裝置的訊息?
  • 配對時,人是否能察覺中間人攻擊?

閱讀程式碼

資料來源