IP Library Granted Patent US 9,824,238
Granted Patent B1
US 9,824,238 · App. 14/286,324 · Granted Nov 21, 2017

Encoding of sensitive data

Inventors: Xinran Wang (San Ramon, CA); Yao Zhao (Fremont, CA)
Assignee: Shape Security, Inc.
G06F21/64
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,824,238
App. No.
14/286,324
Granted
Nov 21, 2017
Kind
B1
Abstract

A computer-implemented method, the method includes identifying a piece of data to be served from a server system to a client device that is remote from the server system; creating a plurality of expressions that, when executed, provide a result that corresponds to the piece of data; and providing the plurality of expressions to the client device with code for executing the plurality of expressions.

Claims (93)

1. A computer-implemented method comprising:

identifying a first set of initial expressions and a second set of initial expressions in computer code requested to be sent from a server system to a client device remote from the server system, wherein the first set of initial expressions and the second set of initial expressions each comprise one or more expressions, are distinct from one another and each comprise potentially sensitive information, and wherein the first set of initial expressions further comprises one or more expressions of instrumentation code for identifying malicious activity;

creating a first plurality of replacement expressions arranged in a first order that, when executed in the first order, provides a first result that is equivalent to a result provided by execution of the first set of initial expressions;

creating a second plurality of replacement expressions arranged in a second order that, when executed in the second order, provides a second result that is equivalent to a result provided by execution of the second set of initial expressions, wherein the first plurality of replacement expressions are distinct from the second plurality of replacement expressions;

generating modified computer code that interferes with an ability of malware to interact with the computer code at the client device by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with a third set of initial expressions in the computer code to be sent to the client device, wherein the third set of initial expressions excludes the first set of initial expressions and the second set of initial expressions, wherein the interleaving includes:

inserting expressions of the first plurality of replacement expressions between expressions of the third plurality of initial expressions such that a first expression of the first plurality of replacement expressions is positioned between a first pair of expressions of the third set of initial expressions, and a second expression of the first plurality of replacement expressions is positioned between a second pair of expressions of the third set initial expressions, wherein the first pair is different from the second pair; and

inserting expressions of the second plurality of replacement expressions between expressions of the third plurality of initial expressions, wherein the first plurality of replacement expressions appear in the modified computer code in the first order and the second plurality of replacement expressions appear in the modified computer code in the second order; and

providing the modified computer code to the client device;

wherein the method is performed by one or more computing devices.

2. The computer-implemented method of claim 1 , further comprising:

identifying two or more expressions of the first set of replacement expressions that can be executed in any order relative to each other without affecting the first result;

determining a modified order of the first set of replacement expressions based on performing a permutation of the two or more expressions in the first set of replacement expressions;

generating second modified computer code by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with the third set of initial expressions, wherein, as a result of the interleaving, the first plurality of replacement expressions appear in the second modified computer code in the modified order; and

providing the second modified computer code to a second client device requesting the computer code.

3. The computer-implemented method of claim 1 , further comprising

identifying a particular replacement expression in the first plurality of replacement expressions;

creating a third plurality of replacement expressions that, when executed, provides a result that is equivalent to the particular replacement expression; and

replacing the particular replacement expression in the first plurality of replacement expressions with the third plurality of replacement expressions.

4. The computer-implemented method of claim 1 , wherein the first set of initial expressions comprise formats of code in HTML, CSS, and JavaScript, and wherein each of the formats interoperates with the other formats.

5. The computer-implemented method of claim 1 , wherein the first plurality of replacement expressions includes one or more junk expressions that do not execute when the modified computer code is executed on the client device.

6. The computer-implemented method of claim 1 , further comprising:

generating second modified computer code that is different from the modified computer code by interleaving the first plurality of replacement expressions, the second plurality of replacement expressions and the third set of initial expressions in a different order;

providing the second modified computer code to a second client device requesting the computer code;

wherein the first plurality of replacement expressions still appear in the second modified computer code in the first order;

wherein the second plurality of replacement expressions still appear in the second modified computer code in the second order.

7. The computer-implemented method of claim 1 , wherein the first pair of expressions of the third set of initial expressions shares one expression with the second pair of expressions of the third set of initial expressions.

8. A computer system comprising:

one or more hardware processors;

a memory coupled to the one or more hardware processors and storing one or more instructions, which when executed by the one or more hardware processors cause the one or more hardware processors to:

identify a first set of initial expressions and a second set of initial expressions in computer code requested to be sent from a server system to a client device remote from the server system, wherein the first set of initial expressions comprises and the second set of initial expressions each comprise one or more expressions, are distinct from one another and each comprise potentially sensitive information, and wherein the first set of initial expressions further comprises one or more expressions of instrumentation code for identifying malicious activity;

