US7891008B2
Expired / Lapsed
US
⏱️ 0.0 years remaining
Profile protection
Assignee: Microsoft Technology Licensing LLC
•
Filing: 2005-02-17
•
Granted: 2011-02-15
•
Expires: 2025-02-17
Abstract
Abstract Tampering with pieces of software is inhibited. Profiles are stored in a central hierarchical database and such profiles are protected from tampering. The obfuscation of a software image so as to becloud the comprehension of hackers in reverse engineering pieces of software comprising the software image is provided. A process of verifying whether the pieces of software together constitute a software package that requires protection from tampering is also provided.
Inventors
- 👤 Erik Fortune
- 👤 Wei Wu
- 👤 Julie D Bennett
- 👤 Mohammed El-Gammal
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-04 05:43
CPC Classifications
G; G06; G06F; G06F21/00; G06F21/10; G06F21/12; G06F21/121; G06F21/14; G06F21/50; G06F21/55; G06F21/57; G06F21/60; G06F21/64; G06F8/00; G06F8/60; G06F8/61; H; H04; H04L; H04L9/00; H04L9/08; H04L9/0816; H04L9/0819; H04L9/083; H04L9/0833; H04L9/0836; H04L9/32; H04L9/3236; H04L9/3247; H04L2209/00; H04L2209/16
Claims Analysis
Total Claims: 21
Claim 1
Independent Claim
326 words
A computer-implemented method for protecting interoperation between pieces of software running on a computing device having a plurality of blobs of data stored in a central hierarchical database, each blob comprising profile data associated with a software component, a signature and a verifier, the computer-implemented method comprising: by a log-on module running on the computing device, initiating access to profile data stored in a blob of the plurality of blobs in the central hierarchical database of the computing device, the log-on module having a public calling key and a private calling key, the log-on module sending a random salt value to second piece of software running on the computing device and having a private library key of a public library key/private library key pair, the profile data being encrypted with the private calling key, the signature of the blob being a checksum of at least the profile data signed with the public library key and the verifier of the blob being a checksum of at least the profile data signed with the public calling key; with the second piece of software: finding the blob in the central hierarchical database of the computing device, the finding comprising decrypting the blob using the private library key, computing a first computed checksum based at least in part on the profile data and the random salt value, and sending the first computed checksum and at least a portion of the blob to the log-on module; and with the log-on module: computing a second computed checksum based at least in part on the random salt value and information provided by the second software component, comparing the first computed checksum with the second computed checksum and taking security error measures when the first and second computed checksums do not match, wherein: the second piece of software is an obfuscated piece of software, and the private library key is private to the second piece of software and is inaccessible to the log-on module.
Claim 2
Dependent Claim
326 words
A computer-implemented method for protecting interoperation between pieces of software running on a computing device having a plurality of blobs of data stored in a central hierarchical database, each blob comprising profile data associated with a software component, a signature and a verifier, the computer-implemented method comprising: by a log-on module running on the computing device, initiating access to profile data stored in a blob of the plurality of blobs in the central hierarchical database of the computing device, the log-on module having a public calling key and a private calling key, the log-on module sending a random salt value to second piece of software running on the computing device and having a private library key of a public library key/private library key pair, the profile data being encrypted with the private calling key, the signature of the blob being a checksum of at least the profile data signed with the public library key and the verifier of the blob being a checksum of at least the profile data signed with the public calling key; with the second piece of software: finding the blob in the central hierarchical database of the computing device, the finding comprising decrypting the blob using the private library key, computing a first computed checksum based at least in part on the profile data and the random salt value, and sending the first computed checksum and at least a portion of the blob to the log-on module; and with the log-on module: computing a second computed checksum based at least in part on the random salt value and information provided by the second software component, comparing the first computed checksum with the second computed checksum and taking security error measures when the first and second computed checksums do not match, wherein: the second piece of software is an obfuscated piece of software, and the private library key is private to the second piece of software and is inaccessible to the log-on module.
Claim 3
Dependent Claim
40 words
The computer-implemented method of claim 1 , wherein the first computed checksum is a checksum of a collection of information that includes an identifier of the profile, profile data, a result of finding the profile, and the random salt value.
Claim 4
Dependent Claim
62 words
The computer-implemented method of claim 2 , wherein the second piece of software further sends to the log-on module the result of finding the profile and a verifier blob of the profile signed by the public calling key and encrypted with the private calling key, wherein the verifier blob of the profile comprises a verifier checksum of the identifier of the profile.
Claim 5
Dependent Claim
88 words
The computer-implemented method of claim 3 , further comprising after receiving the result of finding the profile, the verifier blob, and the first checksum, the log-on module decrypting the verifier to obtain a verifier checksum using the private calling key and verifying the signature of the verifier checksum by using the public calling key, the log-on module computing the second checksum from a collection of information that includes the verifier checksum of the identifier of the profile, the result of finding the profile, and the random salt value.
Claim 6
Dependent Claim
231 words
A computer-readable medium having executable instructions stored thereon for implementing a computer-implemented method for protection interoperation between pieces of software, the computer-implemented method comprising: initiating access to a profile stored in a central hierarchical database by a first piece of software, the initiating comprising the first piece of software sending a random salt value to a second piece of software; after receiving the random salt value by the second piece of software, the second piece of software having a private library key of a public library key/private library key pair, and the second piece of software: finding the profile in the central hierarchical database, the finding comprising decrypting the profile using the private library key, verifying, based on the profile, that software executing on the computing device has not been tampered with, computing a first checksum based at least in part on the profile, the random salt value and a result of operation of the second piece of software, and sending the first checksum and at least a portion of the profile to the first piece of software; after receiving the first checksum and the at least a portion of the profile by the first piece of software, computing a second checksum; comparing the first checksum with the second checksum; and concluding that tampering has occurred and taking security error measures when the first checksum does not match the second checksum.
Claim 7
Dependent Claim
231 words
A computer-readable medium having executable instructions stored thereon for implementing a computer-implemented method for protection interoperation between pieces of software, the computer-implemented method comprising: initiating access to a profile stored in a central hierarchical database by a first piece of software, the initiating comprising the first piece of software sending a random salt value to a second piece of software; after receiving the random salt value by the second piece of software, the second piece of software having a private library key of a public library key/private library key pair, and the second piece of software: finding the profile in the central hierarchical database, the finding comprising decrypting the profile using the private library key, verifying, based on the profile, that software executing on the computing device has not been tampered with, computing a first checksum based at least in part on the profile, the random salt value and a result of operation of the second piece of software, and sending the first checksum and at least a portion of the profile to the first piece of software; after receiving the first checksum and the at least a portion of the profile by the first piece of software, computing a second checksum; comparing the first checksum with the second checksum; and concluding that tampering has occurred and taking security error measures when the first checksum does not match the second checksum.
Claim 8
Dependent Claim
43 words
The computer-readable medium of claim 5 , wherein the second piece of software computes the first checksum from a first collection of information that includes an identifier of the profile, profile data, a result of finding the profile, and the random salt value.
Claim 9
Dependent Claim
73 words
The computer-readable medium of claim 6 , wherein the second piece of software sends to the first piece of software the result of finding the profile, a verifier blob of the profile signed by the public calling key and encrypted with the private calling key, and the first checksum computed by the second piece of software, wherein the verifier blob of the profile comprises a verifier checksum of the identifier of the profile.
Claim 10
Dependent Claim
83 words
The computer-readable medium of claim 7 , wherein after receiving the result of the profile, the verifier blob, and the first checksum, the first piece of software decrypts the verifier blob to obtain the verifier checksum using the private calling key, verifies the signature by using the public calling key, and computes the second checksum from a second collection of information that includes the verifier checksum of the identifier of the profile, the result of finding the profile, and the random salt value.
Claim 11
Independent Claim
260 words
A system for protecting interoperation between pieces of software running on a computing device, the system comprising: a central hierarchical database for storing a plurality of profiles, the plurality of profiles each comprising a plurality of components and placement information indicating location of each of the components within the profile such that the profiles have differing arrangements of their respective contents to inhibit tampering; means for initiating access to a profile of hardware and/or language information stored in the central hierarchical database by a log-on module running on the computing device having a public calling key and a private calling key, the log-on module receiving and validating a user name and password and sending information including a random salt value; after receiving the information by a second piece of software running on the computing device and having a private library key of a public library key/private library key pair, the second piece of software executing a means for: finding the profile in the central hierarchical database, decrypting the profile using the private library key, determining whether software associated with the profile has been tampered with, computing a first checksum of a collection of information that includes at least a first portion of the profile, a result of operation of the second piece of software and the random salt value, and sending the first checksum and at least a second portion of the profile to the log-on module, wherein the means for finding the profile accesses the placement information to determine the location within the profile of the collection of information.
Claim 12
Independent Claim
260 words
A system for protecting interoperation between pieces of software running on a computing device, the system comprising: a central hierarchical database for storing a plurality of profiles, the plurality of profiles each comprising a plurality of components and placement information indicating location of each of the components within the profile such that the profiles have differing arrangements of their respective contents to inhibit tampering; means for initiating access to a profile of hardware and/or language information stored in the central hierarchical database by a log-on module running on the computing device having a public calling key and a private calling key, the log-on module receiving and validating a user name and password and sending information including a random salt value; after receiving the information by a second piece of software running on the computing device and having a private library key of a public library key/private library key pair, the second piece of software executing a means for: finding the profile in the central hierarchical database, decrypting the profile using the private library key, determining whether software associated with the profile has been tampered with, computing a first checksum of a collection of information that includes at least a first portion of the profile, a result of operation of the second piece of software and the random salt value, and sending the first checksum and at least a second portion of the profile to the log-on module, wherein the means for finding the profile accesses the placement information to determine the location within the profile of the collection of information.
Claim 13
Dependent Claim
49 words
The system of claim 9 , wherein the collection of information includes an identifier of the profile, profile data, a result of finding the profile, and the random salt value, the identifier of the profile and the profile data being the at least a first portion of the profile.
Claim 14
Dependent Claim
66 words
The system of claim 10 , wherein the second piece of software uses a means for sending the result of finding the profile, a verifier blob of the profile signed by the public calling key and encrypted with the private calling key, and the first checksum computed by the second piece of software, the verifier blob being the at least a second portion of the profile.
Claim 15
Dependent Claim
80 words
The system of claim 11 , further comprising after receiving the result of the profile, the verifier blob, and the first checksum, the log-on module decrypts the verifier blob using the private calling key and executing means for verifying the signature by using the public calling key, the log-on module computing a second checksum of a collection of information that includes an identifier of the profile, the profile data, the result of finding the profile, and the random salt value.
Claim 16
Dependent Claim
51 words
The computer-implemented method of claim 1 , wherein: the second piece of software comprises an obfuscated protection dynamically-linked library, and the profile comprises profile data and a signature containing a checksum of the profile data, the signature being digitally signed with the public library key of the public/private library key pair.
Claim 17
Dependent Claim
19 words
The computer-implemented method of claim 2 , wherein the central hierarchical database is a registry of the computing device.
Claim 18
Dependent Claim
28 words
The computer-implemented method of claim 2 , wherein the profile data indicates a plurality of pieces of computing machinery that an operating system of the computing device supports.
Claim 19
Dependent Claim
26 words
The computer-implemented method of claim 2 , wherein the profile data describes a language in which an operating system of the computing device supports presenting information.
Claim 20
Dependent Claim
18 words
The computer-implemented method of claim 1 , wherein taking security error measures comprises shutting down the computing device.
Claim 21
Dependent Claim
54 words
The computer-implemented method of claim 1 , wherein storing the plurality of profiles with differing arrangements of their respective contents comprises: storing the profiles with differing arrangements of profile data, verifier blobs, and signatures within the profiles; and storing headers indicating an organization of the respective contents of each of the plurality of profiles.
References Cited (Backward Citations)
US5748739A
Cited
US6236971B1
Cited
US5915019A
Cited
US6006328A
Cited
US5802368A
Cited
US5794232A
Cited
US5845129A
Cited
WO1999001815A1
Cited
US20040107368A1
Cited
US20020002678A1
Cited
US20020062451A1
Cited
US20010027383A1
Cited
US6829593B1
Cited
US6421768B1
Cited
US7146505B1
Cited
US6731756B1
Cited
US6978303B1
Cited
US6898707B1
Cited
US20030014315A1
Cited
US7181017B1
Cited
US7000100B2
Cited
WO2003007571A1
Cited
US7424615B1
Cited
US20030097577A1
Cited
US20030208562A1
Cited
US20040054952A1
Cited
US7318235B2
Cited
US20040158708A1
Cited
US20040260953A1
Cited
US7281271B1
Cited
US20050096016A1
Cited
US20050193188A1
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2014-02-14 | 2014-08-16 | 2015-02-15 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2018-02-14 | 2018-08-16 | 2019-02-15 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2022-02-14 | 2022-08-16 | 2023-02-15 | $7700.00 | Window Closed / Lapsed |