建立过程如下:
首先,山岳智械从它巨大的数据库中调取一份星盟时期的通讯协议标准文档,发送给远征君王。发送的方式不是通过无线信号——那太容易被窃听——而是通过一具次级躯体,拿着一块物理存储介质,走到远征君王面前,递过去。
那是一块巴掌大小的金属板,表面光滑如镜,没有任何接口。远征君王接过来,用自己的传感器阵列扫描金属板的表面。在纳米尺度上,金属板的表面蚀刻着密密麻麻的数据纹路——那是星盟时期的标准数据存储格式,每一平方毫米可以存储相当于星火帝国一整个城市图书馆的数据量。
远征君王的处理器开始读取这些数据。它的传感器阵列发射极细的激光束,扫描金属板表面的每一个纳米,将那些蚀刻转化为二进制数据。这个过程用了三个小时——不是因为它慢,而是因为它需要确保每一个比特都读取准确,没有任何误差。
读取完成后,它用自己的通讯协议生成一份确认回执,同样蚀刻在一块空白金属板上,通过一具次级躯体递回给山岳智械。山岳智械用同样的方式读取确认回执,确认双方使用的通讯协议版本一致。
物理层连接建立。耗时:十二小时。
第二层:加密层握手。
通讯协议一致,不等于可以开始传输数据。还需要建立加密通道。
山岳智械生成一对密钥——公钥和私钥。公钥可以公开,用于加密信息;私钥只有它自己知道,用于解密信息。它将公钥蚀刻在金属板上,通过次级躯体递给远征君王。
远征君王用公钥加密一条测试信息——内容是“确认密钥接收”,然后同样蚀刻在金属板上递回。山岳智械用自己的私钥解密,确认测试信息正确。
然后反过来,远征君王生成自己的密钥对,将自己的公钥递给山岳智械。山岳智械用这个公钥加密一条测试信息递回,远征君王用自己的私钥解密确认。
双向加密通道建立。耗时:二十四小时。
第三层:数据层传输。
现在可以开始传输真正的数据了。但即使有加密通道,也不能简单地“发送”。因为数据量太大,一次性传输风险太高。
数据被分割成无数个小块,每个小块单独加密,单独验证,单独确认。每一块数据在发送前,发送方会生成一个哈希值——类似于数据的“指纹”。接收方接收后,用自己的算法计算接收数据的哈希值,与发送方提供的哈希值比对。如果一致,说明数据在传输过程中没有被篡改;如果不一致,说明数据损坏或被人动过手脚,需要重新发送。
这个过程不是一次性的。每传输一千个数据块,双方会进行一次“完整性校验”——将所有已传输数据的哈希值合并成一个总哈希值,进行比对。如果总哈希值一致,说明这一千个数据块全部正确;如果不一致,说明其中有错误,需要重新传输这一千个数据块。
一次完整的数据交换,往往需要数万次这样的验证。
但这还不是最耗时的部分。
最耗时的,是“语义验证”。
山岳智械的额外验证:
山岳智械是三千年与世隔绝的古老存在。它的思维方式与星火帝国完全不同。当它接收到远征君王发送的数据时,它不仅要验证数据的“完整性”,还要验证数据的“合理性”。
它会问:为什么星火帝国的科技发展路径是这样,而不是那样?为什么他们在某个历史节点做出了某个选择,而不是另一个?他们的数据是否前后矛盾?是否与它数据库中的历史记录冲突?是否存在伪造的痕迹?
每一个问题,都需要远征君王提供更多的数据来佐证。每一份佐证数据,又需要经过同样的三层验证流程。
有一次,山岳智械质疑星火帝国的某个历史记录与它数据库中的记录不符。远征君王花了整整三个月的时间,调取星火帝国各个殖民星球的历史档案,交叉验证,最终证明那份历史记录是正确的,而山岳智械的数据库中的记录是一个常见的转录错误——那个错误发生在三万年前,被无数次复制传播,最终被当作真理保存下来。
山岳智械接受了这个解释。但它要求远征君王提供更多关于那个转录错误的证据,以更新它的数据库。