IP Library Granted Patent US 7,155,743
Granted Patent B2
US 7,155,743 · App. 10/202,550 · Granted Dec 26, 2006

Method and system for controlling use of a dynamically linked software library

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 7,155,743
App. No.
10/202,550
Granted
Dec 26, 2006
Kind
B2
Abstract

A method for authenticating a software library, including inserting an encrypted checksum into a software library, and in response to loading the software library calculating a checksum of the software library, requesting the encrypted checksum from the library, decrypting the encrypted checksum, and checking whether or not the decrypted checksum agrees with the calculated checksum. A system is also described and claimed.

Claims (86)

1. A method for authenticating a software library by an application that loads the software library, comprising:

inserting a characteristic sequence of bits into a software library;

inserting an encrypted checksum into the software library, at a location adjacent to the characteristic sequence; and

in response to an application loading the software library:

calculating a checksum of the software library, including:

locating the characteristic sequence of bits within the software library; and

skipping over a portion of the software library at a location adjacent to the characteristic sequence;

requesting an encrypted checksum from the software library;

decrypting the encrypted checksum; and

checking whether or not the decrypted checksum agrees with the calculated checksum.

2. The method of claim 1 wherein the application loading the software library performs normally if the decrypted checksum agrees with the calculated checksum, and aborts if the decrypted checksum does not agree with the calculated checksum.

3. The method of claim 1 wherein the encrypted checksum is encrypted using a private key.

4. The method of claim 1 wherein said decrypting uses a public key.

5. The method of claim 1 wherein said inserting an encrypted checksum comprises inserting the encrypted checksum at the location within the software library following the characteristic sequence of bits.

6. The method of claim 1 wherein said inserting an encrypted checksum comprises inserting the encrypted checksum at the location within the software library preceding the characteristic sequence of bits.

7. The method of claim 1 wherein said inserting a characteristic sequence of bits comprises inserting an additional characteristic sequence of bits into the software library, and wherein said inserting an encrypted checksum comprises inserting the encrypted checksum at the locations between the characteristic sequence and the additional characteristic sequence.

8. The method of claim 1 wherein the software library is a dynamically linked library (DLL).

9. The method of claim 8 wherein the DLL is used to decode protected electronic content.

10. The method of claim 1 wherein said calculating, requesting, decrypting and checking are performed by the application loading the software library.

11. The method of claim 10 wherein the application loading the software library is a document viewer.

12. The method of claim 10 wherein the application loading the software library is a web browser.

13. The method of claim 10 wherein the application loading the software library is a mail client.

14. The method of claim 10 wherein the application loading the software library is an instant messenger.

15. A method for controlling use of a software library, comprising:

inserting a characteristic sequence of bits into an application that calls a software library;

inserting an encrypted checksum into the application at a location adjacent to the characteristic sequence; and

in response to the software library being called for loading by an application;

identifying the application that is calling the software library, by examining a system stack;

calculating a checksum of the identified caller applications, including:

locating the characteristic sequence of bits within the caller application; and

skipping over a portion of the caller application at a location adjacent to the characteristic sequence when calculating the checksum;

retrieving an encrypted checksum from the caller application;

decrypting the encrypted checksum; and

checking whether or not the decrypted checksum agrees with the calculated checksum.

16. The method of claim 15 wherein the software library loads itself if the decrypted checksum agrees with the calculated checksum, and refuses to load itself if the decrypted checksum does not agree with the calculated checksum.

17. The method of claim 15 wherein the encrypted checksum is encrypted using a private key.

18. The method of claim 15 wherein said decrypting uses a public key.

19. The method of claim 15 wherein said inserting an encrypted checksum comprises inserting the encrypted checksum at the location within the caller application following the characteristic sequence of bits.

20. The method of claim 15 wherein said inserting an encrypted checksum comprises inserting the encrypted checksum at the location within the software library preceding the characteristic sequence of bits.

21. The method of claim 15 wherein said inserting a characteristic sequence of bits comprises inserting an additional characteristic sequence of bits into the application, and wherein said inserting an encrypted checksum comprises inserting the encrypted checksum at the locations between the characteristic sequence and the additional characteristic sequence.

22. The method of claim 15 wherein the software library is a dynamically linked library (DLL).

23. The method of claim 22 wherein the DLL is used to decode protected electronic content.

24. The method of claim 15 wherein said calculating, retrieving, decrypting and checking are performed by the software library.

25. The method of claim 15 wherein the caller application is a document viewer.

26. The method of claim 15 wherein the caller application is a web browser.

27. The method of claim 15 wherein the caller application is a mail client.

28. The method of claim 15 wherein the caller application is an instant messenger.

29. A system for authenticating a software library by an application that loads the software library, comprising:

a data processor for inserting a characteristic sequence of bits into a software library, and for inserting an encrypted checksum into the software library at a location adjacent to the characteristic sequence;

