IP Library Granted Patent US 8,495,389
Granted Patent B2
US 8,495,389 · App. 11/640,485 · Granted Jul 23, 2013

Locking changing hard disk content to a hardware token

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 8,495,389
App. No.
11/640,485
Granted
Jul 23, 2013
Kind
B2
Abstract

A method for preventing unauthorized use of a software program on a computing device includes updating a state of a software program on a computing device to an updated state. Transmitting an update signal from the software program to a hardware token coupled to the computing device and updating a state of the hardware token to an updated state in response to the received update signal. Performing a first cryptographic check using the updated state of the software program and the updated state of the hardware token with the hardware token. Transmitting the first cryptographic check from the hardware token to the software program and performing a second cryptographic check using the state of the hardware token and the state of the software program with the computing device. Comparing the second cryptographic check to the first cryptographic check with the computing device, and preventing the software program from running on the computing device if the first cryptographic check does not match the second cryptographic check.

Claims (70)

1. A method for preventing unauthorized use of a software program on a computing device comprising:

updating data indicative of a first state of a software program on a computing device as software first state data;

determining the state of the software program based on persistence data;

transmitting by the computing device an update signal to a hardware token coupled to the computing device;

receiving the update signal, updating by the hardware token data stored on the hardware token indicative of a state of the hardware token as hardware token state data in response to the received update signal, the hardware token state data including data from a counter,

wherein in normal operation the hardware token does not allow the hardware token state data stored thereon to be derived or revealed outside of the hardware token; performing a first cryptographic check by the hardware token using the software first state data and the hardware token state data;

storing the first cryptographic check on one of the computing device and the hardware token;

performing a second cryptographic check by the hardware token using the hardware token state data and data indicative of a current state of the software program;

retrieving from the one of the computing device and the hardware token the cryptographic check most recently stored thereon, and

comparing the second cryptographic check to the retrieved cryptographic check; and

preventing the software program from running on the computing device if the retrieved cryptographic check does not match the second cryptographic check.

2. The method of claim 1 , wherein comparing the retrieved cryptographic check to the second cryptographic check is done using one of the hardware token and the computing device.

3. The method of claim 1 , wherein comparing the first retrieved cryptographic check to the second cryptographic check uses a hash function.

4. The method of claim 1 , wherein comparing the retrieved cryptographic check to the second cryptograph check uses a cryptographic algorithm.

5. The method of claim 1 , wherein the persistence data include an expiration date.

6. The method of claim 1 , wherein the persistence data include data from a counter.

7. The method of claim 1 , wherein the persistence data include data from a timer.

8. A method for preventing unauthorized use of a software program on a computing device comprising:

performing a first cryptographic check based on data indicative of a first state of the software program as software first state data, and data indicative of a state of a hardware token as hardware token state data using one of the hardware token and the computing device, the hardware token state data including data from a counter;

storing the first cryptographic check on one of the hardware token and the computing device; performing a second cryptographic check based on the hardware token state data and data indicative of a current state of the software program using one of the hardware token and the computing device;

determining the state of the software program based on persistence data;

retrieving a the most recently stored cryptographic check from the hardware token or the computing device on which the first cryptographic check was stored;

comparing the retrieved cryptographic check to the second cryptographic check using one of the hardware token and the computing device; and

preventing the software program from running on the computing device if the retrieved cryptographic check does not match the second cryptographic check.

9. The method of claim 8 , wherein performing the first cryptographic check uses a hash function.

10. The method of claim 8 , wherein performing the first cryptographic check uses a cryptographic algorithm.

11. The method of claim 8 , wherein performing the first cryptographic check is based on a function stored on the hardware token.

12. The method of claim 8 , wherein comparing the first cryptographic check to the second cryptographic check uses a hash function.

13. The method of claim 8 , wherein the persistence data include an expiration date.

14. The method of claim 8 , wherein the persistence data include data from a counter.

15. The method of claim 8 , wherein the persistence data include data from a timer.

