Acanthopanaxによる
2008年02月23日 7時00分の掲載
盲点部門より。
盲点部門より。
capra 曰く、
コンピュータで使われているDRAMは意外にも電源を落とした後も数秒から数分間に渡ってデータを保ち続けるため、ディスクエンクリプションのキーを物理攻撃によって取得することができるという記事が本家/.にて紹介されていました。記事によるとDRAMのデータはマザーボードから外した状態でも保たれ、冷却するとさらに長時間にわたってデータを保ち続けるそうです。このため、不当に(もしくは犯罪捜査などの正当の理由で)DRAMのフルイメージを取得できる可能性があるとのことです。
プリンストン大学の研究者らは実験で、BitLockerおよびFileVault、dm-crypt、TrueCryptといったよくあるディスクエンクリプションシステムに特別な機材を使わずにコールドリブートとマウント攻撃をしかけてディスクエンクリプションのキーを取得することに成功しており、ビット劣化などを補正し暗号キーを取得するアルゴリズムも開発したそうです。リンク先の動画では、DRAMを冷却することによってデータ保持時間が延長する様子や、彼らが開発したソフトを入れた外付けHDからノートPCをブートしてディスクエンクリプションを解読する様子などを見ることができます。
この議論は賞味期限が過ぎたので、保存されている。
新たにコメントを書くことはできない。
環境とメモリの品質によっては数日間残ることもあります (スコア:5, 参考になる)
数分間どころか数日間程度電源を落としたままでも持ちますですよ。
組み込み系でメモリを直接さわってる人ならやったことがあるかもしれませんが、RAMに状態を保存してスタンバイ状態にする仕組みでシステムを作っていたところ、ほとんどの場合において金曜日の勤務終了後に完全に電源を落として帰宅した場合でも土日を挟んだ休み明けにシステムがきっちり復旧できました。
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:3, 興味深い)
組み込み機器でのスタンバイ時の状態保存用って普通はSRAMを使うものじゃないでしょうか。
・SRAM
フリップフロップを使って状態を記憶する
構造が複雑でコストは高く、大容量化が難しいが、動作は高速
スタンバイ時の記憶維持に必要な消費電力が非常に少ないのが特徴。
CPU内のキャッシュメモリとかレジスタファイルとかは速度の問題からSRAM式だし、
組み込み機器などで、消費電力を少なくするためにSRAMを使うことが多い
記憶維持に必要な消費電力が非常に少ないので、電源を切った状態でも、電源まわりにコンデンサなんかに貯まってる電圧でデータを維持できることもよくある。
・DRAM
コンデンサを使って状態を記憶する
構造が単純なので、コストが低く大容量化しやすい
コンデンサはそのままだと放電していくので、定期的に再充電(リフレッシュ)が必要
リフレッシュの周期はだいたい100msのオーダー
(リフレッシュそのものはμsオーダーの間隔で行うが、メモリ全域ではなく、部分的に少しずつリフレッシュしていくので、一周するのがそれくらい)
PCのメインメモリはDRAMを使ってる
DRAMリフレッシュしないとすぐにデータが飛ぶというのが今までの定説だったのですが、
原理上は「電源を完全に切った状態でも、内部のコンデンサが放電するまでは、記憶を維持できる」わけです。
最近のメモリ素子は性能が良くて、リフレッシュしなくても数分持つぐらい放電が少ないってことなんでしょう…
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:4, 参考になる)
リフレッシュは内部で自動的に行われるので外から見たらSRAMなんですね。
セルサイズがSRAMと比べて圧倒的に小さいのがメリットですな。
結構身近なものに使われてたりしますよ。安いんで儲からないけど。
思いっきり中の人なのでACだな
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:3, おもしろおかしい)
「ダーリン」「○○ちゃ」とかいいながらあちこちに電撃をぶっ放しているのでしょうか?!
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:2, 参考になる)
材料変えたりと涙ぐましい努力を続けてますから。
もっとも、絶縁膜やジャンクションからのリークも増えてるんですけどね。
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:2, 参考になる)
大容量化により、リフレッシュサイクルの長期化が必要になり、結果的にメモリセルのデータ保持時間が長くなっています。
#低リーク化するか、大容量化するかは、各メーカの努力の結晶によるものでしょう
なので、単純にメモリセルが小さくなったから保持時間が短くなると言うものではありません。
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:4, 参考になる)
一般に外部に公表するスペックではありませんが,学会発表などの際の資料でどの程度のオーダーかはわかります。
少なくとも常温で数日というほどのものではありません。
DRAMは読み取りに時にキャパシタにチャージした電荷を「消費」するわけだし,隣接セルの読み書きによる
ディスターブの影響なども受けるし,個々のセルごとの製造バラツキ・特性バラツキもあるので,メモリの特性と
して最も重要なセルの電荷保持特性を犠牲にして他の特性向上を目指すという設計はとても恐くてすぐに出来るもの
ではないはずです。
細かい話になるけど,DRAMのセルは真空で完全に絶縁されてるわけではないので,結構隣接セルの状態の影響を受け
ますし,隣接セルの読み書き動作の繰り返しにより特定のセルのデータを化けさせる(ためだけの)テストパターン
なんてのも作れます。 そういうわけでFLASHメモリの多値セルみたいな技術をDRAMに適用するのはとてもとても.........
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:2, 興味深い)
MSX2+でこの仕様(バグ?)は改善されてしまったのですが…
もう15年以上前の話しですね…
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:2, 興味深い)
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:2, 興味深い)
#元々は某パソ通 BBS 局がラムディスクベースで稼動してたことから生まれたソフトだったりするのだが。
ボーカロイドブックマーク [nicovideo.jp]
親コメント
Re:環境とメモリの品質によっては数日間残ることもあります (スコア:2, 興味深い)
1~2秒くらいの停電であれば平然と動きつづけていた記憶があります。
タフでしたねェ
親コメント
時代遅れ (スコア:4, 興味深い)
確かに特別な機材が必要ないというのは気になりますが、そもそも特別な機材を使わない事に意味があるのですか?
保護回路も一部のメモリ付プロセッサに実装されていますが、それに対応できるとも思えません。
こんな事をするよりも、メモリを破壊して内容を基盤に焼き付けた方が遙かに早いでしょう。
その方法なら、保護回路に対する攻撃もある程度知られています。
対策としてはどうなんでしょう? (スコア:2, 興味深い)
起動中も暗号キーを保持しているメモリアドレスを移動したり分散したり難読化したりを常にし続けるという感じでしょうか。
Re:対策としてはどうなんでしょう? (スコア:3, 参考になる)
親コメント
Re:対策としてはどうなんでしょう? (スコア:2, 興味深い)
これは,たぶん,英語の flush が元になっていて,
flash memory と混同されたのが,今回の誤解の
原因ではないかと推測します.
ちなみに,セキュリティの文脈ですと,同様の操作を
ゼロ化 (Zeroize) と呼ぶことが多いように思います.
http://en.wikipedia.org/wiki/Zeroisation [wikipedia.org]
親コメント
Re:対策としてはどうなんでしょう? (スコア:2, 参考になる)
> PCを再起動した時に、メモリに再起動前の状態が残るようにして、それを読み取ってるだけだと思う。
・たいていのマシンでは、再起動した時の Power-On Self Test(POST) 時にデータが破壊される。でも、たいていのマシンでは設定で無効化できたりスキップできる。
・ECCメモリを使うハイエンドマシンでは、状態を安定させるために起動時にクリアされるし、無効化もスキップもできない。でも、他のマシンで読もうとするなら、ECCのおかげでより確実に読める。
…と、論文の"3.4 BIOS footprints and memory wiping"にあります。
多くの場合は、ホットスタートして消去されていないRAMを読むという伝統的な手法で事足りるのでしょう。
で、ブート時のメモリ消去を無効化できないように設定しても、冷却してから取り外して他のマシンに移せばほぼデータ破損無しでDRAMの内容を読める、ってのが cold boot ってわけですね。
親コメント
Re:対策としてはどうなんでしょう? (スコア:2, 興味深い)
>抜こうとすると殆どの場合余計な箇所に接触→ショートして
>記憶を飛ばすようにしとく
公衆電話が、解析されないように蓋を開けると制御プログラムが破壊されるようになっている、って話を思い出しました。
そこまでするぐらいなら、今時ならば、マザーボード直付けで4GBのメモリを付けておいた方がいいと思います。
親コメント
マイコミ (スコア:1, 参考になる)
に記事がありました。
youtube http://www.youtube.com/watch?v=JDaicPIgn9U [youtube.com] の解説動画みると
回収された後の氷殺ジェットの使い道が・・・
なーんだ (スコア:1)
というわけで、n年後にはこっちの部類になるのでしょうか
http://slashdot.jp/article.pl?sid=08/02/21/2348217 [slashdot.jp]
それって (スコア:1)
Re:それって (スコア:2, おもしろおかしい)
親コメント
ハイバネート (スコア:1)
ハイバネートすれば、コールドリブートする必要もなく、HDDに保存されたメモリの情報を読めばいいような。
やっぱり、ハイバネートのデータって暗号化されてるのかな?
Re:ハイバネート (スコア:2, 参考になる)
(というか休止状態にするときに書き出すファイル)も暗号化することが出来ます。
一応、その辺は長いこと考えられてきた領域なので、各OSともそれなりのソリューションを
提供していると思いますが、色々と攻撃は考えられています [nsa.org]。
重要なのは、利用しているソリューション「全体」について、何が保護されて何が保護されないのかを
知ることでしょう。
例えば指紋認証で使うデータそのもの(= 画像データ)は鍵にはなりえないので、
指紋認証を利用するログオンはどこかに本当の鍵を保持している事になります。
認証ソフトウェアがリバースエンジニアリングされれば一巻の終わりかも知れません。
(実際には、幾つかの工夫をすることで安全になっていますが。。)
親コメント
Re:空目 (スコア:1, 参考になる)
現在、
ディスクの暗号を解除したい場合は、PCの前に座っているのが善人
DRMを解除したい場合は、PCの前に座ってるのが(DRMにとって)悪人
という違いがあるので、
DRAMを冷やして取り出すというプロセスを経ないで、
デバッガなりなんなりをアタッチしてRAMの内容を取り出してしまえば終わりです。
そこで、近年はデバッガがアタッチできないプロセスを作れたり、
DRM側が仮想マシンを検出するなどして悪人にRAMの内容を読み取らせないような
工夫が積み重ねられています。
しかし、この手法はそれらの努力を無に帰すだけのパワーがあります。面倒ですけど。
# 多分「悪いDRAM」を作るよりこの手法は簡単。
親コメント
Re:応用ネタ (スコア:1)
親コメント
Re:応用ネタ (スコア:5, おもしろおかしい)
親コメント
Re:瞬停 (スコア:1, 興味深い)
親コメント
Re:応用ネタ (スコア:1)
そこでは網膜の残像を死後取り出して、殺される直前の映像を元に犯罪捜査するというものでしたが。
「死人に口なし」も覆されるのか~って思った記憶があります。
親コメント
Re:応用ネタ (スコア:2, おもしろおかしい)
「部長! 映像出ます!」
「よしっ! ……ううむ、どうやら犯人は女性のようだが……」
「でも絶対領域しか見てませんね、このガイシャ」
「使えねー」
親コメント
Re:応用ネタ (スコア:2, おもしろおかしい)
親コメント
Re:私にとって謎なのは (スコア:4, 興味深い)
(破壊されていれば総ナメになるが、解析対象となる暗号化ソフトが判っている場合、特定パターンの検索で済む)
BIOSレベルでの、ディスクの暗号化の場合は更に簡単。
起動時に仮想メモリを使うとは思えないので、1MBの範囲で捜せば済む筈です。
notice : I ignore an anonymous contribution.
親コメント
どーでもいんなーすぺーす (スコア:1)
電気ショックで蘇生、降霊術で霊の呼び出し、タイムマシンで事件の起こった時間へ戻るだったかと
(ぜんぶそのあと食っちゃってますが)
らじゃったのだ
親コメント