Swap を暗号化するとハイバネートできない

systemd-logind の suspend-then-hibernate を試してみようとして気づいたのですが,swap file しかない場合,ハイバネート非対応のシステムとして認識されるようです。

正確にはいろいろと細かい設定をすれば swap file でもハイバネートできるようですが,それも FDE されている場合は機能しないはずであるため,PC においてシステムやデータのあるドライブの FDE は必須であるという立場からすれば,事実上 swap file でのハイバネートはできないことになります。

ここのところハイバネートしようと思ったことが一度もなかったので気づきませんでした。実際,SSD のシステムでのハイバネーションはフラッシュメモリの寿命を削る行為であり,少し詳しい人であればあまり使いたくない機能でしょう。とはいえ Windows では標準で使われている機能ですし,ソフトウェア面についてはハイバネーションができたほうがよいことは確かです。すなわち,サスペンド状態のままバッテリが切れてシステムの状態が失われればファイルシステムの整合性に影響がでる可能性も考えられるところ,suspend-then-hibernate のような仕組みを使えばこのリスクを回避できます。

ただ,これは swap file に限った話ではありません。swap パーティションであっても,暗号化する場合は,やはりハイバネートできないようです。システムやデータのあるドライブを平文にしておくほど無茶ではないとはいえ,swap とは(特にハイバネーション状態においては)RAM の内容そのものであるところ,RAM のタンパリングは考慮していないソフトウェアが多いというのが実際のところです。揮発性である RAM と比べてデータの抜き取りがきわめて容易であることを考えると,これは許容できないリスクです。

結論として,ある程度セキュリティを考慮する場合には,ハイバネーションは存在しないものとして考えるしかないようです。それでも私は困りませんが,原理的には suspend-then-hibernate を使えたほうがよいのは先に述べたとおりなので,いつか TPM でも使ったうまい仕組みが実装されることにほんのりと期待したいところです。

コメントを残す

投稿にあたり,完全な IP アドレスが保存されます(公開されません)。

コメントはスパムフィルタで処理され,承認後に公開されます。