IP Library Granted Patent US 11,687,361
Granted Patent B1
US 11,687,361 · App. 17/183,162 · Granted Jun 27, 2023

Generating thread sensors for extracting side channel information from multithreading processors

Inventor: Viliam Holub (Prague, CZ)
Assignee: Rapid7, Inc.
G06F9/48G06F9/455G06F9/45558G06F9/4806G06F9/4843G06F9/4881G06F9/50G06F9/5027G06F9/5038G06F21/50G06F21/55G06F21/556G06F2009/45587
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 11,687,361
App. No.
17/183,162
Granted
Jun 27, 2023
Kind
B1
Abstract

Systems and methods are disclosed to implement a thread sensor generation system to generate thread sensors for extracting side channel information about other executing threads on a multithreading CPU. In embodiments, the system generates a set of sensors for evaluation. Each sensor may include a sequence of arithmetic or logic operations between variables or constants, which will cause a particular resource usage pattern by the CPU. The sensors are executed on the CPU in parallel with instances of a victim thread to measure an execution slowdown profile of the sensor thread caused by CPU resource conflicts with the victim thread. Based on the execution slowdown profiles, a sensitivity metric is calculated for each sensor, which is used to select the best sensor(s) for the victim thread. Sensors generated using the disclosed techniques can be used to extract secret information via side-channel attacks on currently available multithreaded processors.

Claims (76)

1. A method comprising:

performing, by a computer device that implements a thread sensor generator:

creating a plurality of sensors for extracting side channel information from a central processing unit (CPU) that executes multiple threads in parallel;

for each of the sensors:

executing the sensor in a sensor thread on the CPU, in parallel with a victim thread,

measuring an execution slowdown of the sensor thread caused by CPU resource conflicts between the sensor thread and the victim thread, and

determining, based on the execution slowdown, a sensitivity metric of the sensor for the victim thread;

selecting one of the sensors to use to extract side channel information from the CPU based on the sensitivity metrics of the sensors, wherein

the selected sensor is selected based on a difference between the execution slowdown caused by the victim thread of a first type and a second execution slowdown caused by another victim thread of a second type; and

distinguishing between the first and second types of victim threads on the CPU based on side channel information extracted from the CPU using the selected sensor.

2. The method of claim 1 , wherein the creating of the sensors comprises:

generating program code for a sensor that contains a random sequence of arithmetic or logic operations between variables or constants.

3. The method of claim 1 , wherein the creating of the sensors comprises:

generating a sensor that contains a sequence of instructions that is used by the victim thread.

4. The method of claim 1 , wherein the creating of the sensors comprises:

identifying a previously created sensor with a sensitivity metric that satisfies an acceptance criterion; and

making random modifications to the previously created sensor to obtain the plurality of sensors.

5. The method of claim 1 , wherein

the measuring of the execution slowdown of the sensor thread is performed using a CPU cycle clock of the CPU.

6. The method of claim 1 , wherein

the computer device that implements the thread sensor generator is remote from another machine that implements the CPU, and

the method further comprises performing, by the thread sensor generator:

sending the plurality of sensors to the other computer device; and

receiving the execution slowdowns of the sensors from the other computer device.

7. The method of claim 1 , wherein the measuring of the execution slowdown of the sensor thread comprises:

performing multiple executions of the sensor on the CPU to obtain multiple execution slowdown values; and

determining an average of the multiple execution slowdown values.

8. The method of claim 1 , wherein

the measuring of the execution slowdown of the sensor thread comprises performing multiple executions of the sensor on the CPU to obtain a distribution of execution slowdown values, and

the sensitivity metric is determined based on one or more parameters of the distribution of execution slowdown values.

9. The method of claim 1 , further comprising:

executing the selected sensor on the CPU; and

determining, based on side channel information extracted from the CPU using the selected sensor, that another instance of the victim thread is executing on the CPU.

10. The method of claim 1 , wherein

the selected sensor is selected based on a difference between the execution slowdown caused by a first action of the victim thread and a second execution slowdown caused by a second action of the victim thread, and

the method further comprises distinguishing between the first and second actions of victim threads on the CPU based on side channel information extracted from the CPU using the selected sensor.

11. The method of claim 1 , wherein

the victim thread is programmed to sequentially process data units of a piece of data, and

the method further comprises determining contents of individual data units processed by an instance of the victim thread on the CPU based on side channel information extracted from the CPU using the selected sensor.

12. The method of claim 1 , wherein

the victim thread is programmed to encrypt data using a secret encryption key, and

the method further comprises determining the encryption key based on side channel information extracted from the CPU using the selected sensor.

13. The method of claim 1 , wherein

the victim thread is programmed to process an image, and

the method further comprises determining an approximation of the image based on side channel information extracted from the CPU using the selected sensor.

14. A system comprising:

a computer device that implements a thread sensor generator, configured to:

create a plurality of sensors for extracting side channel information from a central processing unit (CPU) that executes multiple threads in parallel;

for each of the sensors:

execute the sensor in a sensor thread on the CPU, in parallel with a victim thread,

measure an execution slowdown of the sensor thread caused by CPU resource conflicts between the sensor thread and the victim thread, and

determine, based on the execution slowdown, a sensitivity metric of the sensor for the victim thread;

select one of the sensors to use to extract side channel information from the CPU based on the sensitivity metrics of the sensors, wherein

the selected sensor is selected based on a difference between the execution slowdown caused by the victim thread of a first type and a second execution slowdown caused by another victim thread of a second type; and

distinguish between the first and second types of victim threads on the CPU based on side channel information extracted from the CPU using the selected sensor.

15. The system of claim 14 , wherein

the CPU is a simultaneous multithreading CPU configured to execute instructions from different threads in a same execution pipeline stage.

16. The system of claim 14 , wherein

the computer device that implements the thread sensor generator is remote from another computer device that implements the CPU, and

the thread sensor generator is configured to:

send the plurality of sensors to the other computer device; and

receive the execution slowdowns of the sensors from the other computer device.

17. The system of claim 16 , wherein the thread sensor generator is configured to:

send client-side code to a web browser executing on the other computer device, wherein the client-side code causes the sensors to be executed on the other computer device.

18. The system of claim 14 , wherein to create the sensors, the thread sensor generator is configured to:

identify a previously created sensor with a sensitivity metric that satisfies an acceptance criterion; and

make random modifications to the previously created sensor to obtain the plurality of sensors.

19. A non-transitory computer-accessible storage medium storing program instructions that when executed on or across one or more processors implement a thread sensor generator and cause the thread sensor generator to:

create a plurality of sensors for extracting side channel information from a central processing unit (CPU) that executes multiple threads in parallel;

for each of the sensors:

execute the sensor in a sensor thread on the CPU, in parallel with a victim thread,

measure an execution slowdown of the sensor thread caused by CPU resource conflicts between the sensor thread and the victim thread, and

determine, based on the execution slowdown, a sensitivity metric of the sensor for the victim thread;

select one of the sensors to use to extract side channel information from the CPU based on the sensitivity metrics of the sensors, wherein

the selected sensor is selected based on a difference between the execution slowdown caused by the victim thread of a first type and a second execution slowdown caused by another victim thread of a second type; and

distinguish between the first and second types of victim threads on the CPU based on side channel information extracted from the CPU using the selected sensor.

Assignments (2)
SECURITY INTEREST Recorded Jun 26, 2025
From: RAPID7, INC.; RAPID7 LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 071743/0537 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2021
From: HOLUB, VILIAM
To: RAPID7, INC.
Reel/Frame 055404/0363 →