create a first plurality of replacement expressions arranged in a first order that, when executed in the first order, provides a first result that is equivalent to a result provided by execution of the first set of initial expressions;

create a second plurality of replacement expressions arranged in a second order that, when executed in the second order, provides a second result that is equivalent to a result provided by execution of the second set of initial expressions, wherein the first plurality of replacement expressions are distinct from the second plurality of replacement expressions;

generate modified computer code that interferes with an ability of malware to interact with the computer code at the client device by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with a third set of initial expressions in the computer code to be sent to the client device, wherein the third set of initial expressions exclude the first set of initial expressions and the second set of initial expressions, wherein the interleaving includes:

inserting expressions of the first plurality of replacement expressions between expressions of the third plurality of initial expressions such that a first expression of the first plurality of replacement expressions is positioned between a first pair of expressions of the third set of initial expressions, and a second expression of the first plurality of replacement expressions is positioned between a second pair of expressions of the third set initial expressions, wherein the first pair is different from the second pair; and

inserting expressions of the second plurality of replacement expressions between expressions of the third plurality of initial expressions, wherein the first plurality of replacement expressions appear in the modified computer code in the first order and the second plurality of replacement expressions appear in the modified computer code in the second order; and

provide the modified computer code to the client device.

9. The computer system of claim 8 , wherein the one or more instructions, when executed by the one or more hardware processors, further cause the one or more hardware processors to:

identify two or more expressions of the first set of replacement expressions that can be executed in any order relative to each other without affecting the first result;

determine a modified order of the first set of replacement expressions based on performing a permutation of the two or more expressions in the first set of replacement expressions;

generate second modified computer code by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with the third set of initial expressions of the computer code, wherein, as a result of the interleaving, the first plurality of replacement expressions appear in the second modified computer code in the modified order; and

provide the second modified computer code to a second client device requesting the computer code.

10. The computer system of claim 8 , wherein the one or more instructions, when executed by the one or more hardware processors, further cause the one or more hardware processors to:

identify a particular replacement expression in the first plurality of replacement expressions;

create a third plurality of replacement expressions that, when executed, provides a result that is equivalent to the particular replacement expression; and

replace the particular replacement expression in the first plurality of replacement expressions with the third plurality of replacement expressions.

11. The computer system of claim 8 , wherein the first set of initial expressions comprise formats of code in HTML, CSS, and JavaScript, and wherein each of the formats interoperates with the other formats.

12. The computer system of claim 8 , wherein the first plurality of replacement expressions includes one or more junk expressions that do not execute when the modified computer code is executed on the client device.

13. The computer system of claim 8 , wherein the one or more instructions, when executed by the one or more hardware processors, further cause the one or more hardware processors to:

generate second modified computer code that is different from the modified computer code by interleaving the first plurality of replacement expressions, the second plurality of replacement expressions and the third set of initial expressions in a different order; and

provide the second modified computer code to a second client device requesting the computer code;

wherein the first plurality of replacement expressions still appears in the second modified computer code in the first order;

wherein the second plurality of replacement expressions still appears in the second modified computer code in the second order.

14. The computer system of claim 8 , wherein the first pair of expressions of the third set of initial expressions shares one expression with the second pair of expressions of the third set of initial expressions.

15. A computer-implemented method comprising:

identifying a first set of initial expressions and a second set of initial expressions in computer code requested to be sent from a server system to a client device remote from the server system, wherein the first set of initial expressions and the second set of initial expressions each comprise one or more expressions, are distinct from one another and each comprise potentially sensitive information;

creating a first plurality of replacement expressions arranged in a first order that, when executed in the first order, provides a first result that is equivalent to a result provided by execution of the first set of initial expressions;

creating a second plurality of replacement expressions arranged in a second order that, when executed in the second order, provides a second result that is equivalent to a result provided by execution of the second set of initial expressions, wherein the first plurality of replacement expressions are distinct from the second plurality of replacement expressions;

generating modified computer code that interferes with an ability of malware to interact with the computer code at the client device by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with a third set of initial expressions in the computer code to be sent to the client device, wherein the third set of initial expressions excludes the first set of initial expressions and the second set of initial expressions, wherein the interleaving includes:

inserting expressions of the first plurality of replacement expressions between expressions of the third plurality of initial expressions such that a first expression of the first plurality of replacement expressions is positioned between a first pair of expressions of the third set of initial expressions, and a second expression of the first plurality of replacement expressions is positioned between a second pair of expressions of the third set initial expressions, wherein the first pair is different from the second pair; and

inserting expressions of the second plurality of replacement expressions between expressions of the third plurality of initial expressions, wherein the first plurality of replacement expressions appear in the modified computer code in the first order and the second plurality of replacement expressions appear in the modified computer code in the second order; and

