暗号化されたファイルをデータベース内に保存する

database encryption python security
暗号化されたファイルをデータベース内に保存する

私はPyCryptoを使用していくつかのファイルをSQLITEデータベース内に保存しています。

私は4つのフィールドを使用しています。

ファイルを解読せずに、ファイルに関する情報を表示するには、すべてのフィールドが必要です。

問題は、このようなデータを保存しても安全ですか? +たとえば、ZIPファイルまたは実行可能ファイルの最初の文字は常に同じであり、ファイルのハッシュと長さがすでにわかっている場合は…​ 部分的にファイルを復号化することは可能ですか?

安全でない場合、ファイルを復号化せずにインデックスを作成するために、ファイルに関する情報を保存するにはどうすればよいですか? (長さ、ハッシュ、名前、タグなどの情報)

(私はpythonを使用していますが、任意の言語で例を与えることができます)

  3  0


ベストアンサー

AESで暗号化されたデータの長さはプレーンデータと同じであるため(ブロックパディングを使用するか、またはブロックパディングを使用します)、元の長さを与えてもセキュリティは損なわれません。 SHA512は、元のコンテンツに関する最小限の情報を提供するために設計された強力な暗号化ハッシュです。したがって、ここでも問題は発生しません。

したがって、あなたのスキームは非常に安全だと思います。 それによって「露出」された情報は無視できます。 とにかく、鍵管理はおそらくはるかに大きな懸念事項です。

3


最初の数バイトが同じであるという問題を回避するには、ランダムIVでブロック暗号モードでAESを使用する必要があります。 これにより、2つの暗号化されたファイルの最初のブロック(長さがキーサイズに依存する)がまったく同じであっても、暗号テキストが異なることが保証されます。

そうすれば、あなたのアプローチに問題はないと思います。

1


「もちろん、AES-256は安全だ」と言うことはできません。あなたの投稿だけで、ストリーム暗号およびブロック暗号に対するあなたの混乱攻撃を見ることができます。

とはいえ、http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 [ブロック暗号モードの操作]について読む必要があります。 CWE-310ファミリー全体。 海賊版暗号のコピーを入手しても害はありません。 結局のところ、これを完全に台無しにする余地はまだたくさんあります。

実際のソリューション:* SOMEONE ELSE’S IMPLEMENTATION *を使用します。

1


あなたは本当にあなたがどの攻撃に対して防御したいのか、そして可能な攻撃者のリソースについて考える必要があります。

一般に、暗号化された一部のデータを保存することは、正確な要件を満たす場合にのみ役立ちます。 特に、攻撃者がデータと同時にキーを侵害する可能性がある場合、暗号化は事実上役に立ちません。

0


タイトルとURLをコピーしました