IP Library Granted Patent US 9,218,483
Granted Patent B2
US 9,218,483 · App. 13/939,061 · Granted Dec 22, 2015

Synthetic processing diversity with multiple architectures within a homogeneous processing environment

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,218,483
App. No.
13/939,061
Granted
Dec 22, 2015
Kind
B2
Abstract

A method of increasing processing diversity on a computer system includes: loading a plurality of instruction streams, each of the plurality of instruction streams being equivalent; executing, in a context, a first stream of the plurality of instruction streams; stopping execution of the first stream at a first location of the first stream; and executing, in the context, a second stream of the plurality of instruction streams at a second location of the second stream, the second location corresponding to the first location of the first stream.

Claims (39)

1. A method of increasing processing diversity on a computer system, the method comprising:

a) duplicating, in a context, a computer program execution instruction stream into a plurality of instruction streams, each of the plurality of instruction streams being equivalent;

b) encoding each of the plurality of instruction streams using a different encoding key;

c) decoding a first instruction stream of the plurality of instruction streams;

d) executing said decoded first instruction stream of the plurality of instruction streams to execute a first portion of the computer program;

e) stopping execution of the first decoded instruction stream at a first location of the first instruction stream;

f) decoding a second instruction stream of the plurality of instruction streams starting at a second location of the second instruction stream, the second location corresponding to the first location of the first instruction stream; and

g) executing said decoded second instruction stream of the plurality of instruction streams at said second location of the second instruction stream to execute a second portion of the computer program immediately following the first portion, wherein steps c to g are repeated until all of the plurality of instruction streams are decoded and executed, and

wherein the first location of the first instruction stream and the second location of the second instruction stream are randomly selected.

2. The method of claim 1 , wherein each of the plurality of instruction streams is loaded from a binary and is identical to the rest of the plurality of instruction streams.

3. The method of claim 1 , wherein each of the plurality of instruction streams is generated from an instruction stream loaded from a binary and is identical to the rest of the plurality of instruction streams.

4. The method of claim 1 , wherein the method of increasing processing diversity on the computer system is performed using a virtualization program executing on the computer system.

5. The method of claim 1 , wherein the method of increasing processing diversity on the computer system is performed using a hardware instruction selector.

6. A non-transitory computer readable medium embodying program instructions for execution by a data processing apparatus, the program instructions adapting the processing apparatus for:

a) duplicating, in a context, a computer program execution instruction stream into a plurality of instruction streams, each of the plurality of instruction streams being equivalent;

b) encoding each of the plurality of instruction streams using a different encoding key;

c) decoding a first instruction stream of the plurality of instruction streams;

d) executing said decoded first instruction stream of the plurality of instruction streams to execute a first portion of the computer program;

e) stopping execution of the first decoded instruction stream at a first location of the first instruction stream;

f) decoding a second instruction stream of the plurality of instruction streams starting at a second location of the second instruction stream, the second location corresponding to the first location of the first instruction stream; and

g) executing said decoded second instruction stream of the plurality of instruction streams at said second location of the second instruction stream to execute a second portion of the computer program immediately following the first portion, wherein steps c to g are repeated until all of the plurality of instruction streams are decoded and executed, and

wherein the first location of the first instruction stream and the second location of the second instruction stream are randomly selected.

7. The non-transitory computer readable medium of claim 6 , wherein each of the plurality of instruction streams is loaded from a binary and is identical to the rest of the plurality of instruction streams.

8. The non-transitory computer readable medium of claim 6 , wherein each of the plurality of instruction streams is generated from an instruction stream loaded from a binary and is identical to the rest of the plurality of instruction streams.

9. The non-transitory computer readable medium of claim 6 , wherein the non-transitory computer readable medium further embodies a virtualization program, and

wherein the virtualization program comprises the program instructions.

10. A computer system comprising a processor and memory storing program instructions, the computer system being configured to:

a) duplicating, in a context, a computer program execution instruction stream into a plurality of instruction streams, each of the plurality of instruction streams being equivalent;

b) encode each of the plurality of instruction streams using a different encoding key;

c) decode a first instruction stream of the plurality of instruction streams;

d) execute said decoded first instruction stream of the plurality of instruction streams to execute a first portion of the computer program;

e) stop execution of the first decoded instruction stream at a first location of the first instruction stream;

f) decode a second instruction stream of the plurality of instruction streams starting at a second location of the second instruction stream, the second location corresponding to the first location of the first instruction stream; and

