操作を防止/検出するためのカーネルへの署名/チェックサム


8

すべてのパーティションは暗号化されています(/および/home)。ただし、/bootパーティションは暗号化されていないままで、操作のために開かれている必要があります。起動時にカーネルをハッシュし、その結果を保存された値(コンパイル時に生成され、暗号化されたドライブに保存されます)と照合して、誰かが最後のブート以降(おそらく物理的に)カーネルを何らかの方法で操作したかどうかを確認することを考えていました。このようなスクリプトの作成に問題はありますか?すでにこれを行うプログラムはありますか?

回答:


6

探しているもの—コンピューターで実行されているオペレーティングシステムが信頼できるものであることの確認—は、トラステッドブートと呼ばれます。(これは、トラステッドブートと呼ばれることのあるものの1つです)。提案された方法はこの目的を達成しません。

暗号化では、データの整合性信頼は提供されません。つまり、攻撃者がディスクの内容を変更して悪意のあるオペレーティングシステムに置き換えるのを防ぐことはできません。この悪意のあるオペレーティングシステムは、ロードされたカーネルに期待するチェックサムを表示するように簡単にプログラムできます。

最も簡単な攻撃の経路は、攻撃者が何らかの仮想マシンの下で通常のオペレーティングシステムを実行する中間者です。仮想マシンレイヤーは、入力を目的のオペレーティングシステムに送信し、出力を送信します。ただし、キーストローク(mmmm、パスワード)を側面に記録したり、OSのメモリから秘密キーを盗み見たりすることもできます。

この形式の攻撃を回避するには、信頼の根を持つ必要があります。システムの他のコンポーネントが言う理由以外の理由で信頼するシステムのコンポーネントです。つまり、どこかから始めなければなりません。手元にあるハードウェアから始めるのがよいスタートです。オペレーティングシステムをUSBキーで保持し、視界を失わないようにし、十分な信頼性があるハードウェアにのみ接続することができますハードウェアはマルウェアを含む可能性があります!)。コンピューターを信頼しても構わないとしたら、そのハードディスクも信頼できるかもしれません。

小さなチップを信頼することとデスクトップまたはラップトップコンピュータ全体を信頼することの間のギャップを埋める技術的な解決策があります。一部のPCには、TPM(トラステッドプラットフォームモジュール)が搭載されており、既知のオペレーティングシステムしか起動できないことを確認できます。Trusted GrubはTPMをサポートしているため、TPMとTrusted Grubを組み合わせることで、実行中のカーネルが承認済みのカーネルであることを保証できます。

TPMの採用は、あなたにとっても、あなたにとっても不利になることに注意してください。それはすべて、誰が鍵を持っているかにかかっています。TPMの秘密キーがある場合は、コンピューターで実行するものを正確に制御できます。メーカーだけが秘密鍵を持っている場合、それは汎用プラットフォームをロックインされたアプライアンスに変える方法です。


TPMの大きな潜在的な落とし穴(別名Treacherous Computing)を参照するための+1
Eli Heady

実際のソリューションは提供せず、一般的なセキュリティ関連のフレーズに言及するだけです。MITM攻撃についてあなたが言うのは、OPの質問の主要な考えを無視する脅威です。特定の条件が満たされた場合にのみシステムを起動させるチェックサム検証スクリプトの使用。その時点で、実際の基盤となるハードウェアがVMではなく本来あるべきものであることを確認して問題はありません
rozcietrzewiacz

-1

起動したカーネルはメモリに常駐します。それを見つけるスクリプトを作成し/dev/mem、サイズを把握して、チェックサムを計算および検証できます。

HD全体を暗号化することもでき/bootます。パーティションを作成する必要はなく、(ほとんど)カーネルを変更する方法もありません。どうやって?私が考えることができる2つの方法:

  • カーネルをCDに置きます。CDからコンピューターが起動します。これはそれほど難しくありません。数年前にそのようなセットアップを使用したと報告した人もいます。このフォーラムのスレッドの 2番目の投稿参照してください

  • マザーボードがコアブートサポートされており、最小限のカーネルに対応できる十分なスペースがある場合は、BIOSチップに暗号化対応のカーネルを搭載できます。(私はテストする機会がありませんでしたが、これが機能しないかもしれない理由はわかりません。)

編集:これらはすべて、「信頼された」または「検証された」ブート(Gillesが正しく指摘した)に向けた単一のステップにすぎないことに注意してください。完全なメカニズムでは、ブートローダーの段階で何が起こっているか、および基盤となるハードウェアがどのように識別されるかを考慮する必要があります。Google Chromium OSがこれどのように行うかをご覧ください


うまくいきますか?よく分かりません; カーネルが起動後にメモリ内のコードを変更するかどうかはわかりません。読み込まれたときにモジュールがカーネルにリンクされている(ここでアドレスがいくつか変更されている)ため、モジュールをそのように検証できないことはわかっています。必要なセキュリティプロパティが提供されますか?いいえ、私の答えを参照してください。誠実さはトリッキーです!
Gilles 'SO-悪をやめなさい' 11/11/22

あなたは私の答え全体を読んでいないようです。あなたが言及している最初の段落は、実際に尋ねられたことに対する直接の応答にすぎません。方法と同様の私の答えを提示するオプションの残りのあなたは「言及しましたが、より良い(USBのペンドライブとは異なり)、彼らはカーネルの変更に対して安全であるため。
rozcietrzewiacz

@Gilles 前のコメントで「@」を忘れていました。また、あなたが確信していないことを確認しました:インメモリカーネルイメージのダンプを実行し、モジュールの束を追加し、リージョンの2番目のダンプを作成しました-同じです。あなたは、することができますこれを使用します。
rozcietrzewiacz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.