
SSDの性質を利用したランサムウェア被害からのデータ復元支援ツール 20
ストーリー by hylom
とりあえず普通にバックアップは取っておきましょう 部門より
とりあえず普通にバックアップは取っておきましょう 部門より
一般的なSSDではデータの書き換え時に既存のデータを物理的には削除せず、削除フラグのような仕組みを使って論理的にデータを見えなくするような処理を行っている。これを利用し、マルウェアによってデータを意図せずに書き換えられた場合にデータを復元する手法が考案された(@IT)。
昨今ではデータを暗号化し、それを解除する対価として金銭の支払いを求めるような「ランサムウェア」が問題となっている。この手法を利用することで、データがランサムウェアによって暗号化された場合でもデータを復元できる可能性があるという。ただし、事前にSSDのコントローラにデータを保存しておくような仕組みを導入しておく必要があるようだ。
事前にSSDのコントローラにデータを保存 (スコア:0)
って何?
#非会員で読める部分からはトリムの頻度を抑えるツールに思えた
Re:事前にSSDのコントローラにデータを保存 (スコア:5, 参考になる)
ググったらこの論文 [illinois.edu]が元ネタっぽい。
手法の考案だけでなく、実装し、性能等の検証もしている。
一言でいえば、SSD用ファームウェアを自作したってこと。
・開発したSSD用ファームウェア名:TimeSSD
・開発したデータ復元用NVMeホストドライバ用API名:TimeKit。
ハードウェアは NVMe用 Cosmos+ OpenSSD FPGA 開発キット(ARM Cortex-A9 プロセッサ+1GB DRAM) [flashmemorysummit.com]利用。
豆知識として、一般的にSSDはFigure.1のような構成で、組込プロセッサや組込RAMがあり、それを動かすファームウェアが載る。
で、PC本体よりSSDファームウェアが侵害されるリスクは小さいから、うまいことSSDのファームウェアを作れば、ソフトウェアベースの対策より信頼性が増すだろう(firmware-isolated solution)、という意図で研究している様子。以前にも、同じ研究チームがFlashGuardというのを開発しているが、そっちはランサムウェアが暗号化したデータだけを対象にデータを保存しておくもので、SSDの全データを扱うものではなかったようだ。
構成はFigure.2に、追加したデータ構造はFigure.3に書いてあるが、大元のSSDファームウェアからの変更が最小限になるようにして、Time-Travel Indexという名の過去データの論理アドレスから物理アドレスへの逆変換情報を持ったり、GC対策したり、Bloom Filterというので期限切れデータ管理(Figure.4)をしたりしている云々。
…詳細は直接資料を読んで下さい。
Re: (スコア:0)
訂正:誤)TimeKit→正)TimeKits
Re: (スコア:0)
>SSDのコントローラにデータを保存しておくような仕組みを導入
推定補完すると、
SSDのコントローラ(のファームウェア)に(書き換えた)データ(位置)を(ある程度の時間、記憶領域の別な場所に)保存しておくような仕組みを導入
じゃないかな
# 別のセキュリティリスクも誘発しそう
スナップショットとの違い (スコア:0)
考えてみたけど大して思いつかなかった
スナップショット領域として消費する分を減らせるだろうけども、
結局、削除フラグをつけた領域が上書きされないようにマークするのであれば変わらない
うまくすれば高速化できるかもしれない?くらい
なるほど (スコア:0)
バックアップを取っておけってことだね!
# 繋がってちゃ諸共だろうけど
Re: (スコア:0)
既存のファイルシステムでも、削除は管理領域をつぶすだけだし、NTFSなんかは
ラウンドロビンであっちこっち割り当てるので削除したデータは残りやすいと思うし、
ドライブローカルで余分に容量持つならこっちで管理するからよこせ、っておもうし。
バックアップに勝るものないと私も思う。
Re: (スコア:0)
ほんとにそんなことしてんの?
テンポラリファイルがディスク全面にばら撒かれちゃうじゃんそれだと。
小さなファイルの生成と削除を繰り返す一般的に想定される使い方の場合は、
HDDの美味しい外周を優先的に再利用して欲しいんだけど。
逆の場合 (スコア:0)
ファイルをなるべくわかりにくいように消したい場合には何度か上書きするツールを使ってたけど、SSDの場合はどうするのがいいんだろう。
Re: (スコア:0)
あなたのツールの動作がよくわからないけど、多分大体同じ。
(1) 消したいファイルを削除する。
(2) ファイルシステムの残りが0になるまで、適当なデータファイルをひたすら書く。
~~~~~~~~~~~~~~~~
SSDで複数のパーティションに分けて使っている場合、NANDの空き領域はパーティションを
超えて共有される場合がある(実装依存)から、パーティションではなくて、ドライブ全体で
書き換えないとダメなのが注意点。
今回の技術も、ランサムウェアが上記のような消し方をしたり、ファイルを暗号化して
しまうようなタイプで、SSDが十分な空き容量がないと復元できなさそうだよね。
Re: (スコア:0)
いやいやいや
Secure Erase系で
0埋めでいいでしょう
それでも不安なら
1埋めもした上で0埋めしてくれるやつもあるし
この手の作業で
意味のあるファイルでパーティション残してとか意味がわからない
Re: (スコア:0)
それなりの頻度で破棄対象のデータだけ消す話だと思うんだが、
そんなストレージ丸ごとの破棄・再利用前の全削除にしか使えん手段提示するほうが意味がわからんよ。
いずれ破棄する他の機密をフルコピーなんて真似した挙げ句古い側の完全削除を毎回やるとかまだるっこしいにも程がある。
空き容量埋めるだけならあらかじめゴミファイルで空き容量削っときゃかなり高速化出来る。
機密や個人情報や暗号関係など、利用が完了したら早急に完全抹消したい需要はそれなりにあるだろ。
まぁ今どきならオンメモリで保持して書き出さないって選択肢あるかもだが……
Re: (スコア:0)
全部0だと圧縮されて数バイトしか消してない、ってことになったりせん?
SSDってそういうことやってたと思うけど。
やるなら乱数書き込みじゃないかな…。
Re: (スコア:0)
ウェアレベリングするので、どこでも好きな空き領域を空き領域と同じ分だけ書き込めば良いんじゃないかな?
(例えばドライブ容量500GB、パーティションA:100GB/300GB、パーティションB:100GB/200GBのとき、
300GBを一気に書き込むのではなくA、Bのどちらか好きな方に100GBを書いて消してを3回繰り返す)
Re: (スコア:0)
ファイルシステム上では破棄可能でも生のストレージ側ではそんなのわからないし、
全ブロックが任意に交換可能とも限らない。
例えばセクタNまではチップ1、セクタMまではチップ2としているとか、
ウェアレベリングはブロックアドレス番号の上位Nビットが違うアドレスに対してのみ可能にしてブロック順の記憶容量をケチっているとかな。
Re: (スコア:0)
ああ、あと書いて消してだとアドレス被るのでキャッシュが効く可能性があるな。
100GB書いてりゃ追い出されるかってーと…
…それまでのアクセス状況とキャッシュアルゴリズム次第ではあるだろうが。
安全のためには微妙。
Re: (スコア:0)
SSDメーカーの配布ツールなどで明示的にトリムコマンドを発行
Re: (スコア:0)
暗号化ファイルシステムで保存しておき、消したいときは暗号キーを削除。
上書きする必要なし。
>SSDではデータの書き換え時に既存のデータを物理的には削除せず、削除フラグのような仕組み (スコア:0)
HDDでもそんな仕組みだったはず
HDDというかOSかな
Re: (スコア:0)
OSというかファイルシステムかな。
このツールの場合はSSD側のファームウェアというランサムウェアに改変されるリスクが少ない場所でそれをやるというのが違い。