出典 しゅってん : フリー百科 ひゃっか 事典 じてん 『ウィキペディア(Wikipedia)』
この項目 こうもく では、ウェブブラウザ 上 うえ でネイティブコードを安全 あんぜん に実行 じっこう する技術 ぎじゅつ について説明 せつめい しています。暗号 あんごう 化 か ライブラリについては「NaCl (ソフトウェア) 」をご覧 らん ください。
Google Native Client (ネイティブクライアント、食塩 しょくえん を意識 いしき してNaCl と略 りゃく される)は、ネイティブコードを安全 あんぜん に、しかし効率 こうりつ 的 てき に実行 じっこう することを目標 もくひょう とした、サンドボックス を中心 ちゅうしん としたフレームワークである。当初 とうしょ はその名 な の通 とお りネイティブコード版 ばん のみであったが、その後 ご の情勢 じょうせい などにより、現在 げんざい はプロセッサアーキテクチャ非 ひ 依存 いぞん の Portable Native Client (PNaCl ) もあり、それについても述 の べる。
WebAssemblyの普及 ふきゅう に伴 ともな いそちらにリソースを集中 しゅうちゅう するため開発 かいはつ を終了 しゅうりょう し、2019年 ねん にChromeから削除 さくじょ されることを発表 はっぴょう [1] 。2023年 ねん に削除 さくじょ された[2] 。
NaCl、PNaClともx86 とARM に対応 たいおう したものが公開 こうかい されている。ウェブブラウザ上 じょう のウェブアプリケーションをネイティブアプリケーションに近 ちか い速度 そくど [3] で実行 じっこう することなどを主 おも な目標 もくひょう とした、安全 あんぜん にネイティブコードを実行 じっこう できるシステムである。PC版 ばん およびChrome OS 版 はん Google Chrome 14からはChromeウェブストア で配布 はいふ されているアプリケーションを実行 じっこう する場合 ばあい に限 かぎ りデフォルトで有効 ゆうこう になっており、それ以外 いがい の場合 ばあい はchrome://flags/で有効 ゆうこう にする必要 ひつよう がある[3] [4] 。Google Chrome 29からPNaClが導入 どうにゅう され、Google Chrome 31(デスクトップ版 ばん のみ)からは、PNaCl がデフォルトで有効 ゆうこう になっており、NaClとは異 こと なりAdobe Flash のようにChromeウェブストア以外 いがい の一般 いっぱん のウェブページ内 ない に埋 う め込 こ みでも使用 しよう できる[5] 。
NaClのARM への実装 じっそう は、2010年 ねん 3月 がつ にリリースされた[6] 。x86-64 もサポートされている。しかし、NaClはCPU依存 いぞん であり、それぞれホストの命令 めいれい セット へコンパイルされたバイナリしか使用 しよう できない。Portable Native Client (PNaCl) では、LLVM 中間 ちゅうかん 言語 げんご コードを採用 さいよう することでこの問題 もんだい を解決 かいけつ しており、CPU非 ひ 依存 いぞん でアプリケーションを動作 どうさ させられる[7] 。PNaCl向 む けに書 か かれたアプリケーションをEmscripten を使 つか い、汎用 はんよう のJavaScriptとして動作 どうさ させるための、pepper.js (英語 えいご 版 ばん ) もGoogleは開発 かいはつ している。
標準 ひょうじゅん Cライブラリ としてNewlib を使用 しよう しているが、NaClはポートされたGNU Cライブラリ (glibc)も使用 しよう 可能 かのう である[8] 。今 いま のところ、PNaClはglibcは未 み 対応 たいおう 。標準 ひょうじゅん CライブラリではPOSIXスレッド も使用 しよう 可能 かのう であるが[9] 、プロセスはサポートしていない。
Google Chrome 14 (release 0.5) から、Native Clientは安定 あんてい 版 ばん のABI を持 も っていて、将来 しょうらい のバージョンでの上位 じょうい 互換 ごかん 性 せい を保証 ほしょう している[10] 。同様 どうよう に、PNaClの方 ほう はGoogle Chrome 31以降 いこう 、上位 じょうい 互換 ごかん 性 せい を保証 ほしょう している[11] 。
NaCl、PNaClはGoogle によってオープンソース プロジェクト(BSDスタイルのライセンス )として開発 かいはつ が進 すす められていた[12] 。
NaClはARMとx86-64でのサンドボックス化 か のため、ソフトウェアによるフォールト分離 ぶんり を利用 りよう している[13] 。x86-32での実装 じっそう は、サンドボックスのメモリ空間 くうかん を規制 きせい するなど一部 いちぶ 用途 ようと 以外 いがい ではx86のセグメンテーション機能 きのう を用 もち いない[14] 。システムコールの呼 よ び出 だ しなどの危険 きけん な命令 めいれい の実行 じっこう を防 ふせ ぐためには、コード検証 けんしょう 機 き を利用 りよう する。また、安全 あんぜん な命令 めいれい の中 なか に隠 かく された危険 きけん な命令 めいれい へジャンプすることを防 ふせ ぐため、Native Clientでのインダイレクトジャンプは32バイトブロックの先頭 せんとう へのみ許 ゆる されるほか、ジャンプ先 さき ブロックが不定 ふてい なジャンプは許可 きょか されない[14] 。これらの制約 せいやく のため、C言語 げんご で書 か かれたプログラムは Native Client 上 じょう で動作 どうさ するためにはカスタマイズされたGNU toolchain 、特 とく にgcc とbinutils で再 さい コンパイルすることが必要 ひつよう になる。
Pepper APIはNative Clientアプリケーションを作成 さくせい するために使 つか えるクロスプラットフォームAPIで、PPAPI (Pepper Plug-in API) とも呼 よ ばれる。ネットスケープ のNPAPI がベースとなっており、ブラウザを超 こ えた機能 きのう に安全 あんぜん にアクセスすることができる[9] 。
名前 なまえ の由来 ゆらい は、Native Clientの略 りゃく がNaClで、塩化 えんか ナトリウム(食塩 しょくえん )の化学 かがく 記号 きごう であることから、調味 ちょうみ 料 りょう ・香料 こうりょう としてセットにされる塩 しお コショウの胡椒 こしょう (Pepper) から来 き ている[9] 。
以下 いか はPPAPI環境 かんきょう 下 か で使用 しよう できる機能 きのう 。
JavaScript インターフェース
リモートファイルローダ
ローカルファイルIO
2Dグラフィックス
3Dグラフィックス (OpenGL ES 2.0)
オーディオ再生 さいせい
WebSocket
各種 かくしゅ 入力 にゅうりょく (マウス、キーボード、ゲームパッド等 とう )
ゲーム向 む け支援 しえん 機能 きのう (マウスカーソルロック、フルスクリーン等 とう )
etc ...
Mozilla の反応 はんのう [ 編集 へんしゅう ]
JavaScript の生 う みの親 おや であり、Mozilla CTO の ブレンダン・アイク は、ECMAScript 6 で十分 じゅうぶん であると述 の べ、NativeClient の必要 ひつよう 性 せい を退 しりぞ けている[15] 。
Mozilla のバイスプレジデント である Jay Sullivan は NativeClient を指 さ して「これらのネイティブアプリはウェブページのブラックボックスでしかなく、(中略 ちゅうりゃく )我々 われわれ はHTMLを信 しん じており、我々 われわれ が集中 しゅうちゅう したいと考 かんが えるものだ」("These native apps are just little black boxes in a webpage. [...] We really believe in HTML, and this is where we want to focus.")と述 の べた[16] 。
^ WebAssembly Migration Guide (P)NaCl Deprecation Announcements
^ 株式会社 かぶしきがいしゃ インプレス (2023年 ねん 11月1日 にち ). “「Google Chrome 119」が正式 せいしき 公開 こうかい ~Android版 ばん は「Android 7.0 Nougat」対応 たいおう を終了 しゅうりょう /セキュリティ関連 かんれん の修正 しゅうせい は全 ぜん 15件 けん ”. 窓 まど の杜 もり . 2023年 ねん 11月9日 にち 閲覧 えつらん 。
^ a b Native Client: A Technology for Running Native Code on the Web
^ How to Test-Run Web Applications
^ Chrome 31 Beta: Android Application Shortcuts, requestAutocomplete(), and PNaCl
^ “Google's Native Client goes ARM and beyond ”. The H (2010年 ねん 3月 がつ 18日 にち ). 2010年 ねん 5月 がつ 19日 にち 閲覧 えつらん 。
^ PNaCl: Portable Native Client Executables
^ NativeClient: Plash Wiki
^ a b c Native Client Technical Overview
^ Official NaCl Release Notes
^ Stability of the PNaCl bitcode ABI
^ Google Native Client on Google Code
^ David Sehr, Robert Muth, Cliff L. Biffle, Victor Khimenko, Egor Pasko, Bennet Yee, Karl Schimpf, Brad Chen (2010年 ねん ). “Adapting Software Fault Isolation to Contemporary CPU Architectures ”. 19th USENIX Security Symposium. 2011年 ねん 7月 がつ 31日 にち 閲覧 えつらん 。
^ a b Bennet Yee, David Sehr, Greg Dardyk, Brad Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar (2009年 ねん ). “Native Client: A Sandbox for Portable, Untrusted x86 Native Code ”. IEEE Symposium on Security and Privacy (Oakland'09). 2011年 ねん 7月 がつ 31日 にち 閲覧 えつらん 。
^ JavaScript founder dismisses Google Native Client, pushes ECMAScript 6
^ Mozilla: Our browser will not run native code
Alphabet ・歴史 れきし ・サービス 企業 きぎょう
開発 かいはつ
オペレーティングシステム ライブラリ・ フレームワーク ツール 探索 たんさく アルゴリズムファイルフォーマット その他 た
サービス
娯楽 ごらく 伝達 でんたつ ・交流 こうりゅう 検索 けんさく 組織 そしき ・管理 かんり ビジネス・金融 きんゆう その他 た
ハードウェア
X
* : 開発 かいはつ ・サポートを終了 しゅうりょう した製品 せいひん およびサービス
カテゴリ
コモンズ