地味な組み込みセキュリティの魅力とは?
丸山 井上先生は今、どんなところにフォーカスして仕事をしていらっしゃるんですか?
井上 今時の言葉で言うとIoTのセキュリティで、いわゆる組み込み機器の情報セキュリティです。その中で特に車載システムのセキュリティをやっています。
丸山 組み込みのセキュリティは、例えば、いわゆるサイバーセキュリティの前線の人、のかたがたに比べると、若干地味じゃないですか。
井上 そうですね、地味ですね。
丸山 とはいえ、縁の下で、みんなには見えないところで、深く研究したり守ったりしている、その魅力みたいなものって何なんでしょうか?
井上 そうですね、たしかに組み込みシステムは地味は地味なんですよね。やっぱりみなさん見えないところで、たとえば家電にしても、車にしても、中のほうで動いている。見えないところで、縁の下の力持ち的な感じなんですけど、ソフトウェアで制御されている部分が多いので、ソフトウェアの力がすごい強くなってますね。それが今、外部とつながることで、それぞれが協調動作したり、クラウドと連携したりするような機能が新しく入ってきているので、やっぱりネットワークとソフトウェアとハードウェアっていうのが、全部一体化して動くとこに、私は魅力があると思っているんです。
丸山 動作の魅力。
井上 私は、そういう細かい動作が、自分で知らないとなんか納得いかないんですよ、昔から。たとえばWebページでマウスでクリックしたらですね、マウスをクリックするということは電気信号が流れるわけですが、そこから全部、画面が表示できるところまで、すべて想像できないとイヤなんです(笑)。いや、ほんとに。
丸山 さすがです(笑)。クリックするとカーソルを合わせたところを押してることになっている。物理的に押してないけど、なんで押していることになっているんだ、とか。
井上 そうそう。そこまで想像してねっていうことを、学生にもよく言っているのですけど。そこまでわかっていないとセキュリティの対策もちゃんと取れないし、原因追求もできない。組み込みのセキュリティって考えた時に、表面的なWebのエンジニアの知識だけじゃなくて、ハードウェアから含めたOSのカーネルから、プログラムの動作っていうところまでわかっている人がいるといいんですね。
丸山 さりげなく、すごくハードル高いですね。
井上 組み込みシステムは、ハードウェアがどうしても絡んでくるので、独自ハードウェアの上で動くソフトウェアのイメージから、ネットワークのところまでイメージできると一番いいですね。僕や丸山さんの世代の人間は、昔、ハードウェアがショボかった時代から――OSもショボかったんですけど――、実はハードウェアまでイメージして、プログラムを作っていたんですよね。
丸山 今はハードウェアを意識しなくても、メモリはいくらでもあるし、ストレージもいくらでもある。
井上 そう。もうC言語で書かなくても、Pythonとかそういう簡単な言語で作っても問題ないので、あまり、ハードウェアを想像しなくなってしまっていますよね。そういうところ、ハードウェアとソフトの境目にいるところに、私は魅力があると思っていますね。
●↓↓併せて読みたい!丸山所長×竹中工務店 後神氏スペシャル対談↓↓
『IoT時代のビルセキュリティを守れ!』
組み込みのセキュリティが守るもの
丸山 サイバーセキュリティの世界は、何が起こったら怖いかっていうことが、一般の人にもかなり行き渡って、例えばコンピュータウイルス怖いとか、ハッキングでいろんなものを見られてしまって怖いとか、ありますよね。ですが組み込みのセキュリティっていうのが、何を守っているものなのかっていうことについては、ちょっと想像しづらいでしょうね。制御系の、いわゆる「セイフティ」の部分なのか、それともハッカーから車に攻撃を受けたら大変なことになるぞみたいな、そういうことのほうが強い前提としてあるのか。組み込みのセキュリティの守っているものっていうのが、みんな想像がつきづらいんじゃないかなと思うんですが。
井上 車に関していえば、動くものなので、ブレーキとかハンドルが外部から制御できてしまったら、非常に問題があるということになります。2015年にBlack Hatで市販車のハッキングが発表されました。それは、遠隔からハッキングすることで、ハンドルとブレーキとアクセルをいじることができるよっていうのをやって見せたんですね。それも売っている車そのままで、何もいじらない状態でできてしまうことが発表されて、それが大きな話題になりました。
丸山 楽々、制御できちゃうっていうことですね。
井上 その車にセキュリティホールが5つぐらいあって、それが順番に解かれてしまって、外部から不正なパケットを送ることで、車の制御ができてしまったということですね。本当に普通に走っている車を、いきなりハンドル曲げたりとかできたりするわけなんで、それはまずいですよね。発表したコンサルティング会社も発表するちょっと前に、ちゃんと自動車メーカーに先に話を持っていって、セキュリティホールを塞いだうえで発表してますけどね。
丸山 特にこういった車が狙われやすいといった傾向はあるんですか?
井上 アメリカの電気自動車メーカーの車がよく狙われている。なぜかというと、そのメーカーの車はいわゆるコンソール周りのものが全部Linuxで作られています。Linuxベースで作ると、なぜか毎回穴があるんですよね(笑)。たとえばログインID。当然組み込みだからそれぞれが固定なんですけど、車種名等を引用したIDで、パスワードがなんか入っているんですけど、そういうのがもうデフォルトIDで入っているので、パスワード総当たりでアタックしたらわかっちゃったとか、そんな話なんです。
丸山 ある意味古典的な、わりとサイバーセキュリティの手法が、そのまま使われてしまうんですね……。
井上 やっぱりLinuxベースで作る時に、車メーカーさんとかに、そういうサイバーセキュリティエンジニアがいないんだと思うんですよ。だって我々にしてみたら、明らかにそこは塞いどけっていうような場所ですからね。Linux使うと、ともかく安直に装置は作れるんだけど、逆にLinuxに存在してる脆弱性と、あとは、ちゃんと設定しないといけない脆弱性が、もうそのまま残ってしまって。
丸山 それは開発のところで、やっぱりセキュアプログラミングみたいな話ですか?
井上 そうそう。セキュアプログラミングというよりも、セキュア設定ですね。
丸山 セキュア設定ね。
井上 ほとんどがプログラミングの前の段階ですね。
丸山 パスワードファイルが暗号化されていないとか?
井上 ああ、それもありますよね。ちょっとここではとても言えないような、オフレコ的な話がたくさんあります(笑)。
丸山 車はすごく安全を考えて作らないといけないじゃないですか。いわゆるセイフティ。セイフティはすごい考えられて作られているんだろうなと思うんですけど、そういうセキュリティの視点、例えばハッカーとかの攻撃とかからの視点から見ると、やっぱり業界としては、まだダメっていう感じなんですか。
井上 たとえばLinuxだったら、Linuxっていうツールを便利なものとして使っているけれど、それが問題を起こす可能性っていうのは、あんまり考えて使っている感じがない。特に車メーカーさんはどこもそうですけど、外注していますからね。だから外注先に技術がないと、言われた通りに作るだけなので、機能的には問題ないけど、そういう脆弱性を残したままで完成させてしまう製品を作ってしまうっていう問題がありますね。
丸山 サイバー犯罪が起きても気づかないかもしれないですよね、ただの交通事故だと思って。
井上 さっきのハッキングされた車の話はほんとに特殊な例で、中核なとこに入れるようにはなかなかなってないですけどね。
●↓↓併せて読みたい!丸山所長×竹中工務店 後神氏スペシャル対談↓↓
『IoT時代のビルセキュリティを守れ!』
つながることの危うさ
丸山 自動運転のセキュリティも同じような状況ですか?
井上 自動運転のセキュリティの話はけっこうよく出るのですが、そのたびに言っているのは、そもそもネットにつながらなきゃいけないんですかっていうこと。なんかみんなネットにつなぐのが前提で言っているんですけれど、でもネットにつながっていること自体がすごい脆弱でしょう。だって携帯電話の電波って簡単に妨害できるんで、電波妨害したら、車、安全モードに入って路肩に止まるんだったら、もう盗まれ放題じゃないですか。サービス妨害もできてしまう。妨害電波なんて専用の機器がないと誰が発信しているかわかんないですからね。だから、そういう簡単なサービス妨害攻撃はできるので、やっぱりつながってないとダメな車は、ちょっと難しいのではないかと私は思っています。定期的にもちろんつながなきゃいけない必要はあるとは思うんですよ。たとえば、道路のデータのアップデートとか、交通状態のアップデートとか、いろんなものをアップデートしなきゃいけないので、ただ、つながった状態がないと動けないっていうのはまずいなと思ってます。
丸山 それって、車だけじゃなくて、例えば配達ドローンとか、そういうものにも同じことが言えそうですね。
井上 配達ドローンも電波妨害されたら時に、そのへんに着陸するのだったら、みんな持っていき放題ですよね。日本はわからないけど、アメリカだったら、なんか自動運転車も含めて、人気のないところを走っている時に、持っていかれると思うんですけどね。
丸山 以前Facebookにそれこそ流れてきた画像で、試験的に町の中で宅配ロボというかルンバみたいなのが危なっかしい感じで荷物を運んでいるのを見たのですが、あれはどう見ても、盗まれるじゃないかと(笑)。機器のセキュリティとかいう以前に、物理セキュリティの問題がありますよね。
井上 他にも、物理的に難しいなと思ったのは、日本は電柱・電線が多いから、そもそもドローンで効果的に飛ばして、目的地まで持っていけるのか、ちょっと心配はありますよね。
丸山 ドローンなんかも、組み込みセキュリティの範囲に入るんですか。
井上 私は直接やってないですけど、原理は同じです。独自の世界の、独自のコントロールをしている世界ですよね。やっぱりそこも、無線通信を必須にしてしまうと、いわゆる簡単な攻撃でものを盗まれるとか、盗られるというという、ほんとにもう簡単なレベルでの、高度じゃないサイバー攻撃が起きる。それから、もっとシンプルに物理的に持っていく、盗まれるっていう、非常にしょうもない犯罪が、そのまま起こるような気がします。
丸山 結局、問題になるのはなんでもそうなんですけど、防犯カメラとか、ルータとか、いわゆるネットワークに常時つながっている機械が、外部から乗っ取られるっていうことなんですね。
井上 そう。そこに不正なプログラムを入れられて、それがいわゆるボットになって、外部をまた攻撃をするというところが、今一番問題になっています。去年から急に話が出てきていますね。
丸山 基本的にカメラにしても、出荷時のままで使いますよね。パスワードにしても、IDもパスワードも出荷時のまま。そしたらもう、Linuxベースなんか完全に乗っ取られますよね。ワンパターンに乗っ取れるから、ひょっとしたらマルウェアを送り込むのも、もう自動でやっているかもしれない。
丸山 ほとんどこれ、素人が使う機械にLinuxが入っていて、それをネットワークにつないでしまうと……っていう話ですね。某メーカーのハードディスクレコーダーが踏み台になるとかですよね。
井上 防犯カメラなんかも、たぶん世界中にあるでしょうね。特に台湾や中国から出荷されてそのまま売られているやつとかが、たぶん何万台もあって、そのままデフォルトの設定で使っていると外部から入れて、もう、中に(不正なプログラムが)インストールできる状態ですね。でもインストールしても、機能としては正常に動いているんで、もちろんなんか重たくなっているかもしれないけど、まあわかんないですよね。
丸山 普通の人は感染していることも気がつかない。だからまあ、出荷する前にちゃんとしないといけないということですね。
●↓↓併せて読みたい!丸山所長×竹中工務店 後神氏スペシャル対談↓↓
『IoT時代のビルセキュリティを守れ!』
複雑化したシステム
井上 そう、そこです。だからやっぱりその、いわゆる仕様を考える人も、ただサービスだけ考えるんじゃなくて、セキュリティとしてどういう仕様を盛り込むかっていうのを、ちゃんと考えなきゃいけないし、作る側も、それが盛り込まれていなくても、これを入れなきゃいけないという意識が必要です。それから発注側が品質検査を当然しますよね、。そこの部隊も、ただの品質検査じゃなくて、セキュリティ面からの評価というのをやれるような体制というか知識もいりますね。だから、みんな、いるんですよね。組み込みのセキュリティってネットワークの知識から、ソフトウェアからハードウェアの知識まで全部いるんですよ。広く浅くを知ったうえで、どこが深いかを見る、みたいな感じですね。
丸山 全体のセキュリティのアーキテクトを考える人は、個々には深く知らなくてもいいけども、ここはこうなってないといけないとか、そういうことを知識として身に付けておく必要がある。
井上 そうですね。車では、やはりセイフティの問題があるので、品質保証という意味では、最後のテストとか、評価は非常に厳しくやっていますね。でも、もう今、システムが複雑になりすぎて、100%やりましたとは言えないでしょうね。だって、車の中のCPUが何個ぐらい載っていると思います?
丸山 たぶん100個ぐらい?
井上 だいたいそのくらい。数十個から100個ぐらい。高級車みたいなちょっといいやつだと、百数十個ぐらい載っています。
丸山 やっぱりいい車のほうがCPUが多い。
井上 なんか、いろいろなものが電動で動くじゃないですか。
丸山 シートとか。
井上 そうそう。そういうとこにも全部ちっちゃいCPUが入っていて。窓にも、窓の開け閉めするだけとか、ワイパーを動かすためだけにCPU入ってますからね。それに一個プログラムが全部に入っている。それは、誰かがプログラム作っているわけですよね。そう思うと、100個ぐらいのプログラムが、なんかの言語で書かれて、入って、開発時にデバッグしているんですよね、一個一個。そう思うと、全部まとめて動いているって、すごいことだと。
丸山 企業のシステムなんかもそうですけど、とにかく複雑化しすぎてて、若いエンジニアが、昔だったら、到達すべき最前線に到達するっていうのが、それほど大変じゃなかったのが、今、何かを作るために覚えなきゃいけないことが、ものすごく増えていて大変なんじゃないかと。
井上 まあね、昔だと、いわゆるホストコンピュータっていうのが一個あって、その中で、なにかしらのプログラムが動いているだけだから。今って、複数のサーバに分散して、それが連携して動いたりしてますからね、ちょっとわかりにくいけど、でもWebベースになって、すっきりしている感じはありますけど。
丸山 ただ、でも、複雑になっているのは確かで、どこで、バグが起こった影響が、どこまでそれが影響するかとかというのはわかりづらいんじゃないですか。再現も難しくなってきて。
井上 YahooとかGoogleなどの検索サービスのサーバも、あれ何台ぐらいあるか知ってます?まあ、数千から数万台オーダーですけど、でもそれが、見た目は1台のサーバに見えているわけじゃないですか、普通に検索する時は、「www.google.com」って打つだけだから。それを実際はうまく、なんか分散する仕組みで、みんながいっぺんに送り込まれている要求を処理しているんですよね。で、ちゃんと同じ結果返すでしょ。というとこは、かなり技術的には難しいことやっているっていうことですよね。だから、そういう意味ではコンピュータシステムも、どんどん、ネットワークとコンピュータの世界は、どんどん複雑化しているのは確かですね。
丸山 そういった、やっぱり物理的なセイフティをつなぐ時に、昔だったら、こうしてればこう動くやろうみたいな、見てわかりやすかったものが、今はどういうプログラムによってこれが動くのかが、だんだんわかりづらくなってきて、何か問題が起こった時に、原因究明が停滞するっていうことはありませんか。
井上 セイフティの最高峰というとね、宇宙船は一般的ではないから、品質保証的には飛行機が一番厳しく作られているはずです。飛行機のコンピュータって、3台コンピュータが載っていて、それぞれ違うプログラムで動いているんですよ。でも、同じアルゴリズムで動いていて。例えば、いわゆる舵を曲げるとかね、エンジンを動かすところも、3台で多数決で決定しているんですよね。それのプログラムを作る時に、別々の人が3台作るんですよね、同じ仕様に従って。さらにヨーロッパのほうのエアバスは、さらに言語も変えるというのが確か仕様のはずなので、プログラム言語、開発言語も変えたうえで、3台別々のものを同じ仕様で作って、同じ答えが出るようになっていないとダメだという。すごく厳しいですよね。ソフトウエア開発に関しては、一体いくらかかっているのか、恐ろしいですけどね。でももう、飛行機も本当に、ソフトで飛んでいるようなもんなんですね。
●↓↓併せて読みたい!丸山所長×竹中工務店 後神氏スペシャル対談↓↓
『IoT時代のビルセキュリティを守れ!』
自動運転は性善説では難しい
井上 あと、組み込みシステムで難しいのは、ライフサイクルが長いんですよ。
丸山 そうですね。
井上 だから、いわゆるファームウェアのアップデートとか、パソコンだったら、今はバグがあったらアップデートすればいいや的な感じありますよね。頻繁にアップデート情報流れているし。でも、家電にしても車にしても、アップデートできないじゃないですか。つながったところからできるのかもしれないんだけど、一応Over-The-Air、OTAという言い方で、遠隔ファームウェアアップデートの仕組みを研究している人もいますけど、やっぱり外部から書き換えられるということは、ほかの人もできるかもしれないので、リスクもあるから、結局今は、ディーラーに持っていった時に、専用の機械でアップデートするような感じですよね。そこでしかできないから、なかなか、バグがあったり脆弱性があっても、直せないんですよ。だからライフサイクルが、いやこれは、ライフサイクルとは別の問題ですね。アップデートの間隔がオフラインでしかできないっていう問題と、もう1つは、車って10年から15年ぐらい使われるものだから、そのあいだ通用するプロトコルにしなきゃいけない。たとえば、鍵の長さ。暗号化したとしても、鍵の長さはこれくらいあればいいだろうと思ったら、10年後はそんなの全然スカスカですよっていうことになるかもしれないわけです。だから10年後、15年後を見て、仕様を決めなきゃいけないっていうね、難しさがあります。家電だとね、5年ぐらいなんですけどね。
丸山 そういう、先のことが見えてる人じゃないとダメってことなんですね。
井上 ダメということはないけど、そこの先まで見て、やっぱり考えなければね。最新の技術を盛り込んだらいいというものでもなく、最新っていうのは、すぐ廃れる可能性があるんで。だから手堅い技術を入れておいたほうが、実はいいかもしれないわけです。ここが組込みの難しいところです。だからいわゆるIoT機器と言われているものは、全部だいたいそうなんです。
丸山 車でカーナビがと言ったらビルトインされていましたよね。あれが失敗で、車は10年もつけど、カーナビ10年経ったら、さすがにこれは古いですね。
井上 やっぱりサービスオリエンテッドでまず「何をしたいか?」を考えるべきなんですよね。でも、とりあえず今、つないだりしようということが先行しているから、自動運転をするということが目的になっていることもあって、何に使うかというところを絞ってやったほうが、本当はいいですよね。自動運転は、僕は微妙な気がしていますよ。アメリカでは絶対盗まれると思うんだけどな、無人運転したら。
丸山 僕もそう思います。ワーッてね。
井上 だって難しい技術いらないですよ。だって、車って、前に車いたり、横に車いたら、停まるしかないでしょう? だから前と横に2台でいて、スピード落としていれば止まるじゃないですか。そのままトラック積んで、持っていけるでしょ(笑)。そんな中、何百万円もする機械がね、走っているわけですよ。
丸山 まあ、難しいのは難しいですね。
井上 だから運用まで考えるとね、性善説だけでは済まないところが出てくるので、そこが難しいわけです。
井上博之(いのうえ・ひろゆき)
大阪大学大学院を修了後のメーカーでのUnixワークステーションや通信機器の開発の経験を活かし、ネットワーク関連企業のコンサルティングや企業の立ち上げなどを担当。2007年から広島市立大学大学院情報科学研究科にて、インターネットなどの通信プロトコルやアプリケーションの研究を行う。現在は同大学の准教授で、他にCCDS研究開発センターIoT脆弱性ユニットチーフ、SECCON実行委員、セキュリティ・キャンプ全国大会講師、HiBiSインターネットセキュリティ部会顧問などで活躍している。興味のある分野は、組込みシステムの情報セキュリティ、特に広域ネットワークにつながる家電や自動車のセキュリティで、その脆弱性やセキュアな通信プロトコルに関する研究開発を行っている。 主著に『IoT時代のセキュリティと品質―ダークネットの脅威と脆弱性』(共著、日科技連)、『ステップ方式で仕組みを学ぶIPネットワーク設計演習』(ナノオプトニクスエナジー)、『マスタリングTCP/IP IPv6編 第2版』(共著、オーム社)、『ユビキタステクノロジーのすべて』(共著、NTS)などがある。