a checksum calculator for calculating a checksum of the software library, but skipping over a portion of the software library at a location adjacent to the characteristic sequence when calculating the checksum;

an interface for obtaining an encrypted checksum from the software library upon request;

a decoder for decrypting the encrypted checksum; and

a comparator for determining whether or not the decrypted checksum agrees with the calculated checksum.

30. The system of claim 29 wherein an application loading the software library performs normally if the decrypted checksum agrees with the calculated checksum, and aborts if the decrypted checksum does not agree with the calculated checksum.

31. The system of claim 29 wherein the encrypted checksum is encrypted using a private key.

32. The system of claim 29 wherein said decoder uses a public key.

33. The system of claim 29 wherein said data processor inserts the encrypted checksum at the location within the software library following the characteristic sequence of bits.

34. The system of claim 29 wherein said data processor inserts the encrypted checksum at the location within the software library preceding the characteristic sequence of bits.

35. The system of claim 29 wherein said data processor inserts an additional characteristic sequence of bits into the software library, and inserts the encrypted checksum at the locations between the characteristic sequence and the additional characteristic sequence.

36. The system of claim 29 wherein the software library is a dynamically linked library (DLL).

37. The system of claim 36 wherein the DLL is used to decode protected electronic content.

38. The system of claim 29 further comprising a caller application including said checksum calculator, decoder and comparator.

39. The system of claim 38 wherein the caller application is a document viewer.

40. The system of claim 38 wherein the caller application is a web browser.

41. The system of claim 38 wherein the caller application is a mail client.

42. The system of claim 38 wherein the caller application is an instant messenger.

43. A system for controlling use of a software library, comprising:

a data processor for inserting a characteristic sequence of bits into an application that calls a software library, and for inserting an encrypted checksum into the application at a location adjacent to the characteristic sequence;

a system processor for identifying an application that is calling the software library, by examining a system stack;

an interface for obtaining an encrypted checksum from the caller application identified by said system processor;

a decoder for decrypting the encrypted checksum;

a checksum calculator for calculating a checksum of the caller application, but skipping over a portion of the application at a location adjacent to the characteristic sequence when calculating the checksum; and

a comparator for determining whether or not the decrypted checksum agrees with the calculated checksum.

44. The system of claim 43 further comprising a library loader for loading the software library if the decrypted checksum agrees with the calculated checksum, and for refusing to load the software library if the decrypted checksum does not agree with the calculated checksum.

45. The system of claim 43 wherein the encrypted checksum is encrypted using a private key.

46. The system of claim 43 wherein said decoder uses a public key.

47. The system of claim 43 wherein said data processor inserts the encrypted checksum at the location within the caller application following the characteristic sequence of bits.

48. The system of claim 43 wherein said data processor inserts the encrypted checksum at the location within the caller application preceding the characteristic sequence of bits.

49. The system of claim 43 wherein said data processor inserts an additional characteristic sequence of bits into the caller application, and inserts the encrypted checksum at the locations between the characteristic sequence and the additional characteristic sequence.

50. The system of claim 43 wherein the software library is a dynamically linked library (DLL).

51. The system of claim 50 wherein the DLL is used to decode protected electronic content.

52. The system of claim 43 wherein said checksum calculator, decoder and comparator are included within the software library.

53. The system of claim 43 wherein the caller application is a document viewer.

54. The system of claim 43 wherein the caller application is a web browser.

55. The system of claim 43 wherein the caller application is a mail client.

56. The system of claim 43 wherein the caller application is an instant messenger.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2020
From: INTELLECTUAL VENTURES ASSETS 150 LLC
To: KIOBA PROCESSING, LLC
Reel/Frame 051463/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 6, 2019
From: GULA CONSULTING LIMITED LIABILITY COMPANY
To: INTELLECTUAL VENTURES ASSETS 150 LLC
Reel/Frame 050924/0979 →
MERGER Recorded Jan 20, 2016
From: ALEARO PROPERTIES LIMITED LIABILITY COMPANY
To: GULA CONSULTING LIMITED LIABILITY COMPANY
Reel/Frame 037539/0253 →
CHANGE OF NAME Recorded Oct 4, 2011
From: FINJAN, INC.
To: FI DELAWARE INC.
Reel/Frame 027012/0458 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2011
From: FI DELAWARE INC.
To: ALEARO PROPERTIES LIMITED LIABILITY COMPANY
Reel/Frame 027010/0878 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2009
From: FINJAN SOFTWARE, LTD.
To: FINJAN, INC.
Reel/Frame 023556/0853 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2003
From: ALCHEMEDIA LTD.
To: FINJAN SOFTWARE, LTD.
Reel/Frame 014345/0946 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2002
From: GOODMAN, DANIEL L.; LEIB, DAVID
To: ALCHEMEDIA LTD.
Reel/Frame 013426/0252 →