g) execute said decoded second instruction stream of the plurality of instruction streams at said second location of the second instruction stream to execute a second portion of the computer program immediately following the first portion, wherein steps c to g are repeated until all of the plurality of instruction streams are decoded and executed, and

wherein the first location of the first instruction stream and the second location of the second instruction stream are randomly selected.

11. The system of claim 10 , wherein each of the plurality of instruction streams is loaded from a binary and is identical to the rest of the plurality of instruction streams.

12. The system of claim 10 , wherein each of the plurality of instruction streams is generated from an instruction stream loaded from a binary and is identical to the rest of the plurality of instruction streams.

13. The system of claim 10 , wherein a virtualization program executing on the computer system configures the computer system to: execute, in the context, the first stream of the plurality of instruction streams; stop execution of the first stream at the first location of the first stream; and execute, in the context, the second stream of the plurality of instruction streams.

14. The system of claim 10 , further comprising a hardware instruction selector configured to execute, in the context, the first stream of the plurality of instruction streams; stop execution of the first stream at the first location of the first stream; and execute, in the context, the second stream of the plurality of instruction streams.

Assignments (14)
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2025
From: UBS AG, STAMFORD BRANCH
To: FORCEPOINT, LLC; BITGLASS, LLC
Reel/Frame 070706/0263 →
CHANGE OF NAME Recorded Mar 21, 2025
From: FORCEPOINT FEDERAL HOLDINGS LLC
To: EVERFOX HOLDINGS LLC
Reel/Frame 070585/0524 →
PARTIAL PATENT RELEASE AND REASSIGNMENT AT REEL/FRAME 055052/0302 Recorded Oct 3, 2023
From: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: FORCEPOINT FEDERAL HOLDINGS LLC (F/K/A FORCEPOINT LLC)
Reel/Frame 065103/0147 →
SECURITY INTEREST Recorded Sep 29, 2023
From: FORCEPOINT FEDERAL HOLDINGS LLC
To: APOLLO ADMINISTRATIVE AGENCY LLC, AS COLLATERAL AGENT
Reel/Frame 065086/0822 →
CHANGE OF NAME Recorded May 12, 2021
From: FORCEPOINT LLC
To: FORCEPOINT FEDERAL HOLDINGS LLC
Reel/Frame 056216/0309 →
PATENT SECURITY AGREEMENT Recorded Jan 20, 2021
From: REDOWL ANALYTICS, INC.; FORCEPOINT LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 055052/0302 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: WEBSENSE, INC.; PORTAUTHORITY TECHNOLOGIES, LLC (FKA PORTAUTHORITY TECHNOLOGIES, INC.); RAYTHEON OAKLEY SYSTEMS, LLC; FORCEPOINT FEDERAL LLC (FKA RAYTHEON CYBER PRODUCTS, LLC, FKA RAYTHEON CYBER PRODUCTS, INC.)
Reel/Frame 055492/0146 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: FORCEPOINT FEDERAL LLC
To: FORCEPOINT LLC
Reel/Frame 043397/0460 →
CHANGE OF NAME Recorded Feb 16, 2016
From: RAYTHEON CYBER PRODUCTS, LLC
To: FORCEPOINT FEDERAL LLC
Reel/Frame 037821/0818 →
PATENT SECURITY AGREEMENT Recorded Jun 9, 2015
From: WEBSENSE, INC.; RAYTHEON OAKLEY SYSTEMS, LLC; RAYTHEON CYBER PRODUCTS, LLC (FORMERLY KNOWN AS RAYTHEON CYBER PRODUCTS, INC.); PORT AUTHORITY TECHNOLOGIES, INC.
To: RAYTHEON COMPANY
Reel/Frame 035859/0282 →
CHANGE OF NAME Recorded Jun 2, 2015
From: RAYTHEON CYBER PRODUCTS, INC.
To: RAYTHEON CYBER PRODUCTS, LLC
Reel/Frame 035806/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: RAYTHEON BBN TECHNOLOGIES CORP.
To: RAYTHEON CYBER PRODUCTS, INC.
Reel/Frame 035794/0226 →
CONFIRMATORY LICENSE Recorded Aug 19, 2013
From: RAYTHEON BBN TECHNOLOGIES CORPORATION
To: AFRL/RIJ
Reel/Frame 031032/0722 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2013
From: MATTHEWS, DAVID; MARTZ, ROBERT
To: RAYTHEON BBN TECHNOLOGIES, CORP.
Reel/Frame 030842/0706 →