问题所在:盲目信任
安装宝宝监护应用时,你就让它接触到一个非常私密的空间:宝宝的房间。 应用会收听声音,有时也会查看画面。与此同时,父母往往无从了解后台发生了什么:音视频流是否经过第三方服务器?是否收集使用数据?从技术上讲,谁可以访问相关内容?
坦白说,很多应用的情况你无从得知。代码是封闭的,架构也只是厂商的一面之词。最终,用户只能选择相信服务商。
代码封闭,防线大开
近年来,宝宝监护器被黑客入侵的报道已经不少。陌生人可能偷听、操控摄像头,或通过扬声器说话。 大多数时候,这并不是什么高深攻击,而是严重的基础问题:连接未加密、使用默认密码、缺少身份验证。
对于专有软件,外部人员往往要等到出事后才会发现这些弱点。 安全研究人员、独立开发者和父母只能从外部面对一个已完成的产品。对于放在宝宝房间里的设备来说,这种模式并不可靠。
把透明度作为安全原则
信息安全领域有一条经典而实用的原则: 柯克霍夫原则。 安全性不应依赖于设计细节不被公开。即使别人知道系统的构建方式,它也应当保持安全。
代码公开并有文档说明,并不会自动让软件变得安全,但能让相关主张得到核查。 熟悉这一领域的人可以检查数据流、密钥派生方式和相关规则,而不只是阅读营销文案。
Timmy 的做法:将安全核心分离出来
在 Timmy 中,我现在会非常明确地区分哪些部分真正与安全息息相关。 并非每一行界面代码都会决定产品是否值得信任。真正关键的是后端逻辑、信令约定、配对加密,以及哪些数据会传到服务器。
因此,安全核心现已放在公开的 baby-monitor-timmy-core 仓库中。 目前完整的应用代码尚未公开。安全关键模块已从界面和产品逻辑中拆分出来,以便单独编写文档并接受审查。
具体来说,这意味着什么?
- 边界清晰: 安全模块与界面及产品逻辑相互分离。
- 可审计的数据流: 可以为配对、信令和后端接口单独编写文档。
- 没有隐藏追踪器: 关键路径中只包含技术上应当位于其中的内容。
- 便于长期维护: 独立核心比杂乱无章的一体化代码更容易审查。
结论:父母理应获得公开透明的信息
当一款应用可以进入宝宝的房间时,它应当清楚回答几个关键问题:会产生哪些数据?数据会去哪里?谁能读取它们? 父母需要的不只是页脚里的一枚隐私徽章。
Baby Monitor Timmy 应当表明,优秀的产品与可审计的安全机制可以兼得。 对我来说,这并不意味着公开应用的每个角落,而是公开决定配对、信令、后端访问和数据流的那些部分。