Patents by Inventor David C. Sehr

David C. Sehr has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20230024083
    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.
    Type: Application
    Filed: October 3, 2022
    Publication date: January 26, 2023
    Inventors: Evangelos Kokkevis, Matthew Papakipos, David C. Sehr
  • Patent number: 11514156
    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.
    Type: Grant
    Filed: October 28, 2015
    Date of Patent: November 29, 2022
    Assignee: Google LLC
    Inventors: Evangelos Kokkevis, Matthew Papakipos, David C. Sehr
  • Publication number: 20200257804
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Application
    Filed: April 29, 2020
    Publication date: August 13, 2020
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Patent number: 10685123
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Grant
    Filed: July 17, 2017
    Date of Patent: June 16, 2020
    Assignee: Google LLC
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Patent number: 10031832
    Abstract: Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for dynamic sandboxing.
    Type: Grant
    Filed: October 15, 2015
    Date of Patent: July 24, 2018
    Assignee: Google LLC
    Inventors: Jean-Francois Bastien, David C. Sehr
  • Publication number: 20180004959
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Application
    Filed: July 17, 2017
    Publication date: January 4, 2018
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Patent number: 9756149
    Abstract: Methods, systems, and computer program products are provided for machine-specific instruction set translation. One example method includes identifying computing devices, each device having a respective software component installed, the software component including a translator component for translating a program in a portable format to a machine-specific instruction set, and a sandbox component for executing programs translated to the machine-specific instruction set on the computing device using software-based fault isolation; identifying computing devices having a given hardware configuration; and transmitting another translator component and another sandbox component to each of the identified computing devices. Each of the identified computing devices having the given hardware configuration is configured to receive the components and to configure its software component to use the received components in lieu of the corresponding components.
    Type: Grant
    Filed: March 28, 2016
    Date of Patent: September 5, 2017
    Assignee: Google Inc.
    Inventors: David C. Sehr, J. Bradley Chen, Bennet S. Yee, Robert Muth, Jan Voung, Derek L. Schuff
  • Patent number: 9710654
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Grant
    Filed: June 3, 2016
    Date of Patent: July 18, 2017
    Assignee: Google Inc.
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Patent number: 9563424
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for selecting native code instructions. One of the methods includes receiving an initial machine language instruction for execution by a processor in a first execution mode; determining that a portion of the initial machine language instruction, when executed by the processor in a second execution mode, satisfies one or more risk criteria; generating one or more alternative machine language instructions to replace the initial machine language instruction for execution by the processor in the first execution mode, wherein the one or more alternative machine language instructions, when executed by the processor in the second execution mode, mitigate the one or more risk criteria; and providing the one or more alternative machine language instructions.
    Type: Grant
    Filed: January 31, 2013
    Date of Patent: February 7, 2017
    Assignee: Google Inc.
    Inventors: David C. Sehr, Bennet S. Yee, Jean-Francois Bastien
  • Patent number: 9536079
    Abstract: A system that safely executes a native code module on a computing device. During operation, the system receives the native code module, which is comprised of untrusted native program code expressed using native instructions in the instruction set architecture associated with the computing device. The system then loads the native code module into a secure runtime environment, and proceeds to execute a set of instructions from the native code module in the secure runtime environment. The secure runtime environment enforces code integrity, control flow integrity, and data integrity for the native code module. Furthermore, the secure runtime environment moderates which resources can be accessed by the native code module on the computing device and/or how these resources can be accessed. By executing the native code module in the secure runtime environment, the system facilitates achieving native code performance for untrusted program code without a significant risk of unwanted side effects.
    Type: Grant
    Filed: February 13, 2015
    Date of Patent: January 3, 2017
    Assignee: Google Inc.
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee, Gregory Dardyk
  • Publication number: 20160283720
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Application
    Filed: June 3, 2016
    Publication date: September 29, 2016
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Publication number: 20160212243
    Abstract: Methods, systems, and computer program products are provided for machine-specific instruction set translation. One example method includes identifying computing devices, each device having a respective software component installed, the software component including a translator component for translating a program in a portable format to a machine-specific instruction set, and a sandbox component for executing programs translated to the machine-specific instruction set on the computing device using software-based fault isolation; identifying computing devices having a given hardware configuration; and transmitting another translator component and another sandbox component to each of the identified computing devices. Each of the identified computing devices having the given hardware configuration is configured to receive the components and to configure its software component to use the received components in lieu of the corresponding components.
    Type: Application
    Filed: March 28, 2016
    Publication date: July 21, 2016
    Inventors: David C. Sehr, J. Bradley Chen, Bennet S. Yee, Robert Muth, Jan Voung, Derek L. Schuff
  • Patent number: 9372704
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, relating to software execution. One of the methods includes executing, on a computer including a single memory for storing data and instructions, a virtual environment including a data memory and an instruction memory, the instruction memory configured to be unreadable by instructions stored in the instruction memory; receiving, at the virtual environment, a software module comprising multiple instructions; and performing validation of the software module including: identifying, in the software module one or more calls to the single memory; and verifying that the one or more calls to the single memory are in the data memory.
    Type: Grant
    Filed: December 27, 2013
    Date of Patent: June 21, 2016
    Assignee: Google Inc.
    Inventors: David C. Sehr, J. Bradley Chen, Bennet S. Yee
  • Patent number: 9361453
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Grant
    Filed: August 19, 2014
    Date of Patent: June 7, 2016
    Assignee: Google Inc.
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Patent number: 9300760
    Abstract: Methods, systems, and computer program products are provided for machine-specific instruction set translation. One example method includes identifying computing devices, each device having a respective software component installed, the software component including a translator component for translating a program in a portable format to a machine-specific instruction set, and a sandbox component for executing programs translated to the machine-specific instruction set on the computing device using software-based fault isolation; identifying computing devices having a given hardware configuration; and transmitting another translator component and another sandbox component to each of the identified computing devices. Each of the identified computing devices having the given hardware configuration is configured to receive the components and to configure its software component to use the received components in lieu of the corresponding components.
    Type: Grant
    Filed: January 28, 2013
    Date of Patent: March 29, 2016
    Assignee: Google Inc.
    Inventors: David C. Sehr, J. Bradley Chen, Bennet S. Yee, Robert Muth, Jan Voung, Derek L. Schuff
  • Publication number: 20160048677
    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.
    Type: Application
    Filed: October 28, 2015
    Publication date: February 18, 2016
    Inventors: Evangelos Kokkevis, Matthew Papakipos, David C. Sehr
  • Publication number: 20160004858
    Abstract: Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for preserving code safety of application code that is received in a portable, instruction-set-neutral format. One aspect of the subject matter described in this specification can be embodied in methods that include the actions of receiving a portable code file that is implemented in an instruction-set-neutral and source code independent format; translating the portable code file into native object code for execution on a particular instruction set architecture; generating a native executable for the particular instruction set architecture using the native object code; and validation the native executable using a trusted validator prior to execution of the native executable.
    Type: Application
    Filed: March 16, 2011
    Publication date: January 7, 2016
    Inventors: J. Bradley Chen, Alan A. Donovan, Robert Muth, David C. Sehr, Bennet Yee, Matthew Papakipos, Stephen White
  • Patent number: 9223550
    Abstract: Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for generating portable concurrency primitives. In one aspect, a method includes receiving a set of source code for a module that will execute on a plurality of different types of architectures, the set of source code including a first set of concurrency primitives, generating a second set of concurrency primitives from the first set of concurrency primitives, wherein each concurrency primitive in the second set is different than the corresponding concurrency primitive from the first set of concurrency primitives, each concurrency primitive in the second set of concurrency primitives being independent of a plurality of different types of architectures that will execute the module, and storing each concurrency primitive from the second set of concurrency primitives in a portable executable that retains the language level constructs of the first set of concurrency primitives.
    Type: Grant
    Filed: October 17, 2013
    Date of Patent: December 29, 2015
    Assignee: Google Inc.
    Inventors: Jean-Francois Bastien, David C. Sehr
  • Patent number: 9197446
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for memory address pinning. One of the methods includes loading a software module into a sandbox environment; receiving, a message from the software module to a recipient, the message includes a memory address; determining whether to pin the memory address; and passing the message to an address pinning unit which replaces at least a portion of the memory address with at least a portion of a specified replacement address, when it is determined to pin the memory address, and passes the modified message to be delivered to the recipient.
    Type: Grant
    Filed: December 12, 2012
    Date of Patent: November 24, 2015
    Assignee: Google Inc.
    Inventors: David C. Sehr, Cliff L. Biffle, Bennet S. Yee
  • Patent number: 9189375
    Abstract: Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for dynamic sandboxing.
    Type: Grant
    Filed: December 31, 2013
    Date of Patent: November 17, 2015
    Assignee: Google Inc.
    Inventors: Jean-Francois Bastien, David C. Sehr