2011-09-19 123 views
1

Bitcasa声称其提供无限存储固定费用。如何安全地解除在客户端加密的文件?

根据TechCrunch interview,Bitcasa使用客户端收敛加密。因此没有未加密的数据到达服务器。使用收敛加密,加密密钥从加密的源数据中派生。

基本上,Bitcasa使用散列函数来识别不同用户上传的相同文件,以便只在其服务器上存储一次。

我想知道供应商如何能够确保没有两个不同的文件被映射到相同的加密文件或相同的加密数据流,因为hash functions不是bijective

技术问题:我必须执行什么,以免发生这种碰撞。

回答

1

大多数重复数据删除方案都假设散列冲突不太可能发生,以至于可以忽略它们。这使客户可以跳过重新上传已经存在的数据。当你有两个文件具有相同的哈希值时,它会崩溃,但这不太可能偶然发生(并且你确实选择了一个安全的哈希函数来防止人们故意这样做,对不对?)

如果你坚持要绝对可以肯定的是,所有的客户端都必须重新上传他们的数据(即使它已经在服务器上),一旦这些数据重新上传,你必须检查它是否与当前数据相同。如果不是,您需要选择一个新的ID而不是使用散列(并发出SHA1中发现碰撞的警报!)

+2

使用多个散列函数也大大降低了碰撞机会。这些天很容易找到一个MD5碰撞,但要找到两个同时在md5和sha1中碰撞的文件要困难得多,更别说md5 + sha1 + sha256 +等等...... –

+0

@Marc,而不是混合hash函数ad-hoc,只需从一开始就选择一个更安全的功能,如SHA512(或者,一旦它被标准化,SHA-3) – bdonlan

+0

广度防御 - 假设即使SHA-3(如果/当它被标准化时)也是不合理的,可以完全破碎。通过使用多个散列,如果您将所有的蛋放入单个破碎的散列篮,您仍然可以获得安全余量。但是,是的,从一个好的(尚未完成的)散列开始,仍然是一个好主意。 –