パスワードを忘れた? アカウント作成
20069 story

DRAMに残った情報からディスクエンクリプションを解く 111

ストーリー by Acanthopanax
盲点 部門より

capra 曰く、

コンピュータで使われているDRAMは意外にも電源を落とした後も数秒から数分間に渡ってデータを保ち続けるため、ディスクエンクリプションのキーを物理攻撃によって取得することができるという記事が本家/.にて紹介されていました。記事によるとDRAMのデータはマザーボードから外した状態でも保たれ、冷却するとさらに長時間にわたってデータを保ち続けるそうです。このため、不当に(もしくは犯罪捜査などの正当の理由で)DRAMのフルイメージを取得できる可能性があるとのことです。

プリンストン大学の研究者らは実験で、BitLockerおよびFileVault、dm-crypt、TrueCryptといったよくあるディスクエンクリプションシステムに特別な機材を使わずにコールドリブートとマウント攻撃をしかけてディスクエンクリプションのキーを取得することに成功しており、ビット劣化などを補正し暗号キーを取得するアルゴリズムも開発したそうです。リンク先の動画では、DRAMを冷却することによってデータ保持時間が延長する様子や、彼らが開発したソフトを入れた外付けHDからノートPCをブートしてディスクエンクリプションを解読する様子などを見ることができます。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2008年02月23日 7時48分 (#1302162)

    数分間どころか数日間程度電源を落としたままでも持ちますですよ。

    組み込み系でメモリを直接さわってる人ならやったことがあるかもしれませんが、RAMに状態を保存してスタンバイ状態にする仕組みでシステムを作っていたところ、ほとんどの場合において金曜日の勤務終了後に完全に電源を落として帰宅した場合でも土日を挟んだ休み明けにシステムがきっちり復旧できました。

    • その「RAM」って、DRAMですか?
      組み込み機器でのスタンバイ時の状態保存用って普通はSRAMを使うものじゃないでしょうか。

      ・SRAM
      フリップフロップを使って状態を記憶する
      構造が複雑でコストは高く、大容量化が難しいが、動作は高速
      スタンバイ時の記憶維持に必要な消費電力が非常に少ないのが特徴。
      CPU内のキャッシュメモリとかレジスタファイルとかは速度の問題からSRAM式だし、
      組み込み機器などで、消費電力を少なくするためにSRAMを使うことが多い

      記憶維持に必要な消費電力が非常に少ないので、電源を切った状態でも、電源まわりにコンデンサなんかに貯まってる電圧でデータを維持できることもよくある。

      ・DRAM
      コンデンサを使って状態を記憶する
      構造が単純なので、コストが低く大容量化しやすい
      コンデンサはそのままだと放電していくので、定期的に再充電(リフレッシュ)が必要
      リフレッシュの周期はだいたい100msのオーダー
      (リフレッシュそのものはμsオーダーの間隔で行うが、メモリ全域ではなく、部分的に少しずつリフレッシュしていくので、一周するのがそれくらい)
      PCのメインメモリはDRAMを使ってる

      DRAMリフレッシュしないとすぐにデータが飛ぶというのが今までの定説だったのですが、
      原理上は「電源を完全に切った状態でも、内部のコンデンサが放電するまでは、記憶を維持できる」わけです。
      最近のメモリ素子は性能が良くて、リフレッシュしなくても数分持つぐらい放電が少ないってことなんでしょう…
      親コメント
      • by Anonymous Coward on 2008年02月23日 11時26分 (#1302208)
        セルはDRAMで外部インターフェイスがSRAMな「擬似SRAM」ってのがあります。
        リフレッシュは内部で自動的に行われるので外から見たらSRAMなんですね。
        セルサイズがSRAMと比べて圧倒的に小さいのがメリットですな。
        結構身近なものに使われてたりしますよ。安いんで儲からないけど。

        思いっきり中の人なのでACだな
        親コメント
      • >最近のメモリ素子は性能が良くて、リフレッシュしなくても数分持つぐらい放電が少ないってことなんでしょう…

        いくら素子の性能?が良くなっていても,1ビット当りの容量が減っているので,放電する時間は減っているはずでは?
        親コメント
        • by Anonymous Coward on 2008年02月23日 12時35分 (#1302223)
          キャパシタの容量って、あんまり減ってないよ。高くしたり、深くしたり、
          材料変えたりと涙ぐましい努力を続けてますから。
          もっとも、絶縁膜やジャンクションからのリークも増えてるんですけどね。
          親コメント
          • by Anonymous Coward on 2008年02月23日 13時39分 (#1302236)
            別ACです。

            そういう努力をしているのは知ってるけど、それは微細化、大容量化のために
            必要だからやっているわけで、むしろ、数日も情報が残るほどマージンが
            あるのなら、そのマージン分を、さらなる微細化、大容量化にまわせば
            いいのに、と思ってしまいます。

            信頼性を確保するのに、それくらいのマージンは必要ということでしょうか。
            親コメント
            • by Anonymous Coward on 2008年02月23日 15時16分 (#1302303)
              LSIメーカーはDRAMのメモリセル(キャパシタ)1ヶ分のスタティックなデータ保持特性を考慮した設計をしてます。
              一般に外部に公表するスペックではありませんが,学会発表などの際の資料でどの程度のオーダーかはわかります。
              少なくとも常温で数日というほどのものではありません。

              DRAMは読み取りに時にキャパシタにチャージした電荷を「消費」するわけだし,隣接セルの読み書きによる
              ディスターブの影響なども受けるし,個々のセルごとの製造バラツキ・特性バラツキもあるので,メモリの特性と
              して最も重要なセルの電荷保持特性を犠牲にして他の特性向上を目指すという設計はとても恐くてすぐに出来るもの
              ではないはずです。

              細かい話になるけど,DRAMのセルは真空で完全に絶縁されてるわけではないので,結構隣接セルの状態の影響を受け
              ますし,隣接セルの読み書き動作の繰り返しにより特定のセルのデータを化けさせる(ためだけの)テストパターン
              なんてのも作れます。 そういうわけでFLASHメモリの多値セルみたいな技術をDRAMに適用するのはとてもとても.........
              親コメント
            • by Anonymous Coward on 2008年02月23日 14時33分 (#1302273)
              原文読んでないのですが、「最近の素子」だから長時間電荷が残る、ってわけじゃなくて
              読み出す方法を「最近」見つけた、ってことだと思います。
              で、キャパシタの容量が減らないのは、主に微細化が原因です。微細化してもリークが
              減らないんで、保持時間を確保しようとするとキャパシタの容量を減らせないんです。

              それから、保持時間はワースト保証なので長時間電荷を保持するセルは結構ありますよ。
              親コメント
        • by Anonymous Coward on 2008年02月23日 15時33分 (#1302310)
          他の人からも指摘されていますが、実際には、
          大容量化により、リフレッシュサイクルの長期化が必要になり、結果的にメモリセルのデータ保持時間が長くなっています。
          #低リーク化するか、大容量化するかは、各メーカの努力の結晶によるものでしょう
          なので、単純にメモリセルが小さくなったから保持時間が短くなると言うものではありません。
          親コメント
    • by Anonymous Coward on 2008年02月23日 14時17分 (#1302255)
      昔、MSXでリセット後にVRAMの内容を読み出す裏技とか、RAMのワークエリアを書き換えてBASIC-ROMから起動せずジョークプログラムから起動するようにしてしまい、何度リセットしても電源を切っても数日(機種によるとは思うが)放置しないとジョークプログラムが起動してしまう…というようないたずらがありました。
      MSX2+でこの仕様(バグ?)は改善されてしまったのですが…

      もう15年以上前の話しですね…
      親コメント
      • 同じく昔話ですが、FM-7で$FD05番地(だったかな?)に書き込みを行うことでオプションのZ80ボードに制御が移るんですが、そのZ80ボードを搭載していないとDRAMのリフレッシュが止まった状態でハングアップします。[BREAK]+RESETでBASICに戻るとDRAMに書き込んだ内容は1分くらいですが保持されてました。FM-7は64KbitのDRAMを使っていたはずです。
        親コメント
      • MSX ではメモリが起動時に一部消される仕様になったのだけど、その消える部分だけ別の管理領域に退避させておいて、リブート程度では壊れないようにした RRAMDISK (だったかな) というラムディスクドライバを知り合いが作っていました。高速稼動ができるラムディスクに、辞書とかを積み込んで動かしてる場合に、普通のラムディスクだと瞬間停電とかで悲劇にあうところを、何回かそのドライバのおかげで無事に再起動出来ていてたなぁ。結局起動時に全部をクリアすると起動が遅くなるけど、#1302255のイタズラみたいなことだけを阻止するように、一部しかリセットしてなかったのを逆手に取ったラムディスクという事ですね。

        #元々は某パソ通 BBS 局がラムディスクベースで稼動してたことから生まれたソフトだったりするのだが。
        親コメント
  • 時代遅れ (スコア:4, 興味深い)

    by christina (34495) on 2008年02月23日 13時14分 (#1302228)
    メモリに対するこの手の攻撃は10年以上前から存在しているのですが、何故今更出たのでしょうか。
    確かに特別な機材が必要ないというのは気になりますが、そもそも特別な機材を使わない事に意味があるのですか?
    保護回路も一部のメモリ付プロセッサに実装されていますが、それに対応できるとも思えません。
    こんな事をするよりも、メモリを破壊して内容を基盤に焼き付けた方が遙かに早いでしょう。
    その方法なら、保護回路に対する攻撃もある程度知られています。
  • シャットダウン前にDRAMを乱数でクリアしておくとかですかね。
    起動中も暗号キーを保持しているメモリアドレスを移動したり分散したり難読化したりを常にし続けるという感じでしょうか。
    • by Anonymous Coward on 2008年02月23日 12時19分 (#1302219)
      この手のソフトは終了時にメモリを上書き消去するのは常套手段と思ってたんですけどねえ。Truecryptもそうなってる [truecrypt.org]し、たしかGnuPGなんかもそうしてたと思います。 ただ、あくまでもソフトが正常終了した場合のみ消えるので、ハード的に止められてしまうとどうにもならないと。 あと、暗号化ソフトで管理できないOS側のメモリなんかもどうにもできないのでしょうね。そう考えると、OS終了・ハイバネ時にOSが上書き消去するとか、BIOSにやらせるとかいう経路があるといいのかな
      親コメント
    • by Anonymous Coward on 2008年02月23日 11時44分 (#1302210)
      回路が低消費電力になって、ハイインピーダンスな為に、電源が切れても状態を維持してしまうのが問題なんでしょうね。

      グラウンドとの間にリレーをかませておいて、電源が切れたらショートさせておく、みたいな回路を作っておくとか。

      # ずーっと電気回路いじってないので、すぐには思いつかんorz
      親コメント
    • BIOSで、ケースが開けられたら電池の電力でDRAMをフラッシュするとかできるんじゃないかなぁ。
      あといきなり冷却されたときも。
      外部からまずマザーボード上の電池を取り外される対策も必要になるかなぁ。電池は2箇所積んで相互にモニタするとかかな。
      なんか分解不可能な時限爆弾のはなしみたくなるけど。
      親コメント
    • とりあえずの対策としては、物理的に外せなくするor時間がかかるようにするくらいしかないでしょうね。メモリモジュールへのアクセスは極力簡単になってる場合が多いですが、MacBook Airみたいに直付けで対処するとか。

      デスクトップならセキュリティスロットに南京錠でも付けておくと分解し難くなりますが、スロット自体が柔な構造で百円均一のペンチやニッパーで無効化できたり、南京錠も専用工具で簡単に開けられたりしますから難しいですね。
      親コメント
      • >物理的に外せなくする

        今回の方法は、物理的にメモリを外したりしてないよ。
        PCを再起動した時に、メモリに再起動前の状態が残るようにして、それを読み取ってるだけだと思う。
        親コメント
        • >今回の方法は、物理的にメモリを外したりしてないよ。
          > PCを再起動した時に、メモリに再起動前の状態が残るようにして、それを読み取ってるだけだと思う。

          ・たいていのマシンでは、再起動した時の Power-On Self Test(POST) 時にデータが破壊される。でも、たいていのマシンでは設定で無効化できたりスキップできる。
          ・ECCメモリを使うハイエンドマシンでは、状態を安定させるために起動時にクリアされるし、無効化もスキップもできない。でも、他のマシンで読もうとするなら、ECCのおかげでより確実に読める。

          …と、論文の"3.4 BIOS footprints and memory wiping"にあります。

           多くの場合は、ホットスタートして消去されていないRAMを読むという伝統的な手法で事足りるのでしょう。
           で、ブート時のメモリ消去を無効化できないように設定しても、冷却してから取り外して他のマシンに移せばほぼデータ破損無しでDRAMの内容を読める、ってのが cold boot ってわけですね。
          親コメント
        • あ、ほんとですね。
          動画をザッピングしてて勘違いしてたようです。

          てっきり、外部ドライブやUSB起動ができないように設定されたマシンからメモリダンプするために、冷却したモジュールを取り外して別のマシンに移動&USB起動しているのかと思ってました。だから、メモリを外せないようにした方がいいのかなと考えたんです。

          内蔵ハードディスクを取り替えても同様のことはできるでしょうが、分解にかかる時間を考えたらちょっとね。ThinkPadとかMacBookみたいに、簡単に抜き差しできる構造だといろいろ助かるかもしれません。
          親コメント
    • by Anonymous Coward on 2008年02月23日 21時35分 (#1302466)
      実際にこのような攻撃は有効なの? やる意味や状況が存在するのか?

      シャットダウン直後の数分で作業ができて、冷却みたいな大掛かりな作業を行える状況や立場って何?
      自分より早めの終電で帰る同僚のパソコンを狙うとかか?
      親コメント
  • マイコミ (スコア:1, 参考になる)

    by Anonymous Coward on 2008年02月23日 8時12分 (#1302166)
    http://journal.mycom.co.jp/news/2008/02/22/026/index.html [mycom.co.jp]
    に記事がありました。

    youtube http://www.youtube.com/watch?v=JDaicPIgn9U [youtube.com] の解説動画みると
    回収された後の氷殺ジェットの使い道が・・・
  • by nagomi (35277) on 2008年02月23日 8時25分 (#1302167) 日記
    やっぱりメディア媒体を冷やすのはアリなんですね!!

    というわけで、n年後にはこっちの部類になるのでしょうか
    http://srad.jp/article.pl?sid=08/02/21/2348217 [srad.jp]
  • by duenmynoth (34577) on 2008年02月23日 14時11分 (#1302251) 日記
    もしかして回収された古い携帯電話のメモリからデータを再生できるって事でしょうか
  • by tiatia (22244) on 2008年02月23日 15時42分 (#1302315) 日記
    コールドリブートでリブート前のメモリの状態を読み取るわけですよね。
    ハイバネートすれば、コールドリブートする必要もなく、HDDに保存されたメモリの情報を読めばいいような。
    やっぱり、ハイバネートのデータって暗号化されてるのかな?
    • Re:ハイバネート (スコア:2, 参考になる)

      by Anonymous Coward on 2008年02月23日 19時51分 (#1302425)
      例えばWindows VistaのBitlockerは、スワップファイルやハイバネーションファイル
      (というか休止状態にするときに書き出すファイル)も暗号化することが出来ます。

      一応、その辺は長いこと考えられてきた領域なので、各OSともそれなりのソリューションを
      提供していると思いますが、色々と攻撃は考えられています [nsa.org]。

      重要なのは、利用しているソリューション「全体」について、何が保護されて何が保護されないのかを
      知ることでしょう。
      例えば指紋認証で使うデータそのもの(= 画像データ)は鍵にはなりえないので、
      指紋認証を利用するログオンはどこかに本当の鍵を保持している事になります。
      認証ソフトウェアがリバースエンジニアリングされれば一巻の終わりかも知れません。
      (実際には、幾つかの工夫をすることで安全になっていますが。。)
      親コメント
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...