web-dev-qa-db-ja.com

ワイプRAMシャットダウン時にコールドブート攻撃を防ぐために

私のシステムはフルディスク暗号化を使用して暗号化されています。つまり、/ bootを除くすべてがdmcrypt/luksを使用して暗号化されています。 コールドブート攻撃 について心配しています。研究者 実証済み の場合、そのコンテンツは 約5分 の間抽出される可能性があります。

次の手順を教えてください。

  • シャットダウン/再起動プロセスの最後のステップで新しいカーネルにkexecをトリガーする方法(クリーンなマウント解除、ファイルシステムの破損の防止、古いカーネルの上書きの確認)
  • すべてのRAMを消去するカーネルの作成方法

つまり、Ubuntuで同じようにする方法を説明していただけますか?

シャットダウンを検出する方法は? RAM Wipe?の開始方法RAMは、ユーザーが「シャットダウン」をクリックしたとき、または「パニックスクリプト」を開始したときにワイプする必要があります。

あなたの努力をありがとう!

以前の作業:

機能が現実のものになるのを見たい場合は、Ubuntu Brainstormに投票してください!

http://brainstorm.ubuntu.com/idea/30076/

20
James Mitch

古いRAM DDR2、512 MB、または1024 MBを使用していない場合は、CBAについて心配する必要はありません。

オリジナルのリサーチをご覧ください ここ (PDF)。

注意深く読むと、DDR2以前のみがこの攻撃を受けやすいことがわかります。 DDR3は、コンピュータケースの取り外しと凍結の手順を許可するには早すぎる電圧を失います。そのため、ドアに応答する前にプラグを引っ張るだけです。

また、 このペーパー は、DDR3がCBAの影響を受けないことを確認します。 DDR2 RAM=を使用しているために実際に自分を保護したい場合は、BIOSで有効にします。

  1. 停電後の自動起動
  2. 起動時のRAMチェック

dDR3と同じですが、プラグを抜いた後、プラグを差し込みます。コンピュータが起動し、RAMをチェックして拭きます。十分に効率的にワイプできない場合、ブートプロセスはシステムをRAMに再度ロードします。CBAを許可するには速すぎます。

コメントで提供した link から:

したがって、結論として、コールドブート攻撃は、疑わしいコンピュータシステムのメモリを取得するための主要な方法と見なすべきではありません。代わりに、ソフトウェアベースとハードウェアベースの両方の取得(FireWireなど)を含む他の手法を試してから、上記のシステムに対してコールドブート攻撃を実行する必要があります。ただし、前述の手法が利用できない(つまり、FireWire接続がないか、システムログインコンソールまたはリモートメモリの取得ができない)場合、または調査官が両方を理解していると想定して、コールドブート攻撃を行うことができます。どのように、どこで問題が発生し、失敗するか。
この調査が示したように、コールドブート攻撃は、ここに実施されたほとんどの実験で、メモリ常駐の暗号化キーを一貫して見つけたり抽出したりできなかったため、特に法的に健全または信頼できるものとして確立できませんでした。 。同じことは、ほとんどの実験で見つかったよりもはるかに多くの文字列とキーワードが表示されるはずのさまざまな文字列とキーワード検索についても言えます。さらに、実証されたように、コンピュータメモリをフラッシュ凍結するという行為だけでは、前記メモリの獲得が成功することを保証しない。すでに検討されている他の要因と変数は、これらの問題とその根本的な原因を完全に調査しています。したがって、コールドブート攻撃は疑わしいシステムのメモリを取得するのに役立つ場合がありますが、この方法は万能薬と見なされるべきではなく、代わりに最後の手段として使用されるべきであるというのが、この研究の著者の意見です。他の道は使い果たされています。
最後に、劣化がほとんどないかまったくない買収が成功したとしても、少なくとも法学が成立し、獲得された記憶の完全性が証明されるまでは、法廷で正当な証拠として立たないでしょう。健全で理解可能な方法論を使用して無傷。捜査は、容疑者のコンピューターのメモリを取得するより適切で信頼できる方法を確立し続けています...

また、実験結果を確認すると、システム2と6でのみAESキーが正常に抽出され、システム2の仕様を見るとウォームブートアタックであることがわかります-1024 MB RAM 533 MHz-これは古いものです-他のシステム-256のシステム6 RAM/128 RAM-これは自明だと思います。

