这个问题需要在精确的定义上做出一些努力。
时间戳是关于证明某些信息在某个日期T的存在。数据只是一堆 0 和 1,它们已经被人们知道了几千年,所以我们需要定义我们的意思:“一些存在的信息”。因此,我们考虑消息的概念:一个比特序列,具有开始、结束和精确定义的内容。时间戳证明在某个日期T,有人将所述序列作为一个整体进行构想。
在RFC 3161 时间戳的情况下,这种“设想”采用摘要的形式,通过加密安全散列函数对消息进行计算。时间戳权威 (TSA) 接收摘要并在包含摘要的结构上计算签名,以及当前日期和时间(如 TSA 所知)。注意细则:TSA 看不到消息本身,只看到其中的哈希值;并且TSA无法知道哈希值是否真的是通过调用所述哈希函数获得的。
因此,精确模型如下:作为某个日期T',呈现消息m和时间戳;时间戳包含某些哈希函数h的日期T和h(m)。这证明了m在日期T的存在,假设h是抗前像性的:如果h(m)在日期T存在,则m在日期T存在,因为前像性抗性意味着在计算上不可行m匹配给定的预先存在的h(m). 此外,TSA 必须知道当前日期和时间,并以防篡改的方式持有私钥。
因此,位置标记需要定义“数据在哪里”的含义。在时间戳的情况下,我们依赖于通过对消息计算散列函数来体现的“预想”。由于可以随意复制数据,因此它没有定义的唯一位置,并且与地理位置无关。
GPS 协议在这里几乎是无关紧要的。这是一种单向协议:卫星发射,但不接收;并且发送的消息不包含任何关于地球上任何东西实际位于何处的信息。位置是根据接收到来自多颗卫星的消息的时间计算的(实际上是来自成对卫星的消息之间的精确时间延迟)。GPS 协议真正定义的唯一位置是卫星本身的位置。因此,您想要以类似 TSA 的方式证明的信息是您收到了一些具有特定延迟的 GPS 消息。但是证明不能建立在相信你的话的基础上。
因此,您所能期望的最好的结果就是拥有一个设备:
- 防篡改;
- 知道(以不可伪造的方式)它的当前位置,以及当前的日期和时间;
- 存储签名算法的私钥;
- 可以接收任意消息m;
- 在包含当前设备位置、当前日期和时间以及给定哈希函数m的h(m)的结构上计算签名。
设备接收m并自己计算h(m)很重要,因为您想证明消息m本身在给定位置。此外,验证现在依赖于h的抗碰撞性,而不是图像前的抗性(在m和m'之间发生碰撞时,设备将接收m并且这不能证明m'同时在哪里)。
有实际问题。TSA 可以位于安全的环境中,例如有人看守的建筑物;它接收请求并通过某个网络发送响应。另一方面,位置标记设备必须“在现场”,因此更有可能处于攻击者控制的环境中。特别是,没有什么能保证它在正确的时间接收到真正的 GPS 信息。要改变当前位置的概念,攻击者只需“延迟”一些来自 GPS 卫星的信息;由于 GPS 协议是单向的,因此在协议级别没有什么可以做的。
另一种解决方案是使用基站网格,这些基站接收来自您要定位的设备的信号。位置标记设备仍然会散列消息,然后对其进行签名,并将签名发送到(安全的)基站。这将需要一个双向协议,以便每个站都可以测量设备响应请求所花费的精确时间。例如,如果设备精确计算一个签名需要 5.12 毫秒,并且来自设备的响应需要 5.30 毫秒才能被站点接收,那么站点知道设备必须在站点的 27 公里范围内(信息传播是受限于光速,即300000 km/s,如果总距离超过54 km,则无法实现0.18 ms的往返)。
与设备通话的基站网格:这看起来像“手机”情况。但是这个解决方案需要特定的工作站能够将时间精确到微秒,以获得中等的最终精度。
摘要:这看起来很难。