Native Clientの仕組みはどうなっているのか?
Googleが、Webブラウザ上でネイティブバイナリコードを実行する「Native Client」を公開した。
Native Client
http://code.google.com/p/nativeclient/
Google Earth,Quakeなどがすでに動いているようだ。
これはすごい!ブラウザ上でX86バイナリを動かす「Native Client」
http://www.moongift.jp/2008/12/native_client/
サンドボックスで安全性確保、オーバーヘッド5%
ブラウザでx86バイナリ実行、グーグルが新技術
http://www.atmarkit.co.jp/news/200812/09/nacl.html
あと、サンプルのlife.ccにSDL_surfaceと書いてあるのでSDLの描画まわりが既に動いているのだろうから、今後、たくさんのアプリがNative Clientに移植されると思う。Native ClientはActiveXの再来とかなんとか方々で散々叩かれているのだが、sandboxの仕組みがあるのがActiveXとは大きな違いだろう。
Native Clientは現在のところx86のバイナリをブラウザベースで実行できる。「C/C++で書いたコードに対してどうやればsandbox環境を提供できるのか?」について興味のある人も多いと思う。
そもそもそんなことが技術的に可能なら、docomoはFOMAシリーズにCPUリソースを食いまくるJavaなんて搭載しなかっただろうし、auだってBREWなんてうんこの漏る音のような採用しなかったかも知れないし、Android携帯にしてもJavaなんかではなくC/C++で書かせてくれたほうがよっぽど処理速度面においてiPhoneに対抗出来たはずだ。
さて、Native Clientはどのような仕組みでこのsandbox環境を実現しているのだろう?
本当にこのsandboxは安全なのか?ActiveXと本当に大きく違うのか?
論文をざっと追いかけていこう。
Native Client: A Sandbox for Portable, Untrusted x86 Native Code
http://nativeclient.googlecode.com/svn/trunk/nacl/googleclient/native_client/documentation/nacl_paper.pdf