IP Library › Granted Patent US 10,965,444
Granted Patent B2
US 10,965,444 · App. 15/961,830 · Granted Mar 30, 2021

Mitigating timing attacks via dynamically triggered time dilation

Inventors: Jason Weber (Medina, WA); Tobin Titus (Kirkland, WA); Daniel Libby (Kirkland, WA); Brian Manthos (Bellevue, WA); Colin Pacitti (Seattle, WA); Pengxiang Zhao (Bellevue, WA); Matthew Miller (Seattle, WA); Jordan Thomas Rabet (Seattle, WA); John Hazen (Kirkland, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04L9/005G06F2207/7223H04L2209/046H04L2209/08H04L2209/122
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 10,965,444
App. No.
15/961,830
Granted
Mar 30, 2021
Kind
B2
Abstract

Techniques for mitigating timing attacks via dynamically triggered time dilation are provided. According to one set of embodiments, a computer system can track a count of application programming interface (API) calls or callbacks made by a program within each of a series of time buckets. The computer system can further determine that the count exceeds a threshold count for a predefined consecutive number of time buckets. Upon making this determination, the computer system can trigger time dilation with respect to the program, where the time dilation causes the program to observe a dilated view of time relative to real time.

Claims (42)

1. A computer system comprising:

a computer hardware processor; and

a non-transitory computer readable storage medium having stored thereon program code that, when executed by the computer hardware processor, causes the computer hardware processor to:

track a count of application programming interface (API) calls or callbacks made by a program within each of a series of time buckets;

determine that the count exceeds a threshold count for a predefined consecutive number of time buckets; and

upon determining that the count exceeds the threshold count for the predefined consecutive number of time buckets, trigger time dilation with respect to the program, wherein the time dilation causes the program to observe a dilated view of time relative to real time by modifying, for at least one API call or callback made by the program, an execution time or a return time value of the API call or callback.

2. The computer system of claim 1 wherein the count of API calls or callbacks include one or more calls or callbacks to APIs usable by the program for constructing an implicit clock.

3. The computer system of claim 2 wherein triggering time dilation with respect to the program comprises:

for each successive call or callback made by the program to an API usable for constructing an implicit clock, inserting a random amount of wait time into the call or callback of the API.

4. The computer system of claim 1 wherein the count of API calls or callbacks include one or more calls to explicit clock APIs configured to return time values derived from one or more hardware signals of the computer system.

5. The computer system of claim 4 wherein triggering time dilation with respect to the program comprises:

for each successive call made by the program to an explicit clock API, warping the time value returned by the explicit clock API before passing the time value to the program.

6. The computer system of claim 5 wherein warping the time value returned by the explicit clock API comprises:

transforming the time value using a randomly determined linear or non-linear transformation function.

7. The computer system of claim 1 wherein the program code further causes the computer hardware processor to:

transmit, to one or more remote servers, information pertaining to the program and the triggering of the time dilation with respect to the program, the information being useable by the one or more remote servers for tuning how the time dilation is implemented.

8. A method for mitigating timing attacks via dynamically triggered time dilation, the method comprising:

tracking, by a computer system, a count of application programming interface (API) calls or callbacks made by a program within each of a series of time buckets;

determining, by the computer system, that the count exceeds a threshold count for a predefined consecutive number of time buckets; and

upon determining that the count exceeds the threshold count for the predefined consecutive number of time buckets, triggering, by the computer system, time dilation with respect to the program, wherein the time dilation causes the program to observe a dilated view of time relative to real time by modifying, for at least one API call or callback made by the program, an execution time or a return time value of the API call or callback.

9. The method of claim 8 wherein the count of API calls or callbacks include one or more calls or callbacks to APIs usable by the program for constructing an implicit clock.

10. The method of claim 9 wherein triggering time dilation with respect to the program comprises:

for each successive call or callback made by the program to an API usable for constructing an implicit clock, inserting a random amount of wait time into the call or callback of the API.

11. The method of claim 8 wherein the count of API calls or callbacks include one or more calls to explicit clock APIs configured to return time values derived from one or more hardware signals of the computer system.

12. The method of claim 11 wherein triggering time dilation with respect to the program comprises:

for each successive call made by the program to an explicit clock API, warping the time value returned by the explicit clock API before passing the time value to the program.

13. The method of claim 12 wherein warping the time value returned by the explicit clock API comprises:

transforming the time value using a randomly determined linear or non-linear transformation function.

14. The method of claim 8 wherein the method further comprises:

transmitting, to one or more remote servers, information pertaining to the program and the triggering of the time dilation with respect to the program, the information being useable by the one or more remote servers for tuning how the time dilation is implemented.

15. A non-transitory computer readable storage medium having stored thereon program code executable by a computer system, the program code causing the computer system to:

track a count of application programming interface (API) calls or callbacks made by a program within each of a series of time buckets;

determine that the count exceeds a threshold count for a predefined consecutive number of time buckets; and

upon determining that the count exceeds the threshold count for the predefined consecutive number of time buckets, trigger time dilation with respect to the program, wherein the time dilation causes the program to observe a dilated view of time relative to real time by modifying, for at least one API call or callback made by the program, an execution time or a return time value of the API call or callback.

16. The non-transitory computer readable storage medium of claim 15 wherein the count of API calls or callbacks include one or more calls or callbacks to APIs usable by the program for constructing an implicit clock.

17. The non-transitory computer readable storage medium of claim 16 wherein triggering time dilation with respect to the program comprises:

for each successive call or callback made by the program to an API usable for constructing an implicit clock, inserting a random amount of wait time into the call or callback of the API.

18. The non-transitory computer readable storage medium of claim 15 wherein the count of API calls or callbacks include one or more calls to explicit clock APIs configured to return time values derived from one or more hardware signals of the computer system.

19. The non-transitory computer readable storage medium 18 wherein triggering time dilation with respect to the program comprises:

for each successive call made by the program to an explicit clock API, warping the time value returned by the explicit clock API before passing the time value to the program.

20. The non-transitory computer readable storage medium of claim 15 wherein the program code further causes the computer system to:

transmit, to one or more remote servers, information pertaining to the program and the triggering of the time dilation with respect to the program, the information being useable by the one or more remote servers for tuning how the time dilation is implemented.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2018
From: WEBER, JASON; TITUS, TOBIN; LIBBY, DANIEL; MANTHOS, BRIAN; PACITTI, COLIN; ZHAO, PENGXIANG; MILLER, MATTHEW; RABET, JORDAN THOMAS; HAZEN, JOHN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 045627/0795 →
Continuity (1)
Related Publication 20190327075A1 · Oct 24, 2019
Cited By (1)
US 12,481,758