コールドブート攻撃を防ぐためにシャットダウン時にRAMを消去する


20

私のシステムはFull Disk Encryptionを使用して暗号化されています。つまり、/ boot以外はすべてdmcrypt / luksを使用して暗号化されています。研究者が実証したコールドブート攻撃は、コンテンツが約5分間抽出されることを懸念しています。

以下に関する指示を提供できますか?

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

すなわち、Ubuntuで同じことをする方法を教えてください。

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

あなたの努力に感謝します!

事前作業:

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

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


6
「シャットダウン」をどのように検出するつもりですか?単に力がなくなっただけで、ソフトウェアではそれができません。また、攻撃者は物理的にアクセスできるため、USVに依存することには問題があります。リンクするウィキペディアの記事を引用すると、「攻撃を実行するために、マシンはコールドブートされます。コールドブートとは、コンピューターを完全にシャットダウンせずに電源を「オフ」にしてから「オン」にすることを指します。 、「リセット」ボタンを押します。 "
-CodesInChaos

2
ユースケース:ドアをノックします。現在の状況:シャットダウンできますが、暗号化が有効になるまで5分かかります(コールドブート攻撃のリスク)。RAMワイプスクリプトを使用する場合:パニックボタンを押すと、すべてがほぼ瞬時に安全になります。スクリプトの準備ができたら、簡単に拡張でき、USBドライブを取り外すときにアクティブになります。被害者がUSBドライブを取り外すのに十分な速さである場合、誰かがノートブックを強奪した場合でも機能する可能性があります。
ジェームズミッチ

4
RAM DDR2またはDDR3がある場合は教えてください。DDR3はコールドブート攻撃の影響を受けません。強制電源オフ後、数秒間だけ電圧を維持します。ここでノックする場合は、プラグを引きます。古いRAMがある場合-BIOSで2つのことを有効にします-1.停電後の自動起動は最後の既知の状態になります。2.ブートごとにラムのサイズを確認します。これにより、BIOSがRAMをクリアし、その後システムをロードしている間に、プラグを引き、プラグを差し込んでドアに行くことができます。これはあなたが必要とするよりも速くなります。
mnmnc

4
2012年です。10歳のラップトップを使用していない限り、コールドブート攻撃はありません。暗号化されたデータにアクセスしたい場合は、システムのセキュリティホールを悪用するか、トロイの木馬を送信してデータを取得します。同じことが州機関によって行われます。ドアを突破してCBAを試みることは、現在利用可能な暗号化アルゴリズムを考えるとあまりにも危険です。ボックスに一般的ではないネジがあれば十分です。CBAを使用しようとすると、プラグを引っ張った後、手が空いたままになります。
mnmnc

6
ご存知のように、この程度のパラノイアは、あなたにもっと興味を持っている黒人ヘリコプターを作るだけです。
ダニエルRヒックス

回答:


17

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

ここで元の研究をご覧ください(PDF)。

注意深く読むと、この攻撃を受けやすいのはDDR2以前のみであることがわかります。DDR3は、コンピューターケースの取り外しとフリーズ手順を可能にするには速すぎます。そのため、ドアに答える前にプラグを抜くだけです。

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

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

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

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

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

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

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

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

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

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

Windowsの場合:

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

Linuxの場合:

truecrypt /wipecache
shutdown -h now

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


1
2010年の別の論文を見つけました。dtic.mil / cgi-bin / GetTRDoc?AD=ADA545078 [PDF]一部のビットもDD3に関するものですが、DD3がこの攻撃に対して安全であるとは断言できません。
ジェームズミッチ

2
この結論には行きません。この質問は、法執行機関の回避に関するものではありません。実際、法執行機関を回避することに関する質問である場合、議論を中止します。法執行機関について話さないでください。産業スパイについて話しましょう。4GBまたは16 GB以上のRAMを持ち、高価で重要なドキュメント、スケッチ、ソースコードなどを操作していた人。彼の文書がRAMから盗まれた場合、たくさんのお金が必要です。
ジェームズミッチ

