POTSHARDS: Secure Long-Term Storage Without Encryption

原文地址

summary:文章介绍了一种在不可信的存储提供商(Storage Service Provider)上建立长期文档的可信存储,采用的方法不是加密而是秘密分享(secret sharing)技术。首先文章谈到文档系统应该满足几个安全特性:

  1. 授权用户必须能够访问数据
  2. 即使缺少密钥,计算适当时间后也可以访问数据
  3. 保证数据的完整性,用户所读到的数据是之前写入的,而不是被篡改的。
这些也就是论文设计的系统原型 POTSHARDS 希望达到的目标,其对应了提出了自己的设计原则:
  1. 加密的数据在足够多的 CPU 时间内总能够被破解
  2. 数据的恢复不需要文档以外的信息
  3. 不信任单个文档(存储提供商)而信任全部
以上是 POTSHARDS 设计原则也是它的假设条件(除第二点外),第三点也是全文的重要隐含条件,它假设了单个文档即使被窃取也不会对数据构成威胁, POTSHARDS 系统对用户提交的数据分为四步处理:
  1. 预处理(pre-processing)将文件(file)转变为对象,过程中包括生成一个 hash 值,保证之后数据重建正确与否。
  2. 安全分块(secrecy split)将对象分为一系列块(sets of fragments)
  3. 可用性分片(availiablity split)将块进一步分为片(sets of shards),这一步采用了近似指针(approximate pointer)将片环式连接起来
  4. 位置部署(placement)将各个片分散在各个文档中
步骤 2 和步骤 3 是个很类似的过程,分为两步的原因三点,一是将安全性和可用性分开处理;二是当攻击者即使获得了所有的分片,组成了一个块也不能得到其他分片的信息;三是可以把重要的元数据信息存储在分块一层,而对下一层保密。
重建是一个相反的过程, POTSHARDS 采用了数据签名和 RAID 保证了数据完整性和冗余,它把每个文档分割为固定大小的块,并需要所有的文档都满足分布式的 RAID 技术,这样才可以在所有文档上布局,而且重建算法能够使得每个文档独立重建一个损坏的数据块而不泄露数据的任何信息,这点我就些矛盾了,既然文档被分块(不同于上面存储过程的块)RAID 了,那么每个文档需要恢复块的话那就需要和其他文档进行交互了,怎么可能独立的完成呢?
用户保存数据时会返回索引(index),用户根据索引访问数据,一旦索引丢失,用户认证后可以在可计算时间内通过分片(shards)之间的近似指针进行恢复,从而 保证数据可用性。至于 shards 怎么在可计算时间内恢复出数据没看懂。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据