信頼できないコンピュータシステムを安心して使う
基幹理工学部 情報理工学科 木村 啓二
PCやスマートフォンは既に我々の生活に無くてはならない道具となっています。また、その用途も多岐にわたり、インターネットバンキングやスマホ決済などお金を扱うものや、スマートウォッチを介して利用者の健康状態を管理する場面も珍しくありません。これらの金銭や健康に関する情報は、利用者の極めて個人的な情報であり、悪用されるとその影響は極めて大きなものとなります。
サービスを提供する側からすると、例えば映像や音楽のコンテンツをPCやスマートフォンで再生する場合、その不正コピーを防がなくてはなりません。すなわち、サービスにまつわる知的財産の流出を防ぐ必要が生じます。
これらの秘密の情報をコンピュータ内外でやりとりする場合、暗号化は必須の技術です。しかし、コンピュータの中で、その秘密情報を処理する場合、通常は暗号化したデータを復号して使用しなければなりません。では、コンピュータの中身はそのような秘密情報の処理を任せられるほど信頼できるものでしょうか?さらに、最近ではクラウド上でサービスを提供することも普通になっていますが、クラウドは秘密情報を安心して任せられるものでしょうか?
PCやスマートフォンなどの現在のコンピュータシステムでは、複数のアプリケーションが一つの機械の中で同居していて、同時並行的に動作しています。これらのアプリケーションに、CPU時間やメモリなどのハードウェア資源を適切に割り当てるのが、例えばPCであればWindowsなどのOSの仕事となります。このとき、OSはアプリケーション間で干渉し合わないように、ハードウェアと連携して各々の独立性を担保します。すなわち、OSとハードウェアが適切に動作していれば、秘密情報を処理するアプリケーションの安全は守られます。
クラウドでは、一つのサーバーコンピュータの上で複数のOSが動作しますが、この場合もハイパーバイザーと呼ばれるOSのOS的なソフトウェアが、やはりハードウェアと連携して各OSに対する資源の割り当てと独立性の保証を行います。
しかし、我々のPCやスマートフォンには、度々OSの更新を要求する通知がやってきます。これは、OSのバグ(不具合)が判明し、その修正が行われたためです。このバグとして、攻撃者のOSへの進入を許してしまうような、極めて危険なものが度々発生します。OSに進入されると、その上で動作するアプリケーションの中身を自由に覗き見できるようになってしまいます。さらに、OSのバグとは別に、特殊なプログラムによりコンピュータの内部状態を不正に観測するような、サイドチャネルアタックと呼ばれる攻撃手法も存在します。すなわち、OSもハードウェアも、実は信頼できるものではありません。
そこで、こられの脅威から秘密情報を扱うアプリケーションをOSからも隔離して保護する仕組みとして、図1のようなTrusted Execution Environment (TEE)と呼ばれる仕組みが開発され、使われています。スマートフォンの決済アプリなどでも使用されています。TEEにはいくつか方式がありますが、例えば、OSと秘密情報を扱うアプリケーションの領域をハードウェア的に分割するものや、アプリケーションに対するハードウェア資源の割り当て情報を不正利用できないようにハードウェアが保護する方式などがあります。もちろん、完全に安全な領域と通常のOSとで安全に通信できるような手段も提供します。
しかしながら、これらのTEEを実現するための仕組みも、現在ではOSとは別の、secure monitorやsecurity monitor (SM)などといった、さらに特別な権限を持つソフトウェアで制御されています。このSMは安全に運用されなければなりません。また、最近ではCPUとは別に、GPUでもAI処理などの計算処理を行う場面もあり、ここでも秘密情報を扱う場面が生じていますが、GPUなどのCPUとは別の機材をTEEで制御するためには、そのGPUが信用できるか、信用が確認できた場合にどのような手段でCPUとの通信を保護するか、などの複雑な手順を踏んで利用するような仕組みがあります。このような手順もSMで制御しますが、そのような機能を追加するにつれ、SMの規模も大きくなり、安全性を保証することが難しくなります。
そこで、我々のグループではSMに依存しなくても、安心にコンピュータシステムが使えるようなシステムを、ハードウェア、ソフトウェア、および理論の側面から追求するプロジェクトを行っています[1]。また、サイドチャネルアタック攻撃への耐性強化の技術も研究しています。これにより、信用できないコンピュータシステムを安心して、かつ簡単に使い勝手が良く利用できるような技術の実現を目指しています。
[1] https://cradsec.rois.ac.jp/jp/project/index.html