2
私はユースケースを明確にすることを嫌いますが...情報は法廷で証拠として受け入れられるかどうかについてではありません。また、他の人にはRAMを消去する正当な理由があります。法執行機関は、目撃者保護プログラムを隠したい。シークレットサービスは彼らの知性を隠したい。業界はビジネスの秘密を隠したい。暗号化キーが安全であれば、問題ありません。残りのデータは、ほんの少しでも安全であり続けたいと思っています。私の元の質問は開いたままです。
ジェームズミッチ

1
多くの人がドライブを暗号化し、RAMの一部を再構築できることに気づいた場合は、それを防ぐための措置を講じることを望みます。グーグル、あなたはほとんどの人が電源が切れた後RAMがデータを含んでいることに気づいていないことがわかるでしょう。ディスク暗号化を物理的なセキュリティに置き換えることができれば、人々はディスク暗号化に煩わされることはありません。暗号化と物理暗号化の両方の概念には、存在する権利があります。セキュリティは常にビットでのみ機能します。これは不足しているビットです。
ジェームズミッチ

1
はい、そうです。人々の知識レベルは貧弱です。しかし、それらをより安全にするソリューションを組み込むことはできません。セキュリティにはdyscyplineが必要です。平均的なジョーは、誰かが彼のクレジットカード番号を盗むのを恐れているので、フルディスク暗号化を使用しません。絶対に安全にしたい壊れやすいデータがある場合-Truecryptを使用して暗号化ファイルを作成する-ドライブ全体を暗号化しないでください。Truecryptには、上書きしてRAMメモリからキーを永久に削除するスイッチ「ワイプ」があります。あなたはそれをショーツに置くことができます。大砲でハエを狩らないでください。
mnmnc

5

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

このソリューションの測定されたパフォーマンスへの影響は、シナリオがどの程度「病理学的」であるかに応じて、9%のオーバーヘッドと9倍の速度低下の間です。9%の数字は、Firefoxを使用したWebブラウジングに適用されるものとして引用されていますが、どのようなユースケースがパフォーマンスを9倍低下させるかについては述べていません。

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

この論文は2010年に公開されました。

IEEEのieeexplore Webサイトで購入できます。また、誰かのWebサイトから無料でPDFとして直接ダウンロードすることもできます。「暗号キーパーRAM」のGoogle検索結果に表示されます...しかし、その結果がいつまで表示されるかわかりません。

このソリューションはあなたが尋ねたようにRAMを「ワイプ」しないので、私はこれを答えではなくコメントにしたいと思いました。ただし、Petersonの研究が技術的に正しい場合、RAMを消去するのと同じ実用的な効果、または場合によっては「より良い」効果が得られると思います。その理由は、熟練した物理的な攻撃者が、そのような操作が発生することを予期していた場合、システムプログラムのRAM消去の試みを中断する可能性があるためです-たとえば、操作の前にバッテリーをユニットから引き出したり、電源ボタンを押したりすることコンプリート。Petersonのソリューションは、ワイプを完了するためにコンピューターが命令の実行を継続するために必要な時間枠に基づいていないため、より安全です。代わりに、メモリは常に たとえ攻撃者に反応する機会を得る前に、CPU自体が技術の驚くべき偉業によって即座に殺されたとしても、保護されます。

そして、「技術の驚くべき偉業」とは、Stuxnetのようなものを意味します。


素晴らしい発見。間違いなく私から+1。ただし、確認には使用できません。ドキュメントを読むには料金が必要です。個人的には私はそれを信用しません-それは一般的に使用されていませんが、ほとんどの場合、実装バグがあります。家の前に鉄筋コンクリートの壁を作りたいのに、裏側にフェンスさえ持っていないような気がします。
mnmnc

