「ファイル完全削除ソフトウェア」という便利なソフトウェアを実装しながら、RustでWindowsアプリを作成する方法を解説します。具体的には、ファイルのドラッグ&ドロップ機能やプログレスバー、Windows標準ダイアログを活用して、ユーザーフレンドリーなアプリを設計することを目指します。
この記事で作成している「ファイル完全削除ソフトウェア」は、「完全削除」の原理を解説するものであり、完全なデータセキュリティを保証するものではありません。もし、あなたが企業のデータ管理担当者なのであれば、専門企業の有料サービスを利用することを強く推奨します。
この記事で使用したコードは、以下のリポジトリに公開されています。
このリポジトリはworkspace
となっており、完全削除のコアの部分であるfile_destroy
と、Windowsアプリであるfile_destroyer
の2つを含んでいます。
ファイル完全削除ソフトの作り方
Rustを用いて、ファイルを完全に削除するソフトウェアを作る方法を説明します。
ここでは動作OSを限定せず、コマンドラインで動作するソフトウェアを作ることを目指します。
ファイルを完全に削除することの意味
わざわざ「ファイルを完全に削除する」という表現を使うからには、普通の「削除」は不完全なものであるはずです。
ここでは、いわゆる「ゴミ箱」に入れて消去する場合と、ソフトウェアを用いた「完全削除」の違いについて簡単に解説します。すでに原理を理解している方は、読み飛ばしていただいて構いません。
いわゆる普通の「削除」
用語が非常にわかりにくいですが、コンピュータ上でマウスを用いてポチポチとファイルを削除する手順はすべてこちらに含まれます。たとえば
- ファイルをゴミ箱に入れ、「ゴミ箱を空にする」を選択
- USBメモリのファイルを右クリックから削除して、「完全に削除しますか?」に「はい」を選択
などの動作でも「完全に削除」という表現を使いますが、これらは情報セキュリティの観点からは不完全な削除に過ぎません。その仕組みは以下の通りです。
(または、以下のサイトを参照してください)
ファイルの情報は、記憶メディア(HDD、SSDなど)の中に保存されています。記憶メディアには管理領域と保存領域があり、ファイルを構成する情報(文書なら文字、画像ならピクセル情報など)は保存領域に記録されています。一方、管理領域は、そのファイルが保存領域のどこに記録されているか、という情報を記録しています。
ここで、ファイルを「削除」しても、保存領域のファイルの情報はしばらく消えません。代わりに、管理領域に「このファイルは削除済みです」という情報が追記されます。
こうしてファイルは消えたことになっていますが、保存領域の情報はしばらく残り続けます。さらに、管理領域の情報も消えたわけではなく、「削除済み」と追記されただけで、保存場所の情報は残っています。
したがって、専用のソフトウェアを使用することで、このファイルを簡単に復元することができてしまいます。
ファイル破壊による「完全削除」
ファイルが復元されないようにするためには、情報を「消す」のではなく「破壊する」必要があります。保存領域の情報が壊れていれば、ファイル復元ソフトを使用しても、意味をなさないファイルしか取得することができません。
ファイル削除ソフトウェアでは、ファイルを「削除」する前に、ファイルの内容を何度もランダムな情報で上書きするという方法でファイルを破壊しています。
つまり、公的文書の黒塗りや、モザイク処理と似たような原理です。
Rustでファイルの上書き処理を実装する
コマンドライン上でファイルを完全削除するソフトウェアとして、file_destroy
を作成しました。