マザーボードのChassis Intrusion検知機能を使ってみた

## Disclaimer
+ いくつか具体的な商品名がリンク付き出てきますが、特にその商品を推奨するものではありません。
+ 全ての環境に適合するかどうかについては検討していません。

## 環境
+ MSI製マザーボード(2020年に購入)
+ 予算 1,500円

## 動機
セキュリティについて考えを巡らせ、Secure BootやfTPMなどBIOS設定項目を調べている時に、`Chassis Intrusion`という項目があることに気づいた。

確かにSecure BootとかTPMによるBitLockerとかも大事だが、内部を物理的にいじられることを考えると、記憶媒体の入れ替え・追加やOSの再インストールなど侵入方法が多彩になり、対策を考えようとするだけで気が遠くなる。

ということで、最初の組立時には意識することさえなかった、このケース開放検知機能を使ってみようと思うに至った。

## マザーボード側の仕様
マザーボードの説明書によると検知に用いる`JCI1`コネクタは2pin([4pinのメーカー](https://www.asus.com/jp/support/faq/1003970/)もあるっぽい)で、ショートさせるとケース開放イベントと認識するらしい。

## スイッチの NO と NC 
pinをショートさせるというと、自作PCをやる人なら電源用のスイッチを思い出すかもしれない。電源スイッチは押された時に2pin間をショートさせている。

今回必要となる侵入検知スイッチは、物理的な構造を考えるとケースを閉めている時に押されている状態になる。つまり、ケースを開けている時(押されていない時)にショートするので電源スイッチとは逆になる。

調べてみると、スイッチにもノーマルオープン(NO)とノーマルクローズ(NC)という[種類があり](https://faq.as-1.co.jp/faq/show/37064?category_id=12188&return_path=%2Fcategory%2Fshow%2F12188%3Fpage%3D1%26site_domain%3Ddefault%26sort%3Dsort_access%26sort_order%3Ddesc&site_domain=default)、電源スイッチは NO で今回プッシュ式のスイッチにするなら NC スイッチが必要ということが分かった。

## 作業
### 部品調達
専用の部品が売っていれば良いのだが、探しても見つからなかった。売っているものは特定のPCケース専用だったりして後付けは難しいようだ。

上述の NO/NC スイッチで検索してみると、売られていて使えそうなものは[磁気式のドア開閉センサー](https://www.amazon.co.jp/dp/B08XZ28DR9)くらいしかなかった。またそれだけだとマザーボードへの接続に問題があるので、[2ピン延長ケーブル](https://www.amazon.co.jp/dp/B0CGGVWLBX)を併用することにした。

費用はセンサーが3個入り999円、ケーブルが2個入り386円で、1,500円に満たない出費であり、お手軽に出来るセキュリティ対策と名乗っても許されるのではないだろうか。

### 加工
延長ケーブルはピンの部分を切り落とし、被覆を少し剥がして配線を露出、センサー側も被覆を少し剥がして配線の露出を増やし、よじりあわせてセロテープで巻いた。使ったセンサーはNO/NC兼用で3本のケーブルがあり、1本使わないケーブルが出て邪魔になるので3本をさらにテープで巻いて固定した。

商品の説明書きとNO/NCが逆な気がする。

### 設置
センサーをケースのどこにつけるか迷った。カバーの<ruby>縁<rp>(</rp><rt>ふち</rt><rp>)</rp></ruby>につけようと思ったが、カバーの各辺にはズレ防止用の出っ張りが辺のほぼ全長に渡って存在し、これが邪魔になって四方どの辺にもつけることが出来ない。

たまたま、電源を入れる部分が鉄板で囲まれており、鉄板とカバーの隙間がセンサーと固定用のシールを足した厚みに近かったので、そこに取り付けることにした。今回取り付けたケースは電源から離れたところまで鉄板が続いているので電源から離して設置したが、電源の近くに着けた場合、電源からの磁気の影響を受けるかどうかは検証していない。

磁気センサーだから裏表逆にしても使えるかなと思ったのだが、センサーの片側を裏表ひっくり返すと離れている扱いになるので、本体側は本来ドアに貼り付ける面と反対側に付属の粘着シールを切って貼り付けた。

カバーを閉めた時にセンサーの位置が合わないとケースが開いた扱いになってしまうので、位置を合わせるのが難しかったが、目分量で位置決めしたにもかかわらず運良く一度で成功した。

### BIOS設定
`Chassis Intrusion`はもちろん`Enabled`に(ケースを閉めてから変更する方が適切かもしれない)。

BIOS画面に入ればケース開放警告のリセットが可能なので、BIOSパスワードの設定は必須である。安定稼働している時はBIOS設定を長期間いじらないのでBIOSパスワードを失念しないように注意。

## 動作確認
ケースを閉めて、BIOS設定で`Chassis Intrusion`を`Enabled`から`Reset`に変更。MSIのマザーボードの仕様かもしれないが、この状態から`Save Changes`だけでは警告が消えず、`Save Changes and Reboot`すると警告が消える。この時`Chassis Intrusion`の設定は自動的に`Enabled`に戻っており、もう一度BIOS設定画面で`Reset`から`Enabled`に戻す必要はない。

一度、電源のスイッチまでオフにしてコンセントを抜き、ケースを開けてから閉めても赤字で"Warning!!! Your case had been opened. Press any key to continue..."というメッセージが出て一旦停止する。

ケースを開けずに電源をコンセントから抜きしばらく放置したからといって、放電してショートしたと判定されるわけではないことも確認した。

## 問題点
### ケース開放警告は無視が可能
"Press any key to continue"となっていることからわかるように、キーを押せば警告を無視して通常起動を続けることは可能。あくまで検知機能であって防御機能ではない。

ケースに鍵(簡易なものやケンジントンロックなど)をかけられるものがあったような気がするので、防御という意味ではそちらの方が優れているかもしれない。

### 裏蓋とかは無防備
マザーボードの裏面に相当する側も開くことができるPCケースは多いと思うが、今回の作業だけではそちらには検知機能が及ばない。

しかし、これは裏蓋にもセンサーを設置して並列つなぎにすれば対策は可能である。それに、裏蓋を開けたところから重要な部分にアクセスするのは物理的に困難なことが多いのではなかろうか。

また。裏蓋まで警戒するなら、フロントパネルやバックパネルのPCIスロットからの侵入まで警戒しなければならないだろう。

### 磁気を用いている点
磁気センサーなので、[磁石を用いてセンサーを回避できる](https://www.akm.com/jp/ja/products/tri-axis-magnetic-sensor/what-makes-akm-different/why-use-tri-axis-magnetic-sensors/)という記述を見かけたので、今回の作業で完璧ということはできない。

実は身近なものとして[冷蔵庫の照明用の部品](https://www.amazon.co.jp/dp/B07RB5NQL3)が売られている。冷蔵庫の扉が開いている時だけ中の照明をつけるための物なのでNCスイッチに相当し、今回の目的に適合するはずである。

しかし、電極がコンセントっぽい外見をしていて絶縁がやりにくそうなのと、円筒形で固定が難しそうだったので今回は採用を見送った。

### ケース開放検知された時の対応を考えておく必要がある
前述のように防御ではなく検知なので、ケース開放が検知された時の対応を考えておかねばならない。

たとえば、記憶媒体が一度取り外されたかもしれないわけだが、読み出しや改ざんが行われていないかといった懸念が出てくる。そう考えると、ドライブの暗号化など他のセキュリティ機構と組み合わせて使うことが必要と言える。

### 検知機能設置を公表すべきか
防御機能ではなく検知機能であることを考えると、ケース開放検知を行っていると公開して抑止力にするべきところであるように思える。

しかし、上述のように検知手段に過ぎず回避手段も多いことを考えると、非公開にして罠的に用いる方が良いのであろう。

あれ? この記事を公開して自分自身は大丈夫なのか…?

### 盗難には無力
BitLockerとかでも言われている気がするけど、本体をまるごと持ち去られるケースには無力。でも、本体がなくなったらさすがに気づくだろ(笑)

## 改訂履歴(表現の修正などは除く)
+ 2024/7/28: 初版