-3

私はCでデータ暗号化用のソフトウェアを開発しています。ここでは、「特定のOS APIにあまり依存せずに」、データ削除対策のいくつかの手法を利用できる可能性があるかどうかを尋ねたいと思います。可能だとお答えいただければ、その方法を教えていただき、たくさんの説明をいただければ幸いです。そうでなければ、それが不可能な場合は、多くの説明なしに「それは不可能です」と私に答えることができます。

私が尋ねる理由は、攻撃者がすでにマシンに物理的にアクセスしている場合、依存OS APIを使用した削除防止は機能しないと予想するためです(たとえば、Backtrack 5のような非常に高速な起動OSを使用することによって) )。

4

3 に答える 3

3

Unixとそのバリアントでは、ファイルを削除するための標準のシステムコールはですunlink()。データの削除を防ぐには、そのシステムコールへのすべての呼び出しが、システムによって実行されるプログラムのどこにいても、必要な代替のトリックを実行するようにする必要があります。これをプログラムレベルで行うのは困難です。変更されたCライブラリを提供する必要がありますが、それでも何人かの人々がそれを回避していることに気付くでしょう(たとえば、彼らはいくつかのアセンブラを作成しました)。したがって、unlink()カーネル内のシステムコールの動作を変更することでそれを行うことができますが、それも困難で移植性がありません。

Windowsでは、同じコメントがに当てはまりますがunlink()、ファイルを削除するメカニズムを提供する他のインターフェイスが多数ある可能性が高くなります。同じ議論が当てはまりますが、より多くのシステムコールなどをトラップする必要があります。

最後に、棺桶にさらに釘が必要な場合は、unlink()システムコールがデータを破棄する唯一の方法ではありません。ファイルを開いて切り捨ててから閉じることができます。ファイルは存在しますが、データは存在しません。ファイルを開いて変更することができます。ファイルは存在しますが、元のデータは失われます。

ですから、あなたは困難な時期にいると思います。

あなたは最初にコメントをし、次に質問の修正をしました:

[もし]攻撃者がすでにマシンに物理的にアクセスしている場合、依存OS APIを使用した削除防止は機能しません(たとえば、Backtrack 5のような非常に高速な起動OSを使用した場合)。

私は答えた:

  • 攻撃者が別のOSを起動できる場合、ゲームは終了します。他のOSが現在のOSのファイルを削除するのを止めることはできません。

古くて醜い言葉かもしれませんが、基本的には真実です。OSは生のハードウェアを担当しています。攻撃者がハードウェアを担当するものを選択できる場合、攻撃者が勝ちます。

参照:

  • ソフトウェアセキュリティの10の不変の法則

    1. 法#1:悪者があなたのコンピューターで彼のプログラムを実行するようにあなたを説得することができれば、それはもはやあなたのコンピューターではありません
    2. 法2:悪意のある人があなたのコンピュータのオペレーティングシステムを変更する可能性がある場合、それはもはやあなたのコンピュータではありません
    3. 法則#3:悪意のある人があなたのコンピューターに無制限に物理的にアクセスできる場合、それはもはやあなたのコンピューターではありません
    4. 法4:悪者があなたのウェブサイトにプログラムをアップロードすることを許可した場合、それはもはやあなたのウェブサイトではありません
    5. 法律#5:弱いパスワードは強力なセキュリティよりも優先されます
    6. 法律#6:コンピューターは、管理者が信頼できる場合にのみ安全です
    7. 法則#7:暗号化されたデータは復号化キーと同じくらい安全です
    8. 法#8:古くなったウイルススキャナーは、ウイルススキャナーがまったくない場合よりもわずかに優れています。
    9. 法則#9:絶対的な匿名性は、実生活でもWebでも実用的ではありません
    10. 法律#10:テクノロジーは万能薬ではありません
于 2012-05-28T00:05:45.177 に答える
1

私が尋ねる理由は、攻撃者がすでにマシンに物理的にアクセスしている場合、依存OS APIを使用した削除防止は機能しないと予想するためです(たとえば、Backtrack 5のような非常に高速な起動OSを使用することによって) )。

申し訳ありませんが、攻撃者が別のオペレーティングシステムを起動する可能性があります。これは、作成した可能性のある削除防止コードが実行されないため、何もできません。

これは、ATA / SCSIコントローラへの呼び出しをなんとかして傍受してパッチを適用し、BIOSがOSに制御を与える前にこのパッチを挿入しない限り、可能ではないと思います。一方、物理アクセス=ルートアクセスの場合、攻撃者はドライバーをつかんでケースを開き、ディスクを別のコンピューターに接続して、やりたいことを何でもすることができます。

于 2012-05-28T00:18:49.013 に答える
0

申し訳ありませんが、基本的に IOオペレーティング システムです。IO を提供することは、オペレーティング システムの最も重要な仕事です。そして、C 標準はそれについてほとんど定義していないため、特にファイルの復元などのあいまいなことに関しては、異なるものにする必要があります。

OS固有のものを素敵なAPIの背後に隠しているライブラリを見つけるかもしれませんが、そのアクションをどのように実行するかは依然としてOSに依存しています.

于 2012-05-27T23:54:37.893 に答える