
English: 
Hi!
My name is Brad and I am one of the Tech Leads
for Native Client.
In this video, I am going to dive into the
technology that makes Native Client apps possible.
A key concept in Native Client is the sandbox,
an isolation technique that prevents downloaded
code from doing things it’s not supposed
to.
The Native Client sandbox prevents application
code from interacting directly with the native
operating system.
This is crucial for portability.
If an app invoked the native OS directly,
it couldn’t run on other operating systems.
It’s also essential for security, because
the native operating system provides access
to resources like your files that need to
be protected.
The Native Client sandbox is implemented using
a technique called Software Fault Isolation.
This technique was first introduced in the
early 90’s.

Korean: 
안녕하세요. Native Client의 기술 담당 
브래드 입니다.
Native Client 애플리케이션을 개발할 수 있게 만든 
기술에 대해서 말씀드리겠습니다.
Native Client의 핵심 컨셉은 샌드박스입니다. 
이는 일종의 분리 기법으로서
다운로드된 코드가 해서는 안될 일을 하는 것을 방지하는 
기술입니다. Native Client 샌드박스는 애플리케이션 코드가
네이티브 운영 체제와 직접 인터렉션 하는 것을 방지합니다. 
포터빌리티를 위해 매우 중요한 기술이죠.
앱이 네이티브 OS를 직접 동작시키면
다른 OS에서는 실행할 수가 없습니다.
또한 보안을 위해서도 중요합니다. 
이는 네이티브 운영 체제가
보호해야할 파일 등의 리소스에  
엑세스를 제공하기 때문입니다.
Native Client 샌드박스는 
Software Fault Isolation라는 기법으로 구현되었습니다.
이 기법은 90년대 초에 소개되었으며 인식이 용이한 
어셈블리 언어 사용에 기반하고 있습니다.

English: 
It’s based on the use of assembly-language
idioms that are easy to recognize and that,
when used, make it possible to prove certain
things about the program’s behavior.
For example, if you insure that all data addresses
used by a program are greater than a particular
address, then you know that no memory references
can happen below that address.
Using software fault isolation we implement
what we call reliable disassembly.
This means that we know every instruction
a program can execute, and won’t run it
unless we can prove that each instruction
is safe.
Defense in depth is another key concept for
Native Client.
Suppose you had a brick of gold.
You might put it in a safe, but you wouldn’t
leave that safe sitting out in your front
yard.
Maybe you’d put it inside your house, maybe
even in a locked room, and you would probably
lock your house too.
In the same way, Native Client uses multiple
layers of protection that make it much harder

Korean: 
또한 이 기법을 사용시 
특정 프로그램 동작을 입증하기도 합니다.
예를 들어 프로그램에 사용된 모든 데이타 주소가 
어떤 주소보다 크도록 할 경우,
메모리 레퍼런스가 해당 주소값 이하로는 
발생될 수 없게 되는거죠.
Software Fault Isolation를 사용하여 우리는 
이른바 "릴라이어블 디셈블리"를 구현합니다.
즉, 우리가 프로그램이 실행할 수 있는 
모든 명령을 알고 있으며
명령이 안전하지 않으면 
실행시키지 않는다는 뜻이죠.
철저한 보안은 Native Client의 또 다른 핵심 기능입니다.
금덩어리를 하나 가지고 있다고 가정해보세요.
아마도 안전한 곳에 보관하겠죠.
앞마당 같은 곳이 아닌, 집 안에 보관할 것입니다.
자물쇠를 채운 방에 보관하거나, 집을 잠글 수도 있겠죠.
마찬가지로 Native Client는

Korean: 
여러 층의 보호 레이어를 사용하여
시스템 공격을 어렵게 만듭니다.
엄격한 코딩 기준과 다양한 내,외부 보안 검토 등을 적용하여
우리 시스템이 정말로 안전하게 만듭니다.
개방성 또한 우리 시스템에 적용된 핵심 원칙입니다.
HTML5, C, C++, POSIX, ELF 등과 같은 
공개된 기준을 기반으로 시스템을 만들어
큰 개발자 커뮤니티에 쉽게 접근할 수 있도록 했습니다. 
우리 시스템을 오픈소스화 했는데, 그 이유는
개발자 커뮤니티로 부터오는 검토와 피드백이 
우리 시스템을 개선시켜 왔기 때문이죠.
Native Client 기술에 대한 간단한 소개였습니다.

English: 
to attack the system.
We also apply best practices such as strict
coding standards and multiple internal and
external security reviews to insure that our
system is really safe.
Openness is another key principle we’ve
applied in this system.
We’ve built the system around established
open standards like HTML5, C, C++, POSIX and
ELF, to make it easily accessible to a large
community of developers.
We’ve open-sourced our system, because we’ve
seen that scrutiny and input from the developer
community makes our system better.
I hope you’ve enjoyed this quick overview
of some of the principles behind Native Client
technology.
To learn more visit our site at gonacl.com.

Korean: 
더욱 자세한 내용은 gonacl.com에서 확인하세요.