一方、一般的に使用されていないという事実により、攻撃者に知られる可能性は低くなります。常に攻撃者と防御者の間の猫とマウスのゲームです。最善の解決策は、不明瞭/未知性の恩恵を受ける真に堅牢なセキュリティシステムを持つことです。それができない場合、2番目に良い解決策は、TLSのような堅牢でもある、よく知られた公にテストされた解決策を持つことです。これはTLSのように広く採用されていないため、堅牢であるかどうかはまだわかりません。ふむ シュレーディンガーの猫またはハイゼンベルクの不確実性タイプの問題。
-allquixotic

1
また、参考までに、「Cryptkeeper RAM」の上位のGoogle結果は、この大学院研究者の論文の直接ダウンロードPDFであり、彼自身のWebサイトから直接入手できます。彼のニックネームは明らかにPedroであり、tastytronic.netドメインでホストされています。こちらこちらをご覧ください。それで、彼は彼が彼自身の自由意志の彼自身のウェブサイトに論文を置いたと私に伝えます、そしてそれはそれでパブリックドメインですか?または、少なくとも「shhhhはIEEEに通知しない」で一般にアクセス可能です;-)
allquixotic

素晴らしい。リンクありがとうございます。興味深い講義になります。
mnmnc

はい、面白く、おそらくRAMを消去するよりも安全です。残念ながら、取得するのはさらに非現実的です。したがって、元の質問に対する回答を得ることもできれば幸いです。完璧ではありませんが、良いストップギャップ。共有してくれてありがとう。
ジェームズミッチ

2

memtest86はRAMの消去にかなり優れていると思います。私はいつも以下を試してみたいと思っていましたが、試していませんでした。試してみたら、更新します。

kexecマニュアルページを読んでくださいkexec.isoを試さないでください。ただし、isoを解凍し、ブート可能なバイナリをスナッグする必要があります。上記のmemtest86サイトで、バイナリをダウンロードできます。

kexecコマンドを使用して、最初に起動するものをロードする必要があります。

だからあなたにできることは

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

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

kexec -e

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

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

緊急時には、sync; kexec -e動作します。

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

うまくkexecいかない場合の良い妥協点は、memtest86をブートローダーにインストールし、それをデフォルトのブートアイテムとして設定し、自動選択まで1秒の遅延を設定することです(遅延なしで、キーを押してmemuを起動します)。これにより、 "fresh-boot"状態からmemtest86にかなり迅速に移行できますが、即座にはできません。

これはビデオRAMを考慮しないことに注意してください。その解決策は、ビデオRAMをブロックデバイスとしてセットアップ/dev/randomし、数回の反復でブロックデバイスに出力することです。


2
それを見て、グーグルなど。tails.boum.org/bugs/sdmem_does_not_clear_all_memory/…によると、memtestには1つの問題が残っています。「ワイプされていない少量のメモリが残っています。」とにかく、kexecのものは便利で簡単に見えます。
ジェームズミッチ

2

これは古い質問ですが、貢献できると思います。前に述べたように、ソフトウェアベースのメモリワイプは最良の解決策ではありません。単に電源が突然切断される可能性があるため、ワイプソフトウェアは実行されません。

問題を説明するための最良のシナリオを想像できます。自宅のコンピューターで違法なビジネスを実行している。ある日、電力が突然消えて、FBI部隊があなたの家のドアを襲撃し、あなたを逮捕し、オタクの技術者があなたのコンピューターのケースをすぐに開き、その中に冷たいガスを使用して記憶状態を凍結しますコールドブート攻撃を行う時間。

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


私はいつもここでテルミットについて考えました:
コンラッドガジェウスキ

1
テルミットは確かに素晴らしい解決策です...発火しやすく、反応を止めることは不可能です。安全なアクティベーター回路を作成する必要があります...それが偶然に反応を開始した場合、あなたは本当に苦労するでしょう。
ダニエルリベイロ

0

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


ラムをサポートするという主張はaesキーを保持していますか?
ブルーベリー-Vignesh4303 13年

これは、RAMの仕組みが理解できないことを示しています。データを保持するには、N msごとにRAMコントローラーを更新する必要もあります。
ジェフリー

-2

申し訳ありませんが、あなたは妄想的です。まず、他のユーザーが示したように、明らかにコールドブート攻撃は古いハードウェアでのみ機能します。

