计算机科学

首页 > 计算机科学

Native Client

Google Native Client
Google Chrome icon (2011).svg
开发者 Google,以及其他开发者
稳定版本
稳定版本
SDK: Pepper 45 (2015年7月10日,​3年前​(2015-07-10), Client:
Windows, macOS, Linux 69.0.3497.81(2018年9月4日,​4天前​(2018-09-04[1]
Android 69.0.3497.86(2018年9月6日,​2天前​(2018-09-06[2][3]
iOS 69.0.3497.71(2018年9月5日,​3天前​(2018-09-05[4]
预览版本
0.5
(2011年7月28日,​7年前​(2011-07-28
开发状态 产品 (NaCl, PNaCl[5])
编程语言 C语言、C++
操作系统 Cross-platform: Microsoft Windows, Linux, Mac OS, Chrome OS
类型 利用沙盒技术,让机器码在浏览器上运行
许可协议 New BSD license
网站 code.google.com/p/nativeclient
源代码库 chromium.googlesource.com/native_client/src/native_client.git

Google Native Client(缩写为 NaCl),是一个由谷歌所发起的开放源代码计划,采用BSD许可证。它采用沙盒技术,让Intel x86、ARM或MIPS子集的机器码直接在沙盒上运行。它能够从浏览器直接运行程序机器码,独立于用户的操作系统之外,使Web应用程序可以用接近于机器码运作的速度来运行,同时兼顾安全性。其功能类似于微软的 ActiveX,但是ActiveX只支持视窗系统。

Google将这项功能合并在Chrome OS之下开发。它也可以被用来开发安全的浏览器外挂程序。

2017年5月31日,Google宣布放弃PNaCl转向WebAssembly[6]

目录

  • 1 技术内容
    • 1.1 沙盒技术
    • 1.2 机器码验证器
  • 2 应用软件的移植
  • 3 参考资料
  • 4 外部链接

技术内容

NaCl使用Newlib作为它的C标准库,但它也支持GNU C 库。

它最初只支持x86平台,但目前也支持ARM平台与x86-64。

沙盒技术

NaCl运用沙盒技术以防止外来(第三方)机器码影响系统安全;特别是在x86平台上运用存储器区块,限制插件所能读写的存储器范围。[7]

由于ARM与x86-64长模式不支持存储器区块,因此在这些平台上NaCl的存储器写入地址是由沙盒过滤。[8]

机器码验证器

NaCl运用机器码验证器(Code Validator)来保证只有安全机器码能在系统运行。由于x86/x86-64是复杂指令集,指令长度不一,透过控制流程可能隐藏非安全机器码,从而使验证十分耗时。NaCl运用固定长度的16或32字节的指令束(Instruction Bundle),使机器码验证器设计简单(只有约600行C语言)和高效率;[7] [9] 而运用指令束只是失去5%的运行效率。

应用软件的移植

NaCl支持单指令流多数据流指令(如SSE、3DNow!)及多线程接口,应用软件一般只需简单的修改便可以移植到NaCl平台;在2009年一个发布会上,NaCl开发人员示范一个为NaCl平台的移植而修改了20行源代码的H264解码器软件。[10]

参考资料

  1. ^ Stable Channel Update for Desktop. Chrome Releases. Blogger. 2018-09-04 [2018-09-04]. 
  2. ^ Chrome for Android Update. Chrome Releases blog. Blogger. 2018-09-06 [2018-09-06]. 
  3. ^ Google Chrome. OmahaProxy CSV Viewer. Chromium team. 
  4. ^ Chrome - web browser by Google. iTunes Preview. 2018-09-05 [2018-09-05]. 
  5. ^ Chrome Revision 213999
  6. ^ Goodbye PNaCl, Hello WebAssembly!. Chromium Blog. [2017-05-31] (美国英语). 
  7. ^ 7.0 7.1 Native Client: A Sandbox for Portable, Untrusted x86 Native Code
  8. ^ Adapting Software Fault Isolation to Contemporary CPU Architectures 互联网档案馆的存档,存档日期2011-07-23.
  9. ^ Index of /trunk/src/native_client/src/trusted/validator/x86 Archive.is的存档,存档日期2012-07-20
  10. ^ Native CPU Performance in the Browser with Google Native Client

外部链接

  • (英文) NaCl计划官网
  • (英文) YouTube上的Google I/O 2009 Native Code for Compute Intensive Web Apps - Google I/O 2009技术专题讨论
  • (英文) YouTube上的Google I/O 2012 Life of a Native Client Instruction - Google I/O 2012技术专题讨论

上一篇:攻击表面
下一篇:Nikto
相关推荐