16. A system for preventing unauthorized use of a software program on a computing device, the system comprising:

a hardware token coupleable to the computing device and which, when coupled to the computing device, is operable to:

store data indicative of a state of the hardware token as hardware token state data, the hardware token state data including data from a counter,

receive an update signal from the computing device, and update the stored hardware token state data responsive to the received update signal,

perform a first cryptographic check using the stored hardware token state data and data received from the computing device indicative of a first state of the software program as software first state data,

transmit the first cryptographic check to the computing device coupled to the hardware token; and

receive a verification signal from the computing device, and perform a second cryptographic check using the stored hardware token state data and data received from the computing device indicative of a current state of the software program as software current state data; and

transmit the second cryptographic check to the computing device coupled to the hardware token; and

the computing device, which, when coupled to the hardware token is operable to:

determine the state of the software program based on persistence data;

execute a software program configured to:

have a state on which data indicative of the state of the software program is based,

update the software program state data in response to a predetermined event and transmit the update signal to the hardware token,

receive a result of a comparison of the first cryptographic check and a second cryptographic check, and

cease execution if the result is that the first cryptographic check does not match the second cryptographic check;

receive and store the first cryptographic check; receive the second cryptographic check;

retrieve the stored first cryptographic check and perform a comparison of the first cryptographic check to the second cryptographic check; and

transmit the result of the comparison to the software program.

17. A hardware token coupleable to a computing device having a software program thereon and which, when coupled to the computing device, is operable to:

a memory stores instructions executed by a processor;

store data indicative of a state of the hardware token as hardware token state data, the hardware token state data including data from a counter,

receive an update signal from the computing device, and update the stored hardware token state data responsive to the received update signal;

perform a first cryptographic check using the stored hardware token state data and data received from the computing device indicative of a first state of the software program as software first state data, transmit the first cryptographic check to the computing device coupled to the hardware token; and

receive a verification signal from the computing device, and perform a second cryptographic check using the stored hardware token state data and data received from the computing device indicative of a current state of the software program as software current state data;

determine the state of the software program based on persistence data; and

transmit the second cryptographic check to the computing device.

18. A non-transitory computer-readable storage medium having computer instructions which cause a computing device to:

execute a software program configured to:

have a state on which data indicative of the state of the software program as software program state data is based,

determine the state of the software program based on persistence data;

update the software program state data in response to a predetermined event, and

transmit an update signal to a hardware token, receive a result of a comparison of a first cryptographic check and a second cryptographic check, and

cease execution if the result is that the first cryptographic check does not match the second cryptographic check;

receive data indicative of a state of the hardware token as hardware token state data, the hardware token state data including data from a counter;

obtain data indicative of a current state of the software program;

receive the first cryptographic check;

compute a second cryptographic check based on the current software program state data and the hardware token state data;

perform a comparison of the first cryptographic check to the second cryptographic check; and

transmit a result of the comparison to the software program.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS (FIRST LIEN) Recorded Jan 30, 2015
From: BANK OF AMERICA, N.A.
To: SAFENET, INC.
Reel/Frame 034862/0366 →
RELEASE OF SECURITY INTEREST IN PATENTS (SECOND LIEN) Recorded Jan 30, 2015
From: BANK OF AMERICA, N.A.
To: SAFENET, INC.
Reel/Frame 034862/0394 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Mar 14, 2014
From: SAFENET, INC.
To: BANK OF AMERICA, N.A. AS COLLATERAL AGENT
Reel/Frame 032448/0677 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Mar 13, 2014
From: SAFENET, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 032441/0015 →
FIRST LIEN PATENT SECURITY AGREEMENT RELEASE Recorded Mar 12, 2014
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL AGENT
To: SAFENET, INC.
Reel/Frame 032436/0871 →
SECOND LIEN PATENT SECURITY AGREEMENT RELEASE Recorded Mar 12, 2014
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL AGENT
To: SAFENET, INC.
Reel/Frame 032469/0359 →