可信时间戳
我认为,如果您继续这种思路,您最终会得到与Trusted Timestamping Servers非常相似的东西。
可信时间戳的核心思想是您向服务器提交一个文件,它会签署一个证明,说明它aabbcc112233
在 time看到了带有哈希的文件X
。这通常用于证明最初的发布时间(以及发布者),以及证明文件此后没有被修改过。
您需要受信任的第 3 方,因为如果创建视频的最终用户是同一个人签署它,那么没有什么能阻止他们在编辑后重新签署它。
为什么不直接将视频流保存在服务器上?
也就是说,我认为你真的不需要任何花哨的加密货币;最简单的解决方案可能是最好的。让学生将他们的相机直播到考试监控网站。该网站在视频流进入时将其记录在其数据库中,并且它可以检测并警告实时流是否有任何中断或中断时间足够长,以至于可能发生手动编辑。
创建视频流的区块链
更新地址评论。
啊,你有额外的隐私要求,学生不希望他们的视频存储在第三方服务器上(这应该是问题所在!)。
在这种情况下,让这个问题变得困难的是,你不能等到考试结束才为整个视频发布一个哈希值,因为这给了学生太多时间来编辑视频的中间部分。想到的解决方案是某种哈希块链接(不是“区块链(比特币)”而是“区块链”)。发送者或接收者将视频流分成例如 10 秒的“块”,在每个块产生/接收时对其进行散列,并将每个块的散列与视频一起实时流式传输。您通过在每个块中包含前一个块的哈希来执行“块链接”。在数学符号中:
h_0 = hash(videoblock_0)
h_1 = hash(videoblock_1 || h_0)
...
h_n = hash(videoblock_n || h_n-1)
这可以保护隐私,因为服务器只需要存储哈希而不是视频本身。这是流式友好的,因为您在整个流中生成散列,并且每个散列覆盖到该点的整个流。这是有效的,因为服务器只需要存储最新的哈希(h_n),这足以在以后验证提供的视频是否在流中的任何点被篡改(尽管要检测它被篡改的位置,你需要保存每个块哈希)。