# US 10,372,901 B1 · High assurance certifiable cryptographic system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,901 B1
- Document ID: US10372901B1
- Status: Granted
- Kind: B1
- Application number: 15/654,820
- Filed: 2017-07-20
- Granted: 2019-08-06
- Earliest claimed: 2017-07-20
- Assignees: Rockwell Collins, Inc.
- Applicants: Rockwell Collins, Inc.
- Inventors: James A. Marek
- Web page: https://patentgrep.com/patent/US10372901B1

## CPC

- G06F 21/51: at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 21/577: {Assessing vulnerabilities and evaluating computer system security}
- G06F 21/602: {Providing cryptographic facilities or services}
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 2221/2107: File encryption
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Segregated cores or virtual processors within a processor establish at least two separate encryption paths via software virtualization. Guest operating systems and encryption applications operate on input data with an enforced level of synchronicity. Output is compared to determine if each encryption path arrives at the same encrypted output. If the outputs are identical, the encrypted data is passed on; if not, an error report is generated. No individual vulnerability may produce a single point of failure to produce erroneously encrypted or unencrypted output.

## Claims

### Claim 1

A computer apparatus comprising:
at least one processor, comprising a first set of one or more processing cores and a second set of one or more processing cores, in data communication with a memory storing processor executable code;
a hypervisor in data communication with the processor;
wherein the processor executable code configures the at least one processor to:
instantiate separate guest operating systems on each of the first set of processing cores and the second set of processing cores;
execute separate encryption applications within each of the separate guest operating systems;
monitor execution of each separate encryption application for a threshold level of synchronicity via the hypervisor;
compare a first encrypted output from the first set of processing cores to a second encrypted output from the second set of processing cores; and
output the encrypted output when the encrypted output from the first set of processing cores and the second set of processing cores are identical.

### Claim 2 (depends on 1)

The computer apparatus of claim 1, wherein the at least one processor is further configured to output a fault report when the encrypted output from the first set of processing cores and the second set of processing cores are not identical.

### Claim 3 (depends on 1)

The computer apparatus of claim 1, wherein the at least one processor is further configured to virtualize input and output ports to each of the first set of processing cores and the second set of processing cores.

### Claim 4 (depends on 1)

The computer apparatus of claim 1, wherein the at least one processor is further configured to perform covert channel analysis to certify a data encryption system.

### Claim 5 (depends on 1)

The computer apparatus of claim 1, wherein the at least one processor is further configured to halt execution of one of the encryption applications when the threshold level of synchronicity is not met.

### Claim 6 (depends on 1)

The computer apparatus of claim 1, wherein the separate guest operating systems are dissimilar.

### Claim 7 (depends on 1)

The computer apparatus of claim 1, wherein the separate encryption applications are dissimilar.

### Claim 8

A method for encrypting data comprising:
instantiating separate guest operating systems on each of a first set of processing cores and a second set of processing cores;
executing separate encryption applications within each of the separate guest operating systems;
monitoring execution of each separate encryption application for a threshold level of synchronicity;
comparing a first encrypted output from the first set of processing cores to a second encrypted output from the second set of processing cores; and
outputting the encrypted output when the encrypted output from the first set of processing cores and the second set of processing cores are identical.

### Claim 9 (depends on 8)

The method of claim 8, further comprising outputting a fault report when the encrypted output from the first set of processing cores and the second set of processing cores are not identical.

### Claim 10 (depends on 8)

The method of claim 8, further comprising virtualizing input and output ports to each of the first set of processing cores and the second set of processing cores.

### Claim 11 (depends on 8)

The method of claim 8, further comprising performing covert channel analysis to certify a data encryption system.

### Claim 12 (depends on 8)

The method of claim 8, further comprising halting execution of one of the encryption applications when the threshold level of synchronicity is not met.

### Claim 13 (depends on 8)

The method of claim 8, wherein the separate guest operating systems are dissimilar.

### Claim 14 (depends on 8)

The method of claim 8, wherein the separate encryption applications are dissimilar.

### Claim 15

A cryptography system comprising:
at least one processor configured to:
instantiate a virtualized soft core processor;
instantiate a first guest operating system on the at least one processor;
instantiate a second guest operating system on the virtualized soft core processor;
execute a first encryption application on the first guest operating system;
execute a second encryption application on the second guest operating system;
monitor execution steps of the first encryption application compared to the second encryption application;
compare a first encrypted output from the first encryption application to a second encrypted output from the second encryption application;
output an encrypted output when the first encrypted output and the second encrypted output are identical.

### Claim 16 (depends on 1)

The cryptography system of claim 1, wherein the at least one processor is further configured to output a fault report when the encrypted output from the first encryption application and the second encryption application are not identical.

### Claim 17 (depends on 1)

The cryptography system of claim 1, wherein the at least one processor is further configured to virtualize input and output ports to each of the first guest operating system and the second guest operating system.

### Claim 18 (depends on 1)

The cryptography system of claim 1, wherein the at least one processor is further configured to halt execution of one of the encryption applications when the threshold level of synchronicity is not met.

### Claim 19 (depends on 1)

The cryptography system of claim 1, wherein the separate guest operating systems are dissimilar.

### Claim 20 (depends on 1)

The cryptography system of claim 1, wherein the separate encryption applications are dissimilar.
