4

かなり一般的な質問がありますので、少し曖昧な場合はご容赦ください。

したがって、1GBのファイルを想定します。このファイルは、特定のシステムで暗号化して後で復号化する必要があります。

問題は、システムの空きメモリが512 mb未満で、ストレージ容量が約1.5 GB(ギブまたはテイク)であるため、ファイル「オンボード」では、約500MBの「ハードドライブスクラッチスペース」と512未満です。 「遊ぶ」ためのmbRAM。

システムは、暗号化または復号化中にいつでも「予定外の電源切断」が発生する可能性は低く、電源を再投入した後、暗号化/復号化プロセスを正常に再開できる必要があります(これは非常に不快なことのようですタックル)。

質問は次のとおりです。

1)それはまったく実行可能ですか:)

2)実行するための最良の戦略は何でしょうか

a)スクラッチスペースが非常に少ない暗号化/暗号化(復号化/暗号化中にファイル全体を配置することはできません。何らかの方法で「オンザフライ」で切り捨てる必要があります...)

b)このような制約のある環境で機能するディザスタリカバリを実装しますか?

PS:使用される暗号はAESでなければなりません。

私はAES-CTRを具体的に調べましたが、復号化されたファイル全体を最後まで保持できない環境でのディザスタリカバリの悪ふざけの前兆にはならないようです...

[追加するために編集]結局、私はそれをイゼルニアの方法でやろうと思います。

4

3 に答える 3

5

AESステータスベクトルをファイルの位置と一緒に保存する手段があれば、それは実行可能です。

  1. AESステータスとファイル位置PをファイルSTAGE1とSTAGE2に保存します
  2. 暗号化/復号化されたデータの1つのチャンク(たとえば、10メガバイト)を読み取ります
  3. 復号化/暗号化されたチャンクを外部スクラッチSCRATCHに書き込みます
  4. SCRATCHが完了したという事実をログに記録します
  5. 同じ位置にある元のファイルにSCRATCHを書き込みます
  6. SCRATCHが正常にコピーされたという事実をログに記録します
  7. 後藤1

ステージ1の後にハードクラッシュが発生し、STAGE1とSTAGE2が一致しない場合は、再起動して、最も早いPのステージが適切であると想定します。ステージ2の最中または後にハードクラッシュが発生した場合、10メガバイト相当の作業が失われます。ただし、AESとPは良好なので、ステージ2を繰り返すだけです。ステージ3でクラッシュした場合、回復時に見つかりません。ステージ4のマーカーであるため、SCRATCHは信頼性が低く、再生成する必要があることがわかります。STAGE1 / STAGE2があれば、そうすることができます。ステージ4でクラッシュした場合、これを回避できたとしても、SCRATCHを再生成する必要があると信じますが、再生では少しの時間を除いて何も失われません。同様に、5の間にクラッシュした場合、または6がディスクにコミットされる前に、ステージ5と6を繰り返すだけです。ステージ4がディスクにコミットされたため、SCRATCHを再生成する必要はありません。

これはすべて、10 MBがキャッシュ(OS +ライトバックの場合はハードディスク)に相当するデータよりも多いことを前提としています。そうでない場合は、32MBまたは64MBに上げます。回復は比例して遅くなります。

これらの関数が使用可能な場合は、すべての書き込みステージが完了した後で、flush()およびsync()が役立つ場合があります。

確実にするために「2回書き込む」必要があるため、合計書き込み時間は通常の2倍より少し長くなります。

于 2012-07-02T20:27:45.420 に答える
1

大きなファイルをチャンクで処理する必要があります。ファイルの一部を分割して暗号化し、ディスクに保存します。保存したら、暗号化されていない部分を破棄します。繰り返す。復号化するには、暗号化された部分を取得して復号化し、暗号化されていないチャンクを保存します。暗号化された部分を破棄します。繰り返す。ピースの復号化が完了したら、それらを連結します。

于 2012-07-02T19:51:32.533 に答える
0

確かにこれは実行可能です。

「最大の」(ただし、まったく大きくない)問題は、たとえば128 Mbの元のデータを暗号化するときに、それらをソースファイルから削除する必要があることです。これを行うには、ファイルの残りの部分を先頭にコピーしてから、ファイルを切り捨てる必要があります。これには時間がかかります。このステップの間、電源をオフにすることができますが、あまり気にする必要はありません-暗号化したデータのサイズを知っています(複数から16バイトのサイズのブロックでデータを暗号化する場合、暗号化されたデータのサイズは次のようになります復号化されたファイルから削除された、または削除されなければならないサイズに等しい)。残念ながら、それを説明するよりもスキームを発明する方が簡単なようです:)が、プロセスを遅くする余分なコピー操作以外の問題は実際には見られません。いいえ、あります

于 2012-07-02T20:22:48.327 に答える