4

暗号化アプリケーションの手順とファイル形式を設計しています。暗号化の方法/ワークフローに関して決定を下す必要があるときが来ました。あるアプローチを別のアプローチよりも使用することの長所と短所について、私は決心できません。

以下は、フォーマット構造の概要です。

----------------------------------------------
| | ファイルの署名 || 固定 | プレーン |
|----||----------|-----------|
| | || アルゴリズム情報 || 固定 | プレーン |
|----||----------|-----------|
| | || シード || 固定 | 暗号化された |
|----||----------|-----------|
| | || データ || 変数 | 暗号化された |
|----||----------|-----------|
| | || CRC || 固定 | 暗号化された |
----------------------------------------------

最初は、ハッシュ関数にSHA-256を使用し、暗号化アルゴリズムにAES-256を使用しますが、形式が示すように、後で構成可能になります。

暗号化されたコンテナーを作成するための提案された手順:

  1. ハッシュ(パスワード) => キーパス
  2. ランダムシードを生成
  3. キーパス XOR シード => キーシード済み
  4. Key-Pass でシードを暗号化し、暗号化されたシードを保存する
  5. キーシードを使用してデータを暗号化し、暗号化されたデータを保存する
  6. Key-Seeded で CRC を暗号化し、暗号化された CRC を保存する

質問

A.暗号化されたシードと CRC を保存することで何か得られますか? 暗号化せずに保存すると安全性が低下しますか?

B.最終的な鍵に [ Hash(Password) XOR Seed ] を使用するのではなく、鍵の生成に [ Hash(Password + Seed) ] を使用するセキュリティの違いは多かれ少なかれ違いますか?

C.上記の 2 つの質問からの結論の質問。暗号化されたコンテナーを作成するための代替手順を使用するのが良いか悪いか:

  1. ハッシュ(パスワード + シード) => キー
  2. 暗号化されていないシードを保存する
  3. キーでデータを暗号化し、暗号化されたデータを保存する
  4. 暗号化されていない (または暗号化された) CRC を保存する

暗号化されたコンテンツを読み戻すときにキーを再生成するために、暗号化されていないシードを保存する必要があると思います。CRC は、暗号化または非暗号化のいずれかです。

4

2 に答える 2

3

独自の暗号化ファイル形式を構築することは常に困難です (そして危険です)。

キー生成 独自のキー生成ルーチンを展開する代わりに、PBKDF2 (PKCS #5 v2.0、RFC 2898 ) を使用してキーを生成してください。これには、ソルト (シードと呼ばれるもの) を暗号化されていない形式で保存する必要があります。

CRC ストレージ すでに暗号を使用するレベルに達している場合は、完全性チェックに CRC を使用しないでください。SHA256 を他の場所で使用することを既に計画している場合は、整合性チェックにも使用してください。(必要に応じて暗号化することもできますが、暗号化されていないデータをハッシュし、ハッシュを暗号化せずに保存することをお勧めします。)

于 2011-05-24T18:14:58.413 に答える
0

シードと H(パスワード) XOR する場合は、シードを暗号化して保存する必要があります。そうしないと、ハッシュを渡してしまいます。ハッシュを公開すると、人々は簡単にブルート フォース攻撃を仕掛けることができます。そのため、ソルトと多くの反復がほとんどのプロトコル (PBKDF2 など) で使用されます。

CRC は暗号化されたコンテナー内のデータに関する情報を提供するため、CRC を暗号化せずに保存しないでください。Eacwacer が提案したハッシュと同じです。MAC を使用する方がよいでしょう (たとえば、キー ジェネレーターでも生成されます)。

特定の回答を求められたので、以下の質問にお答えします。

A: 暗号化して保存したほうがよい B: H(パスワード | シード) の方が安全です C: 言うのは難しいです。XOR が間違っていて、単純な CRC も間違っていますが、それでも 2 番目のものを使用します

そして、尋ねられていない人のために:

D: 一番上に砂糖を入れて、代わりによく知られたパスワードベースの暗号化アルゴリズムを使用し、暗号学的に安全な完全性チェックの方法を使用してください

于 2011-05-24T18:24:00.800 に答える