それでもそれが脅威であると考えている場合、ワイピングは解決策ではありません。

コールドブート攻撃には次のものが含まれます。

  • マシンのコールドブート
  • メモリから暗号化キーを清掃するための軽量OSの起動

誰かがなんとかコールドブートを実行できた場合、明らかにワイパーには実行する機会がありません。そのため、インストールする意味はありません。

これが攻撃の主なケースです。攻撃者が実行中のサーバーを自分でコールドブートしたくない場合(たとえば、監視アラートがトリガーされるため)、代わりにクリーンシャットダウンの5分以内に攻撃を実行するのを待ちます。この場合:

  • 汎用のRAMワイパーでも効果はありません。攻撃者はマシンの電源を入れてキーを清掃するために物理的にいると想定されているため、ワイパーが実行を開始する直前にマシンをコールドブートすることもできます。(この時点でアラートを監視することが期待されています。)
  • 最初にFS暗号化キーの正確な場所を消去してからRAMの残りの部分を消去する特殊なプログラム(たとえばtruecrypt /wipecache、mnmncが言及)は、攻撃者の仕事をより困難にする可能性があります。それでも:
    • 攻撃者は、ワイパーにRAM全体を実行させないことにより、RAMの内容の一部を清掃することができます。しかし、少なくともFS上のデータの大部分は安全です。
    • 解決策は100%確実なものではありません。攻撃者がコールドブートの時間を計ることを難しくするだけです。

したがって、この攻撃を本当に心配している場合は、カンフーを習得し、シャットダウンするたびにマシンの隣に5フィートのガードを立てることをお勧めします。または、BIOSでブートパスワードを使用しますか?推奨される対策はどちらも100%効果的である必要はありません。攻撃者は依然として技術的な手段を使用してMBからBIOSパスワードを読み取る可能性があります。攻撃の時間枠が切れるように、5分間遅らせるだけです。

最後に、誰かがリモートで全機能を実行することを心配している場合、あなたはすでに激しく苦しんでいます。


2
古いハードウェアでのみ動作することは証明されていません。これをセキュリティフォーラムに投稿しました!妄想かどうか。追加する建設的なものがない場合は、返信しないでください。妄想的な人たちに、妄想的なことについて話し合いましょう。これについて多くの人々が議論していますが、元の質問へのリンクをいくつか追加します。
ジェームズミッチ

建設的なことは何ですか?この攻撃に対するメモリワイピングの非効率的な対策について詳しく説明しました。メモリを消去するというあなたの提案を議論する人々は、それを攻撃に対する有効な対策にしません。率直に言って、このワイパーを追加することは技術的に興味をそそりますが、それは単なる目的のためです。コールドブート攻撃を防ぐためではありません。
m000

「コールドブート攻撃には、マシンのコールドブートが含まれます」>間違っています。ラムを取り出し、ドライアイスで冷却します。「メモリから暗号化キーを清掃するための軽量OSの起動」>間違っています。RAMが冷却された後、別のマシンで調べることができます。元の質問をご覧ください。ドライアイスのデモへのリンクがあります。
ジェームズミッチ

1
DDR2対DDR 3について:DDR 3が原因で状況が改善したと主張する研究論文はありません。それは単なる証明されていない主張です。研究論文の著者にメールしてください。DD3の方が安全だとは言わないでしょう。
ジェームズミッチ

1
@JamesMitch「DDR 3のおかげで状況が改善したと主張する研究論文は見つかりません」多分あなたは論文を見つけられないかもしれませんが、TrueCryptの著者がそのように主張しているなら、私たちは信頼できます。こちらをご覧ください:truecrypt.org/docs/?s=unencrypted-data- in- ramと、一番下の最初のアスタリスク*を読んでください。引用:「新しいタイプのメモリモジュールは、古いタイプ(2008年時点)よりもはるかに短い減衰時間(1.5〜2.5秒など)を示していると言われています。」その2008年以来代がRAMに変更されていることを意味します...
mnmnc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.