使用数据时,文件路径本质上是可疑的。
假设我有一个名为find_brca
的程序的假设情况,以及一些名为my.genome
的数据,两者都在/Users/Desktop/
目录中。
find_brca
只需一个论点,一个基因组,运行约4个小时,并返回该个体在其一生中患乳腺癌的概率。有些人的概率非常高,然后可能会立即将他们的两个乳房移除作为预防措施。
显然,在这种情况下,/Users/Desktop/my.genome
实际上包含我们认为它所做的基因组是至关重要的。没有做法。 " oops我们使用了之前备份的旧版本文件"或任何其他技术问题将不被患者接受。我们如何确保分析我们认为正在分析的文件?
为了使问题更棘手,我们还断言我们不能修改find_brca
本身,因为我们没有写它,它的封闭源,专有,等等。
您可能认为MD5或其他加密校验和可能能够解决问题,虽然它们在某种程度上有帮助,但您只能在find_brca
运行之前和/或之后MD5文件,但是您永远不会确切知道使用了哪些数据find_brca
(没有使用DTrace / ptrace进行严重的低级系统探测等)。
问题的根源是文件路径与实际数据没有1:1的关系。仅在文件系统中,文件只能通过其校验和请求 - 并且一旦数据被修改,其校验和就会被修改 - 我们可以确保在我们提供find_brca
基因组的文件路径时{{1我们实际上正在阅读正确的基因组。
有没有像这样工作的文件系统?如果我想创建这样的文件系统,因为目前没有,你会怎么建议我去做呢?
答案 0 :(得分:2)
我对稳定性有疑问,但是hashfs看起来与你想要的完全一样:http://hashfs.readthedocs.io/en/latest/
HashFS是一个内容可寻址的文件管理系统。那是什么意思?简单地说,HashFS根据文件的哈希管理保存文件的目录。这种系统的典型用例是:文件只写一次而不会改变(例如图像存储)。希望没有重复文件(例如用户上传)。文件元数据存储在别处(例如,在数据库中)。
注意:不要与hashfs混淆,我的学生几年前做过:http://dl.acm.org/citation.cfm?id=1849837
答案 1 :(得分:1)
我会说这个问题有点模糊,但是,有几个答案可以解决你的部分问题。
首先,并非所有文件系统都缺少路径/数据通信。在许多(如果不是大多数)文件系统上,文件仅由其路径标识,而不是由任何ID标识。
接下来,如果您希望保证在应用程序处理数据时不更改数据,则该方法取决于所使用的文件系统以及此应用程序与该文件一起使用的方式(如果它保持打开或打开和关闭)根据需要的文件)。
最后,如果您担心攻击者在使用文件数据时以某种方式更改文件系统上的数据,那么您可能遇到的问题不仅仅是文件路径,而且应该事先解决该问题。
另外,您可以实现一个虚拟文件系统(Linux上的FUSE,我们在Windows上的CBFS),它将为您的应用程序提供从其他地方获取的数据,无论是内存,数据库还是云。这种方法也可以回答您的问题。
更新:如果你想完全摆脱文件路径并通过哈希处理数据,那么哈希是关键的NoSQL数据库可能是你最好的选择。