这是一个创建于 3899 天前的主题,其中的信息可能已经有所发展或是发生改变。
请君听我细细道来:
[背景]
现在有两个Table,一个是data tabel 一个是audit table
data table中装有很多有用的数据,而audit table负责对data table的完整性进行校验
现在假设audit table是不完全安全的(即可以保证有个别数据未被篡改)
那么现在有个hash chain的办法去验证data table中数据的完整性,如下所示
data table audit table
row1 hash(row1)
row2 hash(row2 + hash(row1))
row3 hash(row3 + hash(ROW2)) //这里用hash(ROW2)代表上一行的hash值
···
rowN hash(rowN + hash(ROWN-1))//这里用hash(ROWN-1)代表上一行的hash值
也就是说我们只用确保最后一个hash值是安全的(没有被篡改)那么整个hash chain基本就可以判断是安全的
验证的时候,我们只需要一条一条的做比对,则能检验出 data table中数据的完整性
[问题]
当data table中的数据太多的时候,一条条的比对的效率太低,是否有什么更好的方法使得数据完整性的检验效率能够提高?
[想法]
其实考虑了这么久,整个问题的核心就在于 [如何在确保安全性的同时减少IO次数]
首先,data table里的数据是肯定要遍历的,所以这里的IO没办法做手脚,
那么注意力自然而然就会转移到audit table那里
最容易想到的其实就是 hash(row1+row2+···+rowi)这样可以减小audit table的访问次数,但这样io次数无非是从3N次减小到了 N/i 次。
而且如果就这样就解决了,那毕业论文实在太扯淡了 ···
所以到现在来说都没有什么突破性的想法实在捉急