专家详解Oculus摄像头的运作原理及黑客攻击风险
本文相关引用及参考:vice
Oculus的传感器可以用于拍摄图片,所以有人担心黑客或许可以从此入手,记录我们在虚拟世界中的一举一动。
(映维网 2017年2月6日)此前有报道称Oculus的传感器可以用于拍摄图片,所以有人担心黑客或许可以从此入手,记录我们在虚拟世界中的一举一动。
但我们是否是过分担心呢?Motheboard日前采访了Oculus Rift传感器可用来捕捉用户图像的发现者——美国加州大学戴维斯分校的研究员Oliver Kreylos。下面是映维网整理的采访片段:
问:与Vive的Lighthouse传感器相比,Oculus的定位追踪方法是否比较马马虎虎,还是说它具备自己的优点?Oculus是否值得在产品中冒这种风险呢?
Kreylos:这个问题涉及面很广,所以我先进行一些背景说明。摄像头和追踪标识器(如Oculus的LED)在3自由度和6自由度追踪中有着悠久的历史。几乎所有高端的动捕系统都基于这种方法。这是Wiimote(Wii手柄)追踪的基础,同时多年来一直以NaturalPoint的TrackIR头部追踪器形式用于PC游戏。
这种方法之所以会如此流行(尤其是在业余爱好者群体中),是因为它可以提供高质量的效果,同时不需要太多的定制硬件。摄像头十分普遍,价格亲民。其他唯一的刚性需求硬件是追踪标识器,但即使是业余爱好者也能制造,而其他的事情都是通过软件实现。
当Oculus为Rift DK2寻找一套优秀而且廉价的6自由度追踪系统时,摄像头是一个明显而又最为合适的选择。但Oculus没有采用标准的做法,而是通过可向摄像头识别自己的追踪LED来显着降低标准算法的计算负荷。因此,DK2追踪系统超乎了许多人的预期,包括我自己。
当Oculus从DK2转向CV1(第一代消费者版本)时,沿用已被证明的追踪系统,并通过采用更好的硬件(高分辨率摄像头,使用全局快门而非滚动快门)来进行优化,这也是一个合理的工程决定。从纯技术观点上看,这是一个正确的选择。虽然存在一定的问题,但Oculus的Constellation是一个优秀的6自由度追踪系统。由于Constellation比较闭合,我并没有像对Valve的Lighthouse系统一样进行详尽的分析,但我预期两者在质量不相上下。
我认为Lighthouse更为优雅,它采集的原始数据更少,计算处理也更少,并能实现相同的效果。两个系统的定位计算算法的基本输入是,从中心点(摄像头焦点或Lighthouse基站中心)开始的三维射线,并指向空间中的追踪LED或光电二极管。Constellation通过捕获高分辨率图像,将它们传输至主机PC,找到这些图像中的亮像素的斑点,以及计算它们的中心(x,y)位置来得出这些射线。Lighthouse也是一样:当扫描激光与光电二极管(将光转换成电流的装置)相遇,根据激光器的已知角速度将时间转换成角度,并将所得到的角度发送到主机PC时,然后Lighthouse系统就会进行相应地计算。Constellation需要向主机发送大约60MB的数据,这给主机的USB子系统带来了严重的压力,而Lighthouse发送的数据很少(我估计只有几十KB),它可以实现无线传输同时不会导致什么问题。
但这并不意味着Constellation是马马虎虎的系统。在开发出来时这是最先进的系统,但Valve后来推出了一套令人意想不到的,更为优雅的系统,而Oculus要更换已经太晚了。这是一个创新,我并不认为有任何人预见Lighthouse系统的到来。
Constellation的主要缺点是,由于较高的USB带宽要求,导致某些用户在使用过程中会出现问题。另一个非技术性的缺点是,从数个摄像头向主机PC发送高分辨率的图像,而且这些摄像机必须被放置在几乎理想的位置。我个人认为,一些黑客攻击者获得这些图像的风险性很小,但我不能否认,这在理论上存在可能。
在这一点上Oculus可以采取不同的做法以避免这个问题。我之前提到的Wiimote同样是通过摄像头进行追踪。但跟Constellation不同,Wiimote不会向主机发送图像。将图像转换为(x,y)LED位置的步骤在摄像头芯片本身内部进行,由定制的芯片完成。如果Oculus采用了这种方法,并将这样的ASIC(专用集成电路或具有特定用途的定制电路)集成到摄像头本身,他们就可以避免Constellation的问题。它可以把从摄像头到主机的带宽减少约1000倍(解决大多数用户的问题),同时其他人不可能窥探发送的图像,因为图像将永远不会被发送到主机PC。
我不知道你是否能将其称作“马马虎虎”,在一定程度上Oculus的工程师忽略了可能存在的隐私问题,或者这是他们在经过衡量之后才做出的决定。但把图像发送至主机存在多个好处:设计ASIC需要时间和金钱,软件解决方案更灵活,更容易随着时间进行改进。Oculus目前可能正在研究算法,使用摄像头图像来追踪LED之外的对象,例如通过Leap Motion或Kinect来把用户的手部,或甚至是全身带进VR。
除此之外,Oculus一直将CV1摄像头称为“传感器”,而不是“摄像头”,并一直坚持认为它们跟摄像头不一样。最初这使得我认为他们确实有将图像处理ASIC集成到摄像头,但结果并非如此。
问:是否可以通过Vive的传感器来捕获“图像”,即使不借助传统的摄像头?
Kreylos:Lighthouse本身不会收集任何能够重建用户环境或用户本身图像的数据。从Lighthouse可被追踪设备发送到主机PC的唯一数据是时间戳,在该时间戳处,可被追踪的各个光电二极管与扫描激光以及来自可被追踪的集成惯性测量单元的样本相遇,这些加在一起就允许系统在3D空间中建立可被追踪的位置和方向。理论上,通过在长时间段内观察所有可被追踪物的位置,你可以重建用户环境的粗略3D模型,但也仅此而已。
Vive头显确实搭载了一个前置摄像头,它是一个标准的网络摄像头,并且连接至主机PC的操作系统。因此,该摄像头跟其它所有的网络摄像机一样容易受到攻击。跟Constellation不同,Vive系统的运作并不需要这个摄像头,如果用户担心隐私问题可以使用胶布盖住摄像头。
问:获得可识别图像这一过程的复杂性(和硬件的可用性的相对限制)足以劝阻黑客大规模入侵传感器吗?
Kreylos:我不能进行判断,因为我不是一名计算机安全专家。我知道有远程攻击者访问网络摄像机的真实案例,但我不清楚这些攻击是如何实现的,以及这些方法是否适合Constellation摄像头。我所遵循的方法很简单,但可能不适用于远程攻击者,因为它需要修补Linux内核的网络摄像头驱动程序来识别Constellation摄像头。
我可以说的是,广泛部署的“标准”网络摄像头攻击并不能适用Constellation摄像头,因为它们不会向操作系统“宣称自己是标准的网络摄像头”。如果一个普遍的网络摄像头攻击在Oculus用户的计算机上运行,那这个攻击会找不到网络摄像头。由于Constellation摄像头实际上仍然是标准的网络摄像头,黑客可以修改攻击以瞄准它们,但我不知道这需要多大的修改。
对于潜在攻击者而言,另一个复杂性是:当头显处于活动状态时,Oculus的Runtime软件会使用Constellation摄像头。如果另一个进程已在使用摄像头,则现有的网络摄像机漏洞可能无法接管,或者可能会关闭追踪,这样会警告用户存在“流氓”。此外,每个Constellation摄像头都配有一个指示灯。我不知道这些是否在电路级别绑定到摄像头传感器的操作,但我知道在开始使用软件记录图像时,摄像头的指示灯是亮着的。