恐怖のIoT時代

個人的にIoTに恐怖を覚えている。開発者としても、ユーザとしても。

なぜならば、ネットワークに繋がることによって、作る側も使う側も痛みを伴う変化が求められるのに、よりによって決定権のあるお偉いさんがたに「痛み」に気づいている素振りがみえないからだ。

機器がネットワークに繋がっているか否か――この違いは非常に大きい。ネットワークに接続するようになった時点で、本来ならば、その機器の使用期間中はソフトウェアのセキュリティ更新を継続していかなくてはならない。しかし現時点で既に、ユーザが気づかぬうちにサポートが終了していて、実は危険な状態にある機器は意外と多いはずだ。

ついでに言えば、ちょっとした機器であっても、ネットワークに繋がるようになった時点で「手軽にソフトウェアを自動更新できる仕組み」が求められてしまう。自動更新機能をもつアプリケーションや機器が既に世の中に出回っていて、それに慣れたユーザが多いこともあるが、何より今後ネットワークに繋がる機器が爆発的に増えるのならば、各機器を一々手動で更新していたら日が暮れてしまうからだ。自動更新の機能を開発・テストしなくてはならないだけでなく、そのような機能を組み込めるだけの土台(ハードウェアやOS)を用意する必要もある。セキュリティ更新時に「内蔵フラッシュROMに収まりません」的問題が発生しないように、ハードウェア・リソースに若干の余裕を持たせることも必要だろう*1。あと当然ながら更新データの配信システムの構築・運用も求められる。

(実は自動更新回りは微妙な話が多い。例えば機器側でのアップデータの検証をどうするか(GOM Playerの一件ような話から、通信中にデータが化けた場合の話まで)、アップデート中に停電が起きた場合にその後の復旧手順をどうするか、いつ自動更新を行うのか、自動更新のタイミングをユーザに設定させるならUIをどうするか、自動更新中は他の処理を停止するのかバックグランドで更新できるようにするのか、などなど。あと、それらの機能を入れるならそれなりにリッチなOSとハードウェアじゃないとソフトウェアが完成しそうにないのだがどうするの……?)

こういったコストの発生は作る側としては大変な話ではあるのだが、それよりも問題なのは、現在の製造業の構造が「新しいモノを売って儲ける」というモデルであるため、収益をもたらさない「既に売ってしまったもののサポート」が比較的低調である点だ*2。IoTの時代には、むしろ既に売ってしまったもののサポートが重要になる。何しろWindows XPの12年半でさえ文句を言う人はいたのだから。

とはいうものの、営利企業である以上は利益を出さなければ存続できない訳で、赤字覚悟でサポートを充実させるのは無理な話だ。

この問題に関しては、製品に寿命を設ける(例えばサポート終了前にメーカがハードウェアの内部仕様やソフトウェア一式をオープンソース化して公開するとか)云々という話も出ている。ある面において、この方針は正しくもあり、的外れでもある。

サポート終了後にも使われ続ける機器は多い。そのような機器にセキュリティ問題が発生した時、誰かが対応できる体制は望ましい。その意味では、製品に寿命を設けることは正しいだろう。

しかし一方で、IoTの時代には、ネットワークに繋がる機器は爆発的に増加するはずだ。つまり、サポートが終了する機器も爆発的に増加するだろう。果たして、どれだけのサポート終了機器をオープンソース・コミュニティでサポートできるだろうか?

発想を転換するべきだ。「既に売ってしまったもののサポート」が何らかの収益をもたらす仕組みが必要ではないだろうか?

個人的には、製品に寿命を設けるよりも前に、かつてのアンチウイルスソフトでの方向転換のように、「年額/月額制でのサポート」のような形式が消費者に受け入れられるようにならない限り、製品を作る側として「コスト的に辛い→消極的なサポート&早々にサポート終了」という態度をとらざるをえないと思う。何しろWebアプリケーション分野とは異なり、広告収入や個人情報で儲けようにも厳しいのだから。

ソフトウェアというものは、ハードウェアのような物理的制約が非常に小さい*3ので、既存のモノ(建造物・航空機・船舶・その他)とは比較にならないほど複雑な代物に仕上がっていることも多い。これほどまで複雑なものを継続的にメンテナンスするには、それ相応のコストが必要だ。この「それ相応のコスト」をペイできる当てがない限り、危険な「ネットワーク家電」の類は増えつづけていくだろう。

ここまでをまとめると:

  1. IoTでネットワークに繋がり続けている限り、継続的なサポートが必要。
  2. 継続的サポートのコストを誰が支払うか? 営利企業的には、ユーザに転嫁するしかない(年額/月額制サポートの導入など)。
  3. 最終的には、サポート終了と共にオープンソース化する等の仕組みが必要。

上記(2)はメーカとユーザ双方に変化が及ぶ。メーカは従来の「売り切り」型とは異なるスタイルに変化しなくてはならない。ユーザは、家電を購入すると今まで以上にランニングコストが発生するようになる。社会的には、中小企業の参入を考えるなら、何らかの小額決済の仕組みの普及が必要となるだろうし、セキュリティ更新機能の共通規格や開発用フレームワークを整備して、開発している組み込み機器へのセキュリティ更新機能の組み込みや、配信サーバの構築を手軽に実現できる仕組みを整えることも求められるはずだ。

上記(3)はメーカの知的財産絡みの戦略と関わってくる。開発者的には、サポート終了前の機器と終了後の機器の双方で用いられている共通モジュールの取り扱いをどうするか、という点が気になる。知財とは無関係な話としては、オープンソース化した後に有志が作成した更新パッケージをどう配布か、という問題がある。この辺を簡略化するためにも、セキュリティ更新機能の共通規格を策定・採用するとか、何らかのフレームワークを使うことで有志が更新パッケージの作成や配信を少ない労力で実現できるようにするとか、そういう活動が必要だろう。

どちらにしろ、本気でセキュアにIoTしたいなら、現状の延長線上では無理だ。

個人的にIoTに恐怖を覚えているのは、まずお偉いさんがたが従来の延長線上にIoTを見ている気がするので、このまま進むと開発者として忙しくかつひもじい思いをしそうだし、ユーザとして穴の多い機器を使うことになる(それも、世の中の流れ的に使わざるをえず、かといって頻繁に買い換える訳にもいかない状態に陥る)気がしてならないからだ。

一方で、仮に「年額/月額制サポート」が一般的になったとして、今度は開発者として「長期サポートのために10年前の製品のお守り(新しい技術の習得をどうしよう?)」的な悲哀を感じることになる可能性や、ユーザとして定期的に出費が発生する(しかも削れない……)という家計的な心配があって、やはり夜も眠れず朝起きれないのだった。

いやでも本当に、継続的セキュリティ更新のコストをどうするのだろう?

*1:下手にギリギリにチューニングしてしまうと、セキュリティ更新時に再度その手の試行錯誤が必要となり、迅速に対策済みバイナリをリリースできなくなってしまうだろう。

*2:この辺は、実際には各メーカによってスタンスが違うので、一概に決め付けることはできないのだが……。

*3:そのソフトウェアを動かすOS・ハードウェアに起因する制約は存在する。