2017-02-24 11 views
1

AESでファイルを暗号化/復号化するためにopensslライブラリを使用してCプログラムを作成しました。問題は、と同じfile.rarで作業できない(読み取り:暗号化)ことができないことです。代わりに、新しいfile.rar.encを作成して元のfile.rarを削除するだけです。新しいファイルを作成せずにファイルを暗号化する

このようにしてオリジナルのfile.rarを復元することができます。その結果、暗号化プロセスは実際には役に立たなくなります。暗号化/復号化中に同じファイルで操作する方法はありますか?ここで

は私のCコードです:それは元file.rarを回復することが可能です。この方法で

FILE *ifp = fopen(to_encrypt, "rb"); 
    FILE *ofp = fopen(new_name, "wb"); 
    int bytes_read, bytes_written, num=0; 
    unsigned char indata[AES_BLOCK_SIZE], outdata[AES_BLOCK_SIZE]; 
    unsigned char skey[17],iv[] = "myIV"; 
    strcpy(skey, "myKey"); 
    AES_KEY key; 
    AES_set_encrypt_key(skey, 128, &key); 

    while (1) { 
    bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp); 
    AES_cfb128_encrypt(indata, outdata, bytes_read, &key, iv, &num, AES_ENCRYPT); 
    bytes_written = fwrite(outdata, 1, bytes_read, ofp); 
    if (bytes_read < AES_BLOCK_SIZE) break; 
    } 
+0

[フラッシュベースソリッドステートドライブからのデータの確実な消去](https://cseweb.ucsd.edu/~swanson/papers/Fast2011SecErase.pdf)も参照してください。従来のディスクドライブではなくメモリカードを使用することが多い携帯電話やタブレットにとって特に重要です。 「インプレース」または「インサイチュ」暗号化でさえ、[ウェアレベリングまたは書き込みレベリング](https://en.wikipedia.org/wiki/Wear_leveling)のためにドライブにデータが残ることがあります。 – jww

答えて

5

、その後、暗号化処理は本当に無意味です。

ここでの記述は、特定の使用例を示しています。このような暗号化は、暗号化されたファイルを送信する場合には役に立ちません。暗号化は、後でシステムを侵害すること(例えば、ラップトップを紛失した場合)から保護することを意図している場合、役に立たない。

システムが侵害された場合、フルディスク暗号化に不十分な暗号化では不十分であり、元のデータは回復し続ける可能性があります。

  • ご使用のオペレーティングシステムには、スワップ(ディスク上)メモリがあります。
  • 今暗号化されたrarファイルに含まれているファイルを読み取ったことがあるプログラムがコピーを作成した可能性があります。
  • ほとんどの印刷には一連の一時ファイルが含まれます。
  • 現代のSSDドライブは、フラッシュに書き込むと摩耗が発生し、製品の寿命に悪影響を及ぼすため、実際には何も「削除」しません。
  • さらに、現代のフラッシュはウェアレベリング機能を持っています。つまり、ファイルを上書きすることは、以前のデータをほとんど消去することなく、新しいデータを新しいブロックに書き込むことを意味します。

上記のそれぞれのケースでは、ドライブ上に正当に回復できるオリジナルの平文が存在します。以前のファイルを上書きするCプログラムを作成するだけで、この状況を回避することはできません。

+0

ですので、ファイルを暗号化して後でシステムを侵害しないように保護する方法はありません。 元のファイルがまだドライブに残っていると、暗号化ウィルスとransomwaresに問題が生じるのはなぜですか? –

+1

@spesky使用の問題です。データが身代金でロックアウトされると、ユーザーは無条件にそのデータの_all_を元に戻し、すべてのデータを取得する(可能性のある)唯一の方法は支払うことになります。一方、データの一部は法医学的手段によって(多くの場合、データの多くは)回復することができます。セキュリティのために暗号化している場合は、データのうち_none_を回復可能にする必要があります。身代金訴訟では、法医学が身代金よりもおそらく多くの費用を負担することはありません。 –

+0

将来のシステム侵害から保護したい場合は、フルディスク暗号化と暗号化されたマウント可能なイメージの2つの方法があります。どちらも暗号化されていないデータが実際にディスクに書き込まれることを防ぎます。 –

0

確かにファイルを暗号化することができます:ファイルをメモリにマップし、データのブロックを暗号化します。オプションのIV /認証タグをファイルの最後に格納すると、暗号化ができない場合があります。

Thomasがすでに述べたように、SSDの問題に遭遇するかもしれません。SSDの場合、元のファイルを上書きしない可能性が非常に高いです。ただし、SSDは実装に応じてブロックを削除する可能性があります。実際には、ハードディスクは同じことをすることができますが、通常セクタが不良とマークされている場合にのみ、そのようなことを行います。

つまり、デバイス自体に直接アクセスできない人に対しては、あなたはまだ保護されていると言えます。これをSSD暗号と組み合わせて追加の保護を提供することもできます(これにより、SSD上のデータを簡単に破棄することができます.SSDは基本的にデータ暗号化キーを破壊するだけです)。

+0

おそらく最悪の場合は、SSDファームウェアをハックすることです。 –