providing the modified computer code to the client device;

wherein the first plurality of replacement expressions includes one or more junk expressions that do not execute when the modified computer code is executed on the client device;

wherein the method is performed by one or more computing devices.

16. The computer-implemented method of claim 15 , further comprising:

identifying two or more expressions of the first set of replacement expressions that can be executed in any order relative to each other without affecting the first result;

determining a modified order of the first set of replacement expressions based on performing a permutation of the two or more expressions in the first set of replacement expressions;

generating second modified computer code by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with the third set of initial expressions of the computer code, wherein, as a result of the interleaving, the first plurality of replacement expressions appear in the second modified computer code in the modified order; and

providing the second modified computer code to a second client device requesting the computer code.

17. The computer-implemented method of claim 15 , further comprising:

generating second modified computer code that is different from the modified computer code by interleaving the first plurality of replacement expressions, the second plurality of replacement expressions and the third set of initial expressions in a different order;

wherein the first plurality of replacement expressions still appear in the second modified computer code in the first order;

wherein the second plurality of replacement expressions still appear in the second modified computer code in the second order.

18. A computer system comprising:

one or more hardware processors;

a memory coupled to the one or more hardware processors and storing one or more instructions, which when executed by the one or more hardware processors cause the one or more hardware processors to:

identify a first set of initial expressions and a second set of initial expressions in computer code requested to be sent from a server system to a client device remote from the server system, wherein the first set of initial expressions and the second set of initial expressions each comprise one or more expressions, are distinct from one another and each comprise potentially sensitive information;

create a first plurality of replacement expressions arranged in a first order that, when executed in the first order, provides a first result that is equivalent to a result provided by execution of the first set of initial expressions;

create a second plurality of replacement expressions arranged in a second order that, when executed in the second order, provides a second result that is equivalent to a result provided by execution of the second set of initial expressions, wherein the first plurality of replacement expressions are distinct from the second plurality of replacement expressions;

generate modified computer code that interferes with an ability of malware to interact with the computer code at the client device by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with a third set of initial expressions in the computer code to be sent to the client device, wherein the third set of initial expressions excludes the first set of initial expressions and the second set of initial expressions, wherein the interleaving includes:

insert expressions of the first plurality of replacement expressions between expressions of the third plurality of initial expressions such that a first expression of the first plurality of replacement expressions is positioned between a first pair of expressions of the third set of initial expressions, and a second expression of the first plurality of replacement expressions is positioned between a second pair of expressions of the third set initial expressions, wherein the first pair is different from the second pair; and

insert expressions of the second plurality of replacement expressions between expressions of the third plurality of initial expressions, wherein the first plurality of replacement expressions appear in the modified computer code in the first order and the second plurality of replacement expressions appear in the modified computer code in the second order; and

provide the modified computer code to the client device;

wherein the first plurality of replacement expressions includes one or more junk expressions that do not execute when the modified computer code is executed on the client device;

wherein the method is performed by one or more computing devices.

19. The computer system of claim 18 , wherein the one or more instructions, when executed by the one or more hardware processors, further cause the one or more hardware processors to:

identify two or more expressions of the first set of replacement expressions that can be executed in any order relative to each other without affecting the first result;

determine a modified order of the first set of replacement expressions based on performing a permutation of the two or more expressions in the first set of replacement expressions;

generate second modified computer code by interleaving the first plurality of replacement expressions and the second plurality of replacement expressions with the third set of initial expressions of the computer code, wherein, as a result of the interleaving, the first plurality of replacement expressions appear in the second modified computer code in the modified order; and

provide the second modified computer code to a second client device requesting the computer code.

20. The computer system of claim 18 , wherein the one or more instructions, when executed by the one or more hardware processors, further cause the one or more hardware processors to:

generate second modified computer code that is different from the modified computer code by interleaving the first plurality of replacement expressions, the second plurality of replacement expressions and the third set of initial expressions in a different order;

wherein the first plurality of replacement expressions still appear in the second modified computer code in the first order;

wherein the second plurality of replacement expressions still appear in the second modified computer code in the second order.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2019
From: SILICON VALLEY BANK
To: SHAPE SECURITY, INC.
Reel/Frame 048501/0115 →
SECURITY INTEREST Recorded May 25, 2018
From: SHAPE SECURITY, INC.
To: SILICON VALLEY BANK
Reel/Frame 046243/0254 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 033044 FRAME: 0163. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 16, 2015
From: WANG, XINRAN; ZHAO, YAO
To: SHAPE SECURITY, INC.
Reel/Frame 034779/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2014
From: WANG, XINRAN; ZHAO, YAO
To: SHAPE SECURITY INC.
Reel/Frame 033044/0163 →