1

「オープン分散クラウドストレージシステム」を開発しています。

オープンとは、誰でもファイルのホスティングに参加できることを意味します。

私の現在の設計では、ファイルコンテンツのsha1ハッシュをグローバルファイルIDとして使用しています。

クライアントはすでにこのハッシュ値を知っており、「帯域幅ドナー」からファイルを受信して​​いることが与えられます。

クライアントは、ハッシュを生成して期待値と比較することにより、ファイルが実際に正しいものであることを確認する必要があります。

ただし、私の懸念は、誰かが意図的にファイルを変更して同じハッシュを生成する可能性があることです。私の知る限り、これはCRCファミリーのハッシュに対して簡単に実行できます。いくつかの「グーグル」は、MD5でも同じことが簡単であるという多くの主張を明らかにしました。

今私の質問は:蜂の基準を満たすハッシュアルゴリズムはありますか?

  • 大量のデータに対して高速
  • ハッシュ範囲で十分に分散されている(別名「一意」)
  • 十分なターゲット範囲(「ビット長」)がある
  • 意図的な衝突攻撃に耐性があります

他のすべての手段は、自分のニーズを満たすセットアップを実現するために、秘密のコンポーネント、たとえば、秘密のopensslキーやハッシュ関数の共有秘密のソルトを使用することを考えることができることを意味します。

残念ながら、私はそれを扱うことができません。

4

3 に答える 3

2

まず第一に、常に衝突が発生するため、ハッシュ値でファイルを識別することはできません。

そうは言っても、あなたが探しているのは暗号化ハッシュと呼ばれています。これらは、ハッシュを保持したり、特定のハッシュを使用して新しいデータを生成したりしながら、データを変更できないように(簡単に、つまりブルートフォース以外で)設計されています。

そのため、SHAファミリは問題ありません。

于 2012-09-27T17:48:22.880 に答える
2

今のところ、SHA1で十分です。衝突は知られていません。

ハッシュしているものの平均サイズを知ることは大いに役立ちます。ただし、プラットフォームが主に64ビットの場合は、SHA512が最適です。ハッシュを切り捨てて、256ビットのみを使用できます。プラットフォームが主に32ビットの場合は、SHA256が最適です。

于 2012-09-27T17:48:24.540 に答える
2

あなたが求めているのは一方向性関数であり、その存在は大きな開かれた問題です。

暗号化ハッシュ関数を使用すると、回避したい特定の攻撃は「2番目の原像攻撃」と呼ばれます。

それはあなたが望むものをグーグルするのに役立つはずですが、私が知る限り、MD5に対する既知の実用的な2番目の原像攻撃は実際にはありません。

まず、同じハッシュを持つ2つの任意のファイルを見つけ、試行するたびに2つの異なるそのようなペアを見つけるのは簡単であることに気付いたでしょう。

ただし、特定のファイルに偽装するファイルを生成することは困難です。つまり、前述の「2つの任意のファイル」の1つが、実際にストレージ内の悪意のないエージェントに属している可能性は低いです。

それでも満足できない場合は、SHA-1、SHA-2、GOSTなどを試してみてください。

于 2012-09-27T18:11:33.220 に答える