-1

.NET でのファイルのシュレッディングでは、 EraserまたはCodeProjectのこのコードを使用して、.NET でファイルを安全に消去することをお勧めします。

CodeProject のコードに問題があったため、独自の方法を作成しようとしていました。これが私が思いついたものです:

        public static void secureDelete(string file, bool deleteFile = true)
    {
        string nfName = "deleted" + rnd.Next(1000000000, 2147483647) + ".del";
        string fName = Path.GetFileName(file);
        System.IO.File.Move(file, file.Replace(fName, nfName));
        file = file.Replace(fName, nfName);
        int overWritten = 0;
        while (overWritten <= 7)
        {
            byte[] data = new byte[1 * 1024 * 1024];
            rnd.NextBytes(data);
            File.WriteAllBytes(file, data);
            overWritten += 1;
        }
        if (deleteFile) { File.Delete(file); }
    }

それはうまくいくようです。ファイルの名前をランダムに変更し、1 MB のランダム データで 7 回上書きします。ただ、実際にどれくらい安全なのか、どうせならもっと安全にできるのでは?

4

1 に答える 1

6

ファイル システムは、特に System.IO に見られるような高レベルの API を介してアクセスされる場合、実際のストレージ実装よりもはるかに多くのレベルの抽象化であるため、このアプローチは最新のドライブにはほとんど意味がありません。

明確にするために、ファイルを名前で複数回上書きすることを促進するCodeProjectの記事は、少なくともSSDの場合はまったくナンセンスです。あるパスのファイルに複数回書き込むと、毎回ディスク上の同じ物理的な場所に書き込まれるという保証はありません。

もちろん、読み書き可能なファイルを開いて最初から上書きすると、概念的には同じ「場所」に書き込まれます。しかし、その場所はかなり抽象的です。

次のように見てください:ハードディスク、特にソリッドステートドライブは、「クラスターMのバイトNをOに設定する」などの書き込みを行い、実際に新しいクラスター全体をドライブのまったく別の場所に書き込み、延長する可能性がありますドライブの寿命 (同じメモリ セルに繰り返し書き込むと、ドライブが損傷する可能性があるため)。

SSD のコーディングから– パート 3: ページ、ブロック、およびフラッシュ変換レイヤー | コードカプセル

ページは上書きできません

NAND フラッシュ ページは、「フリー」状態の場合にのみ書き込むことができます。データが変更されると、ページの内容が内部レジスタにコピーされ、データが更新され、新しいバージョンが「空き」ページに格納されます。これは「読み取り-変更-書き込み」と呼ばれる操作です。「空き」ページは、最初にデータが含まれていたページとは異なるページであるため、データはその場で更新されません。データがドライブに保存されると、元のページは「古い」とマークされ、消去されるまでそのまま残ります。

これは、ドライブのどこか、つまり書き込みが要求されたクラスター M で、元のデータがまだ読み取り可能であることを意味します。つまり、上書きされるまでです。クラスターは現在「フリー」としてマークされていますが、そのクラスターにアクセスして上書きするには、ディスクへの非常に低レベルのアクセスが必要であり、SSD でそれが可能かどうかはわかりません。

SSD またはハード ドライブ全体を複数回上書きしたとしても、非常にプライベートなデータの一部がディスクまたは SSD の現在は機能していないセクターまたはページに隠されている可能性があります。その場所に欠陥があります。フォレンジック チームはこのデータを読み取ることができます (破損していますが)。したがって、自分に対して使用できるデータがハード ドライブにある場合は、そのドライブを火の中に投げ込みます。

下位レベルのファイル システム API に関するその他の (へのリンク) 情報については、「ディスク/クラスター番号のファイル オフセットを取得する」も参照してください。

しかし、これはすべて噂話であり、私はこのレベルのディスク アクセスを実際に経験したことがないため、これはすべてかなりの塩分で受け取られるべきです。

于 2016-08-13T18:13:49.937 に答える