すべてのパーティションは暗号化されていますが、/
パーティション/home
は/boot
暗号化されていないままで操作が可能でなければなりません。ブート時にカーネルをハッシュし、結果を保存された値(コンパイル時に作成され、暗号化されたドライブに保存されます)と比較して、最後のブート以降に誰かが何らかの方法でカーネルを操作したかどうかを確認します(物理的にも可能です)。これらのスクリプトを書くのに問題がありますか?これを実行できるプログラムはすでにありますか?
答え1
あなたが探しているのは、お使いのコンピュータで実行されているオペレーティングシステムが信頼できるオペレーティングシステムであることを確認することです。信頼できるブート。 (これは時々信頼できるブートと呼ばれるいくつかのうちの1つです。)あなたが提案した方法はこの目標を達成しません。
暗号化が提供されないデータの整合性または確実性。つまり、攻撃者がディスクの内容を修正し、悪意のあるオペレーティングシステムと交換するのを防ぎません。この悪意のあるオペレーティングシステムは、ロードするカーネルのチェックサムを表示するように簡単にプログラムできます。
最も簡単な攻撃経路は次のとおりです。仲介者攻撃者は、ある種の仮想マシンで通常のオペレーティングシステムを実行します。仮想マシン層は、入力を必要なオペレーティングシステムに送信し、出力を再送信します。ただし、側面にキー入力(mmmm、パスワード)を記録し、OSメモリから秘密キーをスヌーピングするなどの作業も行います。
このような攻撃を避けるためには、次の措置が必要です。信頼の根: システムの他のコンポーネントがそうではないという理由で信頼できるシステムコンポーネントです。つまり、どこかから始める必要があります。お持ちのハードウェアから始めることをお勧めします。目に見えないUSBキーにオペレーティングシステムを保存してから、十分に確実なハードウェアにのみ接続できます。ハードウェアにマルウェアが含まれている可能性があります。! )。お使いのコンピュータを信頼していると、コンピュータのハードドライブも信頼できる可能性が高くなります。
小さなチップを信頼することと、デスクトップまたはラップトップ全体を信頼することとの間のギャップを解消する技術ソリューションがあります。一部のコンピュータではTPM(信頼できるプラットフォームモジュール)ここでは、既知のオペレーティングシステムのみを起動できることを確認できます。信頼できる地の虫TPMがサポートされているため、TPMとTrusted Grubを一緒に使用すると、実行中のカーネルが承認されたカーネルであることを確認できます。
TPMを採用することは有利かもしれないし、不利になるかもしれない。それは誰が鍵を持っているかに依存します。 TPMの秘密鍵があれば、コンピュータで実行される操作を正確に制御できます。メーカーだけが秘密鍵を持っているなら、公共プラットフォームをロックされた装置に変えることも一つの方法だ。
答え2
起動されたカーネルはメモリに常駐します。/dev/mem
サイズがわかっている場合は、それを見つけてチェックサムを計算して確認するスクリプトを作成できます。
/boot
また、分割を必要とせず、カーネルの変更がほとんど不可能で、ハードドライブ全体を暗号化することもできます。どのように?私が考えることができる2つの方法は次のとおりです。
カーネルをCDに挿入すると、コンピュータはCDから起動します。数年前、何人かの人々はこれらの設定を使用したと報告しました。 2番目の投稿を参照してください。このフォーラムスレッドで。
あなたのマザーボードコアブートで駆動また、BIOSチップに暗号化サポートカーネルをインストールできる最小カーネルのための十分なスペースがあります。(まだテストする機会がありませんでしたが、これが機能しない理由はありません。)
編集する:これはすべて次のステップに向かうステップです。「信頼できる」または「確認済み」ブーツ(Gilesがこれを正しく指摘する)。完全なメカニズムは、ブートローダフェーズで何が起こっているのか、および基本ハードウェアがどのように識別されるかを考慮する必要があります。見るGoogle Chromium OSの仕組み。