Unixとそのバリアントでは、ファイルを削除するための標準のシステムコールはですunlink()
。データの削除を防ぐには、そのシステムコールへのすべての呼び出しが、システムによって実行されるプログラムのどこにいても、必要な代替のトリックを実行するようにする必要があります。これをプログラムレベルで行うのは困難です。変更されたCライブラリを提供する必要がありますが、それでも何人かの人々がそれを回避していることに気付くでしょう(たとえば、彼らはいくつかのアセンブラを作成しました)。したがって、unlink()
カーネル内のシステムコールの動作を変更することでそれを行うことができますが、それも困難で移植性がありません。
Windowsでは、同じコメントがに当てはまりますがunlink()
、ファイルを削除するメカニズムを提供する他のインターフェイスが多数ある可能性が高くなります。同じ議論が当てはまりますが、より多くのシステムコールなどをトラップする必要があります。
最後に、棺桶にさらに釘が必要な場合は、unlink()
システムコールがデータを破棄する唯一の方法ではありません。ファイルを開いて切り捨ててから閉じることができます。ファイルは存在しますが、データは存在しません。ファイルを開いて変更することができます。ファイルは存在しますが、元のデータは失われます。
ですから、あなたは困難な時期にいると思います。
あなたは最初にコメントをし、次に質問の修正をしました:
[もし]攻撃者がすでにマシンに物理的にアクセスしている場合、依存OS APIを使用した削除防止は機能しません(たとえば、Backtrack 5のような非常に高速な起動OSを使用した場合)。
私は答えた:
- 攻撃者が別のOSを起動できる場合、ゲームは終了します。他のOSが現在のOSのファイルを削除するのを止めることはできません。
古くて醜い言葉かもしれませんが、基本的には真実です。OSは生のハードウェアを担当しています。攻撃者がハードウェアを担当するものを選択できる場合、攻撃者が勝ちます。
参照:
ソフトウェアセキュリティの10の不変の法則
- 法#1:悪者があなたのコンピューターで彼のプログラムを実行するようにあなたを説得することができれば、それはもはやあなたのコンピューターではありません
- 法2:悪意のある人があなたのコンピュータのオペレーティングシステムを変更する可能性がある場合、それはもはやあなたのコンピュータではありません
- 法則#3:悪意のある人があなたのコンピューターに無制限に物理的にアクセスできる場合、それはもはやあなたのコンピューターではありません
- 法4:悪者があなたのウェブサイトにプログラムをアップロードすることを許可した場合、それはもはやあなたのウェブサイトではありません
- 法律#5:弱いパスワードは強力なセキュリティよりも優先されます
- 法律#6:コンピューターは、管理者が信頼できる場合にのみ安全です
- 法則#7:暗号化されたデータは復号化キーと同じくらい安全です
- 法#8:古くなったウイルススキャナーは、ウイルススキャナーがまったくない場合よりもわずかに優れています。
- 法則#9:絶対的な匿名性は、実生活でもWebでも実用的ではありません
- 法律#10:テクノロジーは万能薬ではありません