Xaxã¨NaCl
ãã¿ãã¿ãã¦ã¦èªãã§ãªãã£ãCommunications of the ACMã®2009å¹´7æå·ï¼Vol. 52, No. 07ï¼ãè¦ãã¨ï¼ãã¤ã¯ãã½ããã®Xaxã¨Googleã®NaCl(Native Client)ã®è¨äºãè¼ã£ã¦ãã¾ããï¼
Toward Native Web Execution | July 2009 | Communications of the ACM
For years, the Netscape plug-in API and Microsoft's ActiveX have provided a way to use native code modules as part of a Web application. Along with enhanced browser functionality, these extension technologies provide full access to the OS's file and networking interfaces. But by relying on trust rather than strong technical measures for safety, these extension technologies are vulnerable to social-engineering attacks in which users are tricked into permitting malicious operations.
One software project that challenges this trust model yet still offers native performance is Xax, developed at Microsoft Research. Xax separates native instruction execution from native OS access, leveraging legacy code to deliver desktop applications on the Web. ï¼ä¸ç¥ï¼
"Rather than use a language-based isolation mechanism, why not instead use the well-evolved and ubiquitous memory management unit?" asks researcher Jon Howell, who developed Xax at Microsoft Research.
ï¼ä¸ç¥ï¼
In contrast to Xax, which relies on the memory management unit for memory isolation and a kernel system-call patch to prevent OS access, Google's Native Client takes a different approach. Using an OS-portable sandbox, Native Client relies on x86 segmentation hardware to enforce memory isolation and on a binary validator to isolate the OS interface, preventing direct access to the OS and resources such as the file system and the network.é©å½ãªè¨³
ããä½å¹´ãï¼Netscapeãã©ã°ã¤ã³APIã¨ãã¤ã¯ãã½ããActiveXã¯ï¼Webã¢ããªã±ã¼ã·ã§ã³ã®ä¸é¨ã¨ãã¦ãã¤ãã£ãã»ã³ã¼ããå®è¡å¯è½ã«ãããæ¹æ³ãæä¾ãã¦ãã¾ããï¼ ãã©ã¦ã¶ã®æ©è½ãæ¡å¼µãããã¨ã«ãã£ã¦ï¼ãããã®æ¡å¼µæè¡ã¯OSã®ãã¡ã¤ã«ããããã¯ã¼ã¯ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¸ã®ãã«ã¢ã¯ã»ã¹ãæä¾ãã¦ãã¾ããï¼ãããï¼å®å ¨æ§ã«å¯¾ããå¼·åãªæè¡å¯¾çããããä¿¡é ¼ãã«é ¼ããã¨ã«ãªã£ãçµæï¼ãã®ãããªæ¡å¼µæè¡ã¯ï¼å·§å¦ã«ã¦ã¼ã¶ã«ãã¡ã¤ã«ã¢ã¯ã»ã¹ã®è¨±å¯ãæ±ãããããªãããããã½ã¼ã·ã£ã«ã»ã¨ã³ã¸ãã¢ãªã³ã°ãæ»æã«å¯¾ãèå¼±ã«ãªã£ã¦ãã¾ãï¼
ãã¤ãã£ãã»ããã©ã¼ãã³ã¹ãæ±ããããã«ï¼æ¢ãã¦ãã®ãããªä¿¡é ¼ã¢ãã«ã«åºã¥ãã½ããã¦ã§ã¢ããã¸ã§ã¯ãã®ä¸ã¤ãï¼ãã¤ã¯ãã½ãã社ã«ããXaxã§ãï¼Xaxã¯ï¼ãWebä¸ã®ãã¹ã¯ãããã¢ããªã±ã¼ã·ã§ã³ãã®å ã ã®ã³ã¼ãã«å¯¾ãä¿®æ£ãå ãããã¨ã§ï¼ãã¤ãã£ããªå®è¡ã³ã¼ããï¼ãã¤ãã£ããªOSã¸ã®ã¢ã¯ã»ã¹ããåé¢ãã¾ãï¼
ãã¤ã¯ãã½ããç 究æã§Xaxãéçºããç 究è ã¸ã§ã³ã»ãã¦ã¨ã«ã¯ï¼ããã®ããã°ã©ãã³ã°è¨èªã®ä»æ§ã«åºã¥ãéé¢æ©æ§ã使ããããï¼ãããããæ¹åããã¦ãã¦ï¼æ±ç¨çã«ä½¿ããã¡ã¢ãªç®¡çæ©æ§ã使ãã¹ãããããã¾ãããï¼ãã¨åãï¼
ï¼ä¸ç¥ï¼
Xaxã«å¯¾ãï¼OSã¸ã®ã¢ã¯ã»ã¹ãåé¢ããããã«ï¼ã¡ã¢ãªéé¢æ©è½ãæããã¡ã¢ãªç®¡çæ©æ§ã¨ã«ã¼ãã«ã®ã·ã·ãã ã³ã¼ã«ã®ããããç¨ããGoogle Native Clientã¯ç°ãªãã¢ããã¼ãã§ããã¨è¨ããï¼
OSã«ä¾åããªããµã³ãããã¯ã¹æ©æ§ã«ãã£ã¦ï¼Native Clientã¯ï¼OSã»ãã¡ã¤ã«ã·ã¹ãã ããããã¯ã¼ã¯è³æºã¸ã®ç´æ¥çãªã¢ã¯ã»ã¹ãé¿ããããã«ï¼x86 CPUæ©è½ã®ã¡ã¢ãªåé¢ãOSã¤ã³ã¿ã¼ãã§ã¼ã¹ãéé¢ãããã¼ã¬ãã«ãã§ãã¯æ©è½ãå©ç¨ããï¼
訳ãåããã«ããã¦ãã¿ã¾ããï¼
å¼ç¨ããªãã£ãè¨äºæç« ã«ãããã®ã§ããï¼çµå±ã®ã¨ããï¼ä¸¡è
ã¯ä¼¼ã¦ãã¨è¨ãããã§ãï¼
ããã¦ä¾ããã¨ï¼çæ¹ãVMwareçã§ï¼çæ¹ãXençã¨ãããããªéãã®ããã§ãï¼
è¨äºãèªãã¨ï¼XaxãVMwareçã§Google Native Client(NaCl)ãXençãªããã«ãè¦ãã¾ããï¼éãªã®ããããã¾ããï¼ä½¿ã£ã¦ã¿ãªãã¨ï¼ãããã¯ã³ã¼ããè¦ã¦ã¿ãªãã¨ï¼å®å
¨ã«ã¯ç解åºæ¥ãªãã§ãï¼
ãã ï¼é¢ç½ãããªã®ã¯ç¢ºãã§ï¼ãã©ã¦ã¶ã¨OSã®èåã«åãããããå¾ãªãã§ãããã¤ã¯ãã½ãã社ã¨Google社ãï¼ééããªãå¼·åã«æ¨é²ãã¦ããæè¡ã ããã¨æããã¾ãï¼