IP Library Granted Patent US 11,514,156
Granted Patent B2
US 11,514,156 · App. 14/925,413 · Granted Nov 29, 2022

Method and system for executing applications using native code modules

Inventors: Evangelos Kokkevis (Mountain View, CA); Matthew Papakipos (Palo Alto, CA); David C. Sehr (Cupertino, CA)
Assignee: Google LLC
G06F21/53G06F9/44526G06F9/44589G06F21/51G06F21/572G06F2221/034H04L67/02H04L67/34
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,514,156
App. No.
14/925,413
Filed
Oct 28, 2015
Granted
Nov 29, 2022
Kind
B2
Art Unit
2419
USPC
709/217
Abstract

Some embodiments provide a system that executes a web application. During operation, the system loads the web application in a web browser and loads a native code module associated with the web application into a secure runtime environment. Next, the system provides input data associated with the web application to the native code module and processes the input data using the native code module to obtain output data. Finally, the system provides the output data to the web application for use by the web application.

Claims (58)

1. A method comprising:

receiving, by a computing system and from a remote system, a native code module for an application;

loading the application on software on the computing system;

validating, by the computing system, the native code module as being safe to be loaded and executed within a secure runtime environment of the computing system;

moderating, by the secure runtime environment, which system resources of the computing system can be accessed by the native code module and how the system resources are accessed; and

while executing the native code module within the secure runtime environment:

(a) providing input data associated with the application to the native code module by retrieving, by the secure runtime environment on behalf of the native code module, the input data from a first buffer;

(b) processing, by the native code module, the input data to obtain output data based on a result of performing a series of mathematical calculations using the input data; and

(c) providing, to one or more external components including at least one of a web application or a trusted plugin associated with the web application, the output data using a second buffer different from the first buffer to perform tasks in the web application.

2. The method of claim 1 , wherein executing the native code module in the secure runtime environment comprises executing a native code module that is platform independent with respect to an operating system of the computing system.

3. The method of claim 1 , wherein loading the application on software on the computing system comprises loading a web application in a web browser on the computing system.

4. The method of claim 1 , wherein providing the output data to the application for use by the application comprises:

providing, to a trusted plugin associated with a second application, the output data for use by the trusted plugin; and

processing, by the trusted plugin, the output data to render graphics for the application.

5. The method of claim 1 , wherein loading the native code module associated with the application into the secure runtime environment comprises loading the native code module into a secure runtime environment provided by a plugin associated with a second application, the method comprising enforcing, by the secure runtime environment, code integrity, control-flow integrity, and data integrity for the native code module while executing the native code module in the secure runtime environment.

6. The method of claim 1 , wherein:

validating the native code module comprises validating a native code module that comprises binary code that runs directly on hardware in the computing system; and

executing the native code module in the secure runtime environment comprises executing the binary code in the secure runtime environment.

7. The method of claim 6 , wherein executing the binary code in the secure runtime environment comprises utilizing, by the binary code in the native code module, low-level libraries and application programming interfaces (API) available for use by native code modules in the computing system.

8. The method of claim 1 , wherein validating the native code module comprises validating a native code module that is executable in a plurality of instruction set architectures.

9. The method of claim 1 , wherein validating the native code module comprises validating a native code module that comprises corresponding mechanisms for executing the native code module in each of a plurality of instruction set architectures.

10. The method of claim 9 , wherein validating the native code module that comprises corresponding mechanisms for executing the native code module in each of the plurality of instruction set architectures comprises validating a native code module that comprises at least one of fat binaries or binary translators.

11. A system comprising:

one or more processing units of a computing system configured to:

receive a native code module associated with an application from a remote system;

load the native code module in a secure runtime environment of the computing system;

execute the native code module in the secure runtime environment;

validate, using a validator of the computing system, the native code module as being safe to be loaded and executed within the secure runtime environment of the computing system; and

moderate, using the secure runtime environment, which system resources of the computing system can be accessed by the native code module and how the system resources are accessed;

a first buffer; and

a second buffer different from the first buffer;

wherein while executing the native code module in the secure runtime environment, the one or more processing units are configured to:

(a) provide input data associated with the application to the native code module by retrieving, by the secure runtime environment on behalf of the native code module, the input data from the first buffer;

(b) process the input data based on a result of performing a series of mathematical calculations using the input data to obtain output data; and

(c) provide the output data to the application via the second buffer for use by the application.

12. The system of claim 11 , wherein:

the native code module is platform independent with respect to an operating system of the computing system; and

the secure runtime environment is configured to execute the native code module that is platform independent with respect to the operating system of the computing system.

13. The system of claim 11 , wherein:

the one or more processing units is further configured to execute a web browser, installed on the computing system, to load an application before loading and executing the native code module in the secure runtime environment.

14. The system of claim 11 , wherein the one or more processing units are further configured to execute a trusted plugin associated with a second application configured to:

receive the output data; and

process the output data to render graphics for the application.

15. The system of claim 11 , wherein the one or more processing units are configured to execute a plugin associated with a second application that implements the validator.

16. The system of claim 11 , wherein the one or more processing units are configured to execute a plugin associated with a second application that is configured to provide the secure runtime environment.

17. The system of claim 11 , wherein the native code module comprises binary code that runs directly on hardware in the computing system.

18. The system of claim 17 , wherein the binary code in the native code module uses low-level libraries and application programming interfaces (API) that are available for use by native code modules in the computing system.

19. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method comprising:

receiving, by a computing system and from a remote system, a native code module for an application;

loading the application on software on the computing system;

validating, by the computing system, the native code module as being safe to be loaded and executed within a secure runtime environment of the computing system;

moderating, by the secure runtime environment, which system resources of the computing system can be accessed by the native code module and how the system resources are accessed; and

while executing the native code module within the secure runtime environment:

(a) providing input data associated with the application to the native code module by retrieving, by the secure runtime environment on behalf of the native code module, the input data from a first buffer;

(b) processing, by the native code module, the input data to obtain output data based on a result of performing a series of mathematical calculations using the input data; and

(c) providing to one or more external components including at least one of a web application or a trusted plugin associated with the web application, the output data using a second buffer different from the first buffer to perform tasks in the web application.

20. The method of claim 1 , wherein validating, by the computing system, the native code module prior to loading the native code module into a secure runtime environment of the computing system comprises analyzing, by the computing system, instructions included in the native code module.

21. The method of claim 20 , wherein analyzing, by the computing system, the instructions included in the native code module comprises validating, by the computing system, the native code module to ensure that unsafe instructions are not include in the native code module.

Assignments (2)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2015
From: KOKKEVIS, EVANGELOS; PAPAKIPOS, MATTHEW; SEHR, DAVID C.
To: GOOGLE INC.
Reel/Frame 036911/0889 →
Continuity (3)
Continuation 12266602 · Nov 7, 2008
Provisional Application 61081327 · Jul 16, 2008
Related Publication 20160048677A1 · Feb 18, 2016