IP Library Granted Patent US 9,489,541
Granted Patent B2
US 9,489,541 · App. 13/458,891 · Granted Nov 8, 2016

Content protection via online servers and code execution in a secure operating system

Inventors: Anthony Michael Tamasi (Los Gatos, CA); Timothy Paul Lottes (Milpitas, CA); Bojan Skaljak (San Jose, CA); Fedor Fomichev (Sunnyvale, CA); Andrew Leighton Edelsten (Mountain View, CA); Jay Huang (Sunnyvale, CA); Ashutosh Gajanan Rege (San Francisco, CA); Keith Brian Galocy (Morgan Hill, CA)
Assignee: NVIDIA CORPORATION
G06F21/74G06F21/10G06F21/53G06F2221/0735G06F2221/2105G06F2221/2149
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 9,489,541
App. No.
13/458,891
Granted
Nov 8, 2016
Kind
B2
Abstract

A computer system comprising a processor and a memory for storing instructions, that when executed by the processor performs a copy protection method. The copy protection method comprises executing a software loop of a first software application in a first operating system. A first call is executed in the software loop to a code portion. A decrypted code portion of the first software application is executed in a second operating system in response to the first call. The code portion is decrypted in response to a successful validation of the first software application.

Claims (51)

1. A copy protection method comprising:

executing a software loop of a first software application in a first operating system;

executing a first call in the software loop to a code portion;

loading a decrypted code portion of the first software application in a second operating system from a secure storage area if the decrypted code portion is present in the secure storage area, otherwise decrypting an encrypted code portion of the first software application;

executing the decrypted code portion of the first software application in the second operating system in response to the first call, wherein the code portion is decrypted in response to a successful validation of the first software application, and wherein a failed validation results in an inoperable state in said first software application, wherein the second operating system is a secure operating system comprising an interpreter module operable to interpret the decrypted code portion; and

producing a binary ready for execution at the first software application in the first operating system in response to the first call in the first software application.

2. The copy protection method of claim 1 , wherein the code portion is executed by and the validation is performed by a second software application in the second operating system.

3. The copy protection method of claim 2 further comprising:

using a key, decrypting the encrypted code portion of the first software application to produce the decrypted code portion.

4. The copy protection method of claim 3 , wherein the decrypting comprises:

copying the encrypted code portion of the first software application from the first operating system to the second operating system;

downloading a decryption key for decrypting the code portion after the completion of the validation of the first software application, wherein the decryption key is specific to a particular device and first software application combination;

decrypting the code portion of the first software application with the decryption key in the second operating system with the second software application; and

storing the decrypted code portion in the secured storage area.

5. The copy protection method of claim 1 wherein the code portion comprises one of a function, a routine, a subroutine, and a procedure.

6. The method of claim 1 , wherein the code portion is downloaded from an application server during a validation phase.

7. A computer system comprising:

a processor,

a memory for storing instructions, that when executed by the processor performs a copy protection method comprising:

executing a software loop of a first software application in a first operating system;

executing a first call in the software loop to a code portion;

loading a decrypted code portion of the first software application in a second operating system from a secure storage area if the decrypted code portion is present in the secure storage area, otherwise decrypting an encrypted code portion of the first software application;

executing the decrypted code portion of the first software application in the second operating system in response to the first call, wherein the code portion is decrypted in response to a successful validation of the first software application, and wherein a failed validation results in an inoperable state in said first software application, wherein the second operating system is a secure operating system comprising an interpreter module operable to interpret the decrypted code portion; and

producing a binary ready for execution at the first software application in the first operating system in response to the first call in the first software application.

8. The computer system of claim 7 , wherein the code portion is executed by and the validation is performed by a second software application in the second operating system.

9. The computer system of claim 7 , wherein the decrypting comprises:

copying the encrypted code portion of the first software application from the first operating system to the second operating system;

downloading a decryption key for decrypting the code portion after the completion of the validation of the first software application, wherein the decryption key is specific to a particular device and first software application combination;

decrypting the code portion of the first software application with the decryption key in the second operating system with the second software application; and

storing the decrypted code portion in the secured storage area.

10. The computer system of claim 7 , wherein the data portion comprises one of a function, a routine, a subroutine, and a procedure.

11. A computer system comprising:

a processor;

a memory comprising an unsecured portion and a secured portion, wherein the unsecured portion comprises a first operating system running a first software application, wherein the first software application comprises a software loop, and wherein the secured portion comprises a second operating system running a second software application;

a secured storage area storing a code portion; and a memory for storing instructions, that when executed by the processor perform a copy protection method comprising:

executing the software loop of the first software application;

executing a first call in the software loop to the code portion;

loading a decrypted code portion of the first software application in the second operating system from the secure storage area if the decrypted code portion is present in the secure storage area, otherwise decrypting an encrypted code portion of the first software application; and

executing the code portion of the first software application in the second operating system in response to the first call, wherein a result returned in response to the first call produces one of an unusable state in the first software application when the first software application has not been successfully validated and a usable state in the first software application when the first software application has been successfully validated, wherein the second operating system is a secure operating system comprising an interpreter module operable to interpret the decrypted code portion; and

producing a binary ready for execution at the first software application in the first operating system in response to the first call in the first software application.

12. The computer system of claim 11 , wherein the first function and the validation are performed by a second software application in the second operating system.

13. The computer system of claim 11 further comprising:

using a key to decrypt the encrypted code portion of the first software application if the decrypted copy of the code portion is not present in the secured storage area.

14. The computer system of claim 13 , wherein the decrypting comprises:

copying the encrypted code portion of the first software application from the first operating system to the second operating system;

downloading a decryption key for decrypting the code portion after the completion of the validation of the first software application, wherein the decryption key is specific to a particular device and first software application combination;

decrypting the code portion of the first software application with the decryption key in the second operating system with the second software application; and

storing the decrypted code portion in the secured storage area.

15. The computer system of claim 11 , wherein the data portion comprises one of a function, a routine, a subroutine, and a procedure.

16. The computer system of claim 11 , wherein the result returned from the first call that causes the unusable state in the first software application comprises one of a predetermined response, a garbage data, and returning no result.

17. The computer system of claim 16 , wherein the code portion comprises one of garbage code and garbage data when the first software application has not been successfully validated.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2012
From: TAMASI, ANTHONY MICHAEL; LOTTES, TIMOTHY PAUL; SKALJAK, BOJAN; FOMICHEV, FEDOR; EDELSTEN, ANDREW LEIGHTON; HUANG, JAY; REGE, ASHUTOSH GAJANAN; GALOCY, KEITH BRIAN
To: NVIDIA CORPORATION
Reel/Frame 028123/0189 →
Continuity (2)
Provisional Application 61533060 · Sep 9, 2011
Related Publication 20130067240A1 · Mar 14, 2013