提到WebRTC大多数人会想到视频通信。而家庭监视通常与视频流相关联。这就是为什么我听到一个家庭安全项目不是将WebRTC用于视频流,而是DataChannel时很惊讶的原因。WebRTC的DataChannel可能不能实现视频通话,但是如您所见,它可以很方便地设置端到端的信息传输。
IvelinIvanov是RedHat、Mobicents和Telestax等各种项目和组织的长期开源贡献者。最近他试着通过一个新的开源项目——Ambianic解决一些家庭物联网隐私问题。这个项目包含许多有趣的东西,比如RaspberryPi的计算机视觉(这是我最喜欢的主题之一)。但是这篇文章主要是关于他谈论如何在他的项目构架中使用WebRTC和DataChannel。
如今家庭监视系统很流行,它易于安装和使用。用户通过一个手机应用程序就能查看谁在自己家门口。如果你要云备份,缴纳注册费即可。看起来很完美,但需要担心的是疏于管控的隐私泄露问题。在本文中,我将深入探讨利用WebRTC去阻止数据敏感的数据存储在用户不直接控制的设备上,以及其技术设计和实施方案。
说明
首先我要说明的是:我并不是想实现Ring的另一种变体。的确,当我开始该项目时我考虑过这样做,但是我并不会将其系统安装在自己家里,所以我否决了这个方案。
因为我不喜欢那些我外出时不请自来拜访我家的人。如果是我的朋友,他们会知道怎么找到我。另外,我也没有兴趣观看大多时候平静无波的监控录像。
我真正想要的是一个能告知我关乎我切身利益的事情的系统。也就是说这个系统要观察那些有意义的动作。比如我想知道:
- 今天UPS给我发短信说我的快递送到了,那么快递放到我家了还是又放在我邻居那里了?
- 有人偷走我门前的快递包裹了吗?
- 当我晚上睡着了,我的孩子是不是假扮僵尸玩呢?
由于此数据属于我个人所有,因此未经我的明确许可,不得共享、泄露或出售。
高层架构
我最终得出一个三层体系结构:
- 边界物联网设备(RaspberryPi、gstreamer、Python、TensorFlowLite、aiortc)
- 在与我的相机相同的局域网上运行;
- 不断观察相机的视频流;
- 偶尔推断出值得我关注的有趣事件;
- 存储观测值并将事件发送到我的手机;
- 用户界面(即手机浏览器)
- 不论何地都可访问Progressive Web App (PWA) ;
- 能够与边界设备安全直接通信;
- 可作为本地应用程序安装在电脑和手机上;
- 将我最喜欢的事件时间轴存储在本地数据库中;
- 通讯层(基于WebRTC的REST)
- UI应用程序与Edge设备之间的安全端对端数据通道;
- 启用UI应用程序以将Edge设备设为常规REST服务;
- 启用Edge设备使其通过纯REST接口提供数据;
- 隐私保护信令——即无法识别具有实际地址或个人的端。
信令流
系统的信令部分主要负责两部分:
- 用户的UI应用程序与Edge设备之间的初始发现和配对;
- UI和Edge之间的代理条款,用于连续的端对端(p2p)会话;
发现设备和配对
初始发现部分依靠类似于蓝牙的物理接近度和信任。但是网络浏览器尚不支持蓝牙、zeroconf、mDNS或任何其他标准的p2p配对协议。我的下一个设想是通过sharedrop.io成功实现的。他们将其称为“AppleAirDrop的HTML5克隆体”。
这个设想基于两个重要假设:
- 用户仅允许在其本地家庭网络上使用受信任的设备。
- 连接在同一局域网上的设备共享相同的公用IP以进行Internet通信。共享的公共IP不必是永久的。它仅在初始配对期间使用几秒钟。
两种假设都很实用。但是一些用户的家庭网络安全性仍然很差。对于用户的满不在意我们也没有办法。
文章地址:https://webrtchacks.com/private-home-surveillance-with-the-webrtc-datachannel/
原文作者:chad hart