これがまさに彼らの結論がそうだった理由です:

捜査は、容疑者のコンピューターのメモリを取得するより適切で信頼できる方法を確立し続けています...

実際、非常に重要なデータがある場合は、フルドライブ暗号化を使用するだけでなく、別の暗号化ファイルに保存する必要があると思います。カスケードアルゴリズムで暗号化され、ディスクの暗号化中に使用されたものとは異なるパスワード。 PCをシャットダウンする安全な方法が必要ですか?ここにあります:

  1. True Cryptカスケードアルゴリズム暗号化ファイルで安全なデータを保持する
  2. 蛇を使う
  3. シャットダウンを処理するスクリプトを作成します。

Windowsの場合:

truecrypt.exe /wipecache
shutdown -s -f -t 1

Linuxの場合:

truecrypt /wipecache
shutdown -h now

ワイプキャッシュにより、シャットダウン後に脆弱なデータがRAM)に残っていないことが保証されます。誰かがコールドブート攻撃を実行した場合、せいぜいシステムにアクセスできます。データは個別に暗号化されたファイルに保存されません。 。

17
mnmnc

UCLAのピーターA. H.ピーターソンは、概念実証技術を作成し、暗号化されたRAMでシステムを安全に実行するための理論を開発しました。ソリューションは、コールドブート攻撃を防ぐために明示的に設計されています。彼の論文の名前はCryptkeeperです。彼がソフトウェアをダウンロードできるようにするのか、それともUCLAからライセンスを取得できるのかはわかりません。ただし、少なくとも原則として、RAMの内容全体が開示されていても安全な暗号化システムをRAMに対して設計することは明らかに可能です。

このソリューションのパフォーマンスへの影響は、シナリオの「病的」度に応じて、9%のオーバーヘッドと9倍のスローダウンの間で測定されます。 9%という数字は、FirefoxでのWeb閲覧に当てはまるものとして引用されていますが、どのユースケースがパフォーマンスを9倍遅くするかについては述べていません。

Petersonのソリューションは、提案されているRAMを「ワイプ」しません。むしろ、「安全なキー非表示メカニズム」を使用して、内容を取得するだけで復号化キーが開示されるのを防ぎます。 RAM。実装の詳細はわかりませんが、論文で説明されていると思います。

この論文は2010年に発行されました。

IEEEのieeexplore Webサイトで購入できます。 PDF)として直接ダウンロードすることもできます。誰かのWebサイトから無料で入手できます。「cryptkeeper RAM」のGoogle検索結果に表示されます...しかし、どれくらいかはわかりませんその結果はそこに残ります。

RAMあなたが尋ねたようにこのソリューションは「ワイプ」しないので、私はこれを答えではなくコメントにしたいと思いました。しかし、ピーターソンの研究が技術的に正しい場合、これはRAMをワイプするよりも、実際的な効果は同じか、場合によっては「より良い」効果です。その理由は、熟練した物理的な攻撃者がシステムプログラムによるRAM ifたとえば、操作を完了する前にバッテリーをユニットから引き出すか、電源ボタンを押し続けるなどの操作が行われることを期待していました。Petersonのソリューションは、コンピュータは、ワイプを完了するために命令の実行を継続することが許可されています。代わりに、CPU自体がなんらかの信じられないほどの瞬間に強制終了された場合でも、メモリは常に保護されますあなたが攻撃者に反応する機会さえもない前に技術の偉業。

そして、「信じられないほどの技術の偉業」とは、Stuxnetのようなものを意味します。

5
allquixotic

memtest86 はRAMのワイプにかなり優れていると思います。私はいつも以下を試したいと思っていましたが、試していませんでした。試してみたらアップデートします。

kexecのマニュアルページを参照 。また、.isoをkexecしようとしないでください。ただし、isoを解凍して起動可能なバイナリを取得する必要があります。上記のmemtest86サイトでは、バイナリをダウンロードできます。

最初に起動する対象をロードするには、kexecコマンドを使用する必要があります。

だから私はあなたができることはだと思います:

kexec -l {path-to-memtest86-bootable-binary} --append=console=ttyS0,115200n8

トリガーを引く準備ができたら:

kexec -e

私は考えています(ただし、間違っている可能性があります)--append=console=ttyS0,115200n8はmemtest86をシリアルポート経由で動作させる。そのため、ビデオ出力に表示されなくても機能していることを確認できます。これは、memtest86がビデオの初期化を実行しないため可能性があります。 Xの実行中のインスタンスを強制終了することは、おそらく良い考えです。

Debian kexec-toolsパッケージ(Ubuntuでも利用可能)はこれをシャットダウンスクリプトにフックするため、編集した場合/etc/default/kexec最後に、再起動する代わりにkexecを呼び出すようにシャットダウンプロセスに指示できます。つまり、完全なシャットダウンに関心がある場合です。

緊急時には、sync; kexec -eは機能します。

ただし、一部のチップセットは、いったん初期化されると、メモリの特定の領域がアドレス指定されている場合にロックアップを引き起こす可能性があります。これが実際にどのように機能するかわかりません。

kexecが機能しない場合の適切な妥協策は、memtest86をブートローダーにインストールし、それをデフォルトのブートアイテムとして配置し、自動選択まで1秒遅らせることです(または、遅延がなく、キーを押して起動するようにします) memu)。これにより、「フレッシュブート」状態からmemtest86にすぐに入ることができますが、すぐにはいきません。

これはビデオRAMを考慮していないことに注意してください。そのための解決策は ビデオをセットアップするRAMブロックデバイスとして 、および出力/dev/randomを数回繰り返してブロックデバイスに送信します。

2
LawrenceC

これは古い質問ですが、私は貢献できると思います。前述のように、ソフトウェアベースのメモリワイプは、電力が突然遮断され、ワイプソフトウェアが実行されない可能性があるという理由だけで、最適なソリューションではありません。

私は問題を説明するための最良のシナリオを想像できます。あなたは自宅のコンピューターで違法なビジネスを行っています。ある日突然、電力が消え、FBIチームが家のドアを襲撃し、逮捕し、オタクの技術者がコンピュータのケースをすばやく開け、冷たいガスを使ってメモリ状態を凍結し、いくつかを購入しますコールドブート攻撃を行う時間です。

したがって、この問題を解決する最良の方法は、コンピュータのケースを開けるのを困難にすることで(金庫のようなもの)、コンピュータの安全性を高めることです。または、電池式の抵抗を使用してボードを加熱してメモリを破壊することもできます。ケースを切り替えます。高温での数秒でデータが破壊されたり、チップが破壊されたりすることもありますが、魔女はこの状況では大きな問題ではありません。

2
Daniel Ribeiro

誰もまだ言及していないのは、GitHubの0xPolyが6年前にLinux/OSxツールをコーディングしたことです。 Centry と呼ばれます。ページから私たちは機能を持っています:

特徴

  • ユーザーフレンドリーなGUIインターフェイス
  • Centryは、パニックモードのときに次のことができます。
    • 画面をロックする
    • すべてのTruecryptディスクをアンマウントし、パスワード/キーファイルキャッシュをクリアします
    • Sdmemを使用してRAMにゼロを書き込みます(UNIXのようなシステムの場合))
    • ACPIシャットダウンを強制します(電源ボタンを押したままの状態)。
    • ネットワーク内の他のすべてのノードにパニック信号を伝播します
  • ECC対応システムのセキュリティを向上させるための設定
  • 大幅にカスタマイズ可能
  • LinuxおよびMac OSと互換性があります。 Linuxのセキュリティが大幅に向上しました。

enter image description here

0
xendi

問題は、コンピューターが実行中であり、画面がロックされていることです。この時点で、AESキーはRAMに保存され、ユーザーはコンピューターから離れています。侵入者は、コンピュータのケースを開いてRAM=モジュールを取り外しながら、電源を入れたまま、コンテンツを読み取る別のデバイスに置くことができます。システムをシャットダウンしたりフリーズしたりする必要はありません。抽出前のモジュール。RAMは、AESキーを保持することは信頼できませんが、プロセッサのキャッシュは、TRESORという名前のソリューションと同様です。残念ながら、古いLinuxカーネルと、パッチとカーネルをコンパイルします。

0
Derek