巨匠マイケル・マン監督でもコンピュータセキュリティの表現はうまくいかない。映画「ブラックハット」

「「ヒート」「コラテラル」の巨匠マイケル・マン監督5年ぶりの最新作<ブラックハット>という文字がまず最初に目に飛び込んで来るこの映画。いきなりキャッチコピーで巨匠ですよ、巨匠。自分の中ではTVシリーズのマイアミ・バイスでガッツリ当てた製作総指揮の巨匠でも、最後に見た巨匠が関わった映画は「ハンコック(2008)」、悪くはないが微妙な映画のイメージだ。

謎のサイバー攻撃とそれを追う天才サイバー犯罪者

ざっくりいうと、謎のサイバー攻撃で、香港の原子炉は暴走して破壊するわ、シカゴの取引所で先物取引が急騰するわ、さあ大変ということで、刑務所にいる天才サイバー犯罪者ハザウェイを引きずり出して、犯人を追うというストーリーである。

この映画の特徴はコンピュータセキュリティに関してリアルな表現をしようとしている点だ。巨匠のインタビューにこうある。

僕はStuxnet(スタックスネット)に引かれるようになっていた〜
(blackhatパンフより)

この巨匠の言葉にある”Stuxnet“がこそがこの映画の最大のキーである。Stuxnetを短く説明すると、世界で初めてのマルウェア兵器と認識された悪意のあるソフトウェアなのである。より詳しい説明をしよう。

映画を理解するためのキーワード”Stuxnet”

Stuxnetというのは工場の生産ラインやプラント制御といった場面で使われている独シーメンス社製制御システムを狙ったマルウェアである。マルウェアとは悪意のあるソフトウェアの総称で、誰でも一度は聞いたことがあるであろうコンピュータ・ウイルスもマルウェアの範囲に入る。Stuxnetは、厳密には自律的に感染を広げるコンピュータ・ワームに分類されるマルウェアである。

独シーメンス社製制御システムはイランの核燃料施設のウラン濃縮用遠心分離機に使われている。Stuxnetによる攻撃によって核燃料施設ではウラン濃縮が長期間に渡り出来なくなった。イランの核開発は大きな遅れを発生させるどころではなく、原因不明の機材不調で続行不可能なレベルになったといわれている。

StuxnetはUSBメモリからも感染可能である。核燃料施設の制御システムは外部からネットワーク的にも物理的にも隔離されており外部からネットワーク経由で侵入するということはできない。つまり誰かが核燃料施設の制御用コンピュータにUSBメモリを差し込んだのだ。そしてStuxnetは内部で接続している制御用コンピュータに次々と感染していった。しかも、静に深く潜り込み、プラントを止めるのではなく遠心分離機の精度を微妙に狂わせ、出来上がった濃縮ウランが兵器には使えないレベルの精度になる、という巧妙な手法を取る。

Stuxnetが世に知られることになったのは、後にかなり感染が広がってからベラルーシで発見されてからである。後の分析の結果、極めて巧妙に作られいることがわかった。まだ知られていないソフトウェアの脆弱性(セキュリティ侵害を起こすことができるソフトウェアの誤り)を使っている、確実に動作する、目立った形で動作しない、分析が難しいように作られている、などなどだ。しかも、西側のシステムには感染しない、もしくは感染しづらいように出来ており、感染地域の6-7割はイランで、あとはイスラム圏の工業が進んでいる諸国がほとんどだった。

今ではStuxnetは「エネミー・オブ・アメリカ(1998)」でお馴染みの米国国家安全保障局NSAと、イスラエル参謀本部諜報部局情報担当ユニット Unit8200が、イランの核開発を妨害するための「兵器」として作ったマルウェアということになっている。なので、この映画のウリでもある原子力発電所の原子炉を暴走させるシーンは、あながち絵空事ではない。

攻撃側の技術描写は正確…だが

ネタバレぎみになるので、これから観ようと思う人は読むのを避けた方がよい。

続きを読む

Raspberry Pi に OpenJDKをインストールしようとしたらうまくいかなかった

Raspberry PiにOpenJDK をaptでインストールしようとしたら途中でコケてしまい困った。次の方法でインストールした。

% sudo apt install openjdk-9-jdk
(エラー)

これでエラーになってしまったため、困る。ぐぐってみると個別にインストールするとうまくいくよ、というアドバイスがあったので試してみる。まず最初にopenjdk-9-jre-headless と openjdk-9-jre の2つを削除してから個別にインストールする。

% sudo apt-get remove openjdk-9-jre-headless openjdk-9-jre
% sudo apt-get install ca-certificates-java
% sudo apt-get install openjdk-9-jre-headless
% sudo apt-get install openjdk-9-jre

最後にもう一度 openjdk-9-jdk をインストールし直す。

% sudo apt install openjdk-9-jdk

とりあえずインストールだけは無事に終わった。

rock64のUSB3.0に外付けハードディスクをつけてパフォーマンスを計測してみた。

rock64のUSB3.0の口に外付けハードディスクとしてBUFFALO 外付けハードディスク 4TB テレビ録画/PC/PS4/4K対応 静音&コンパクト HD-AD4U3をつけて計測してみた。これくらいの速度が出ていれば困ることはないだろう。ちなみにrock64 + 4TB HDDの構成でNASとして利用している。

$ time dd if=/dev/zero of=./data.dat bs=8192 count=1000000
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 55.6718 s, 147 MB/s

real	0m56.642s
user	0m0.572s
sys	0m25.776s

$ time dd if=./data.dat of=/dev/null
16000000+0 records in
16000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 48.1263 s, 170 MB/s

real	0m48.132s
user	0m7.672s
sys	0m33.244s
利用しているUSB 3.0接続のハードディスク

rock64のネットワーク性能を計測してみた

rock64はカードサイズのSBC( Single Board Computer)である。そのネットワーク性能をiperfで計測したので掲載しておく。サーバーがrock64側で、クライアントはi7搭載のノートPCである。同じ環境でデスクトップとノートPC間でiperfを試しても同じパフォーマンスだったので、rock64のパフォーマンスに関しては十分な性能が出ていると判断して良いだろう。

$ iperf -c rock64.local
------------------------------------------------------------
Client connecting to rock64.local, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.100.5 port 48250 connected with 192.168.100.56 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   940 Mbits/sec
$  !!
iperf -c rock64.local
------------------------------------------------------------
Client connecting to rock64.local, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.100.5 port 48252 connected with 192.168.100.56 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   940 Mbits/sec