Voyager 1和Voyager 2于1977年发射,是少数进入星际空间的航天器中的两个。另外两个(Pioneer 10和Pioneer 11)早几年发射,现已废弃并与地球失去通信,而New Horizons则新得多,于2006年发射。
旅行者系列搭载的计算机以现代标准来看简直古老至极。它们由一组相互连接的系统组成,合计——合计!——只有32KB内存。凭借这些内存,它们驱动一系列科学仪器并与地球通信。它们是定制硬件,而非现成电子设备,并保持着连续运行时间最久计算机的世界纪录,自1977年以来一直不间断通电。CPU运行频率约为250KHz,比Commodore 64慢四倍。
实际上并没有真正的操作系统,而是一组执行特定功能的不同集成电路。这种设计更像是一组Arduino板,而不是Raspberry Pi。
有趣的是,它本身没有加密或认证。旅行者号设计于20世纪70年代。它没有类似这样的机制:HMAC(command, secret_key),即航天器通过密码学方式证明该命令是由NASA授权的。
这引出了一个显而易见的问题:为什么旅行者号没有被黑客入侵?
障碍
首先,攻击者必须将信号发送到任一旅行者号,这并非易事。一个国家级行为体可能做到,但普通人需要花很多钱建造一个非常大、非常精确的发射器。航天器在数十亿英里之外,合法信号必须仔细定向和调制。地球上的人确实可以建造一个能够向相关频率注入能量的发射器,但这更像是亿万富翁的秘密黑色项目,而不是孩子用邮购电子零件拼装出来的东西。
NASA的深空网络(Deep Space Network)使用巨大的天线和非常灵敏的接收器与旅行者号通信。航天器自身的发射器功率仅在几十瓦左右,但DSN是专门为处理极弱信号而设计的。
攻击者要成功注入命令,需要传输一个航天器接收器能真正识别为命令的信号。而且由于航天器在数十亿英里之外,这不像攻击近地轨道卫星那样简单。
你需要:
正确的频率、调制方式、数据速率等。
正确的命令协议、航天器寻址。
足够的发射器功率,以及将天线精确指向数十亿英里外一个小小物体的能力。
了解航天器当前的命令状态/协议。
当然,将信号送入DSN并让DSN替你发送是一条捷径,但那样你会面对现代网络安全(很可能还有物理隔离)。此外,从DSN向旅行者号发送信号并不是频繁进行的事情。当它启动发送信号时,很多人都会注意到。
你还必须知道命令格式。没有像这样的语言:TURN ENGINE ON 命令被编码到特定的遥测/命令协议中,并以适当的数据速率和调制方式传输。NASA的命令系统使用高度结构化的命令序列,具有特定于航天器的寻址和验证机制。这是为了过滤掉随机的无线电噪声或干扰,但也意味着任何消息都必须精确无误。
事实上,你要发送的是汇编语言命令。你可以在这里找到一个模拟器,它展示了NASA如何与旅行者号通信。它不是发送TURN ENGINE ON,而是像这样的命令:MLD VAL2 ; Load $55AA into RA (while still in lower bank)
获取1977年公布的规格并不难。但要了解2026年系统处于什么状态,以便你的命令不会被判定为无效,是不可能的。
黑客入侵旅行者号可能吗?
安全模型并不是“用密码学方式证明这条命令来自NASA。”而是“只有拥有极其强大的地面站、并且懂得如何说旅行者号命令语言的人,才现实地有可能做到这一点。”
例如,像俄罗斯或中国(或法国、英国、日本)这样的国家行为体能否入侵旅行者号?我看不出为什么不能。他们有技术和资源。当然,他们没有任何动机这样做。这样的攻击所能达到的只是让美国和全球科学界愤怒。唯一会有动机的人是虚无主义者和寻求关注的黑客,而他们没有资源。
所以旅行者号是安全的,因为保护更多在于黑客所需的规模,而不是任何特定的安全协议。
原文链接:https://lowendbox.com/blog/why-havent-the-voyager-spacecraft-ever-been-hacked/
