IP Library Granted Patent US 8,745,616
Granted Patent B1
US 8,745,616 · App. 13/243,116 · Granted Jun 3, 2014

Systems and methods for providing digital certificates that certify the trustworthiness of digitally signed code

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,745,616
App. No.
13/243,116
Granted
Jun 3, 2014
Kind
B1
Abstract

A computer-implemented method for verifying the trustworthiness of code prior to issuing code-signing certificates may include (1) receiving a request from a software publisher to sign code, the request including a copy of the code and a digital signature that verifies the integrity of the code, (2) prior to signing the code, verifying the trustworthiness of the code based at least in part on an analysis of the copy of the code included within the request, (3) upon verifying the trustworthiness of the code, signing the code by generating a digitally signed trustworthiness certificate for the code that certifies that the code is trustworthy, and then (4) providing the trustworthiness certificate to the software publisher to enable the software publisher to attest that the code is trustworthy. Various additional methods, systems, and encoded computer-readable media are also disclosed.

Claims (77)

1. A computer-implemented method for providing digital certificates that certify the integrity and trustworthiness of digitally signed code, the method comprising:

receiving a request from a software publisher to sign code, the request comprising:

a copy of the code;

a digital signature that verifies the integrity of the code;

prior to signing the code:

verifying the integrity of the code received from the software publisher by validating the digital signature received from the software publisher;

verifying the trustworthiness of the code received from the software publisher at least in part by testing the code received from the software publisher for vulnerabilities;

upon verifying the integrity and trustworthiness of the code, signing the code by generating a single digitally signed trustworthiness certificate for the code that certifies both that the code originates from the software publisher and that the code itself is trustworthy;

after signing the code, storing the code within a database;

providing the trustworthiness certificate to the software publisher to enable the software publisher to attest that the code is trustworthy;

performing periodic reviews of the code stored within the database in order to verify that the code remains trustworthy;

wherein each step of the computer-implemented method is performed by a computing device comprising at least one processor.

2. The method of claim 1 , wherein testing the code received from the software publisher for vulnerabilities comprises at least one of:

scanning the code for malware;

testing the code for at least one of bugs and objectionable behavior.

3. The method of claim 2 , wherein scanning the code for malware comprises automatically scanning the code for malware using computer-security software provided by a plurality of different security-software vendors.

4. The method of claim 2 , wherein testing the code for at least one of bugs and objectionable behavior comprises at least one of:

testing the code using at least one automated test;

receiving the results of at least one manual test performed on the code.

5. The method of claim 1 , wherein validating the digital signature received from the software publisher comprises:

calculating a checksum of the code received from the software publisher;

obtaining an expected checksum by decrypting, using a public cryptographic key associated with the software publisher, the digital signature received from the software publisher;

verifying that the expected checksum matches the calculated checksum.

6. The method of claim 1 , wherein the trustworthiness certificate comprises metadata that indicates that the code is trustworthy.

7. The method of claim 1 , wherein the trustworthiness certificate comprises a unique, code-specific certificate that is valid only for the code received from the software publisher.

8. The method of claim 1 , wherein the trustworthiness certificate includes at least one of:

information that identifies the software publisher;

information that identifies an entity responsible for signing the code;

a checksum of the code;

a digital signature created using a private key.

9. The method of claim 1 , further comprising:

determining, during a periodic review of the code, that the code is no longer trustworthy;

revoking the trustworthiness certificate upon determining that the code is no longer trustworthy.

10. The method of claim 1 , wherein the computing device comprises at least one of:

a computing device of the software publisher;

a remote computing device operated by a code-signing service.

11. A system for providing digital certificates that certify the integrity and trustworthiness of digitally signed code, the system comprising:

a processor;

intake instructions, stored in memory, that, when executed by the processor, cause the processor to receive a request from a software publisher to sign code, the request comprising:

a copy of the code;

a digital signature that verifies the integrity of the code;

verification instructions, stored in memory, that, when executed by the processor, cause the processor to verify, before the code is signed:

the integrity of the code received from the software publisher by validating the digital signature received from the software publisher;

the trustworthiness of the code received from the software publisher at least in part by testing the code received from the software publisher for vulnerabilities;

signing instructions, stored in memory, that, when executed by the processor, cause the processor to sign the code after the integrity and trustworthiness of the code have been verified by generating a single digitally signed trustworthiness certificate for the code that certifies both that the code originates from the software publisher and that the code itself is trustworthy;

delivery instructions, stored in memory, that, when executed by the processor, cause the processor to provide the trustworthiness certificate to the software publisher to enable the software publisher to attest that the code is trustworthy;

wherein the verification instructions, when executed by the processor, further cause the processor to store the code within a database after the code has been signed and perform periodic reviews of the code stored within the database in order to verify that the code remains trustworthy.

12. The system of claim 11 , wherein the verification instructions, when executed by the processor, further cause the processor to test the code received from the software publisher for vulnerabilities by at least one of:

scanning the code for malware;

testing the code for at least one of bugs and objectionable behavior.

13. The system of claim 11 , wherein the verification instructions, when executed by the processor, further cause the processor to verify the trustworthiness of the code received from the software publisher in part by:

requesting that a third-party testing entity verify the trustworthiness of the code;

receiving an indication from the third-party testing entity that the code is trustworthy.

14. The system of claim 11 , wherein the verification instructions, when executed by the processor, further cause the processor to validate the digital signature received from the software publisher by:

calculating a checksum of the code received from the software publisher;

obtaining an expected checksum by decrypting, using a public cryptographic key associated with the software publisher, the digital signature received from the software publisher;

verifying that the expected checksum matches the calculated checksum.

15. The system of claim 11 , wherein the trustworthiness certificate comprises a unique, code-specific certificate that is valid only for the code received from the software publisher.

16. The system of claim 11 , wherein the verification instructions, when executed by the processor, further cause the processor to determine, during a periodic review of the code, that the code is no longer trustworthy, and the system further comprises revocation instructions, stored in memory, that, when executed by the processor, cause the processor to revoke the trustworthiness certificate since the code is no longer trustworthy.

17. The system of claim 11 , wherein the trustworthiness certificate comprises metadata that indicates that the code is trustworthy.

18. A non-transitory computer-readable-storage medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

receive a request from a software publisher to sign code, the request comprising:

a copy of the code;

a digital signature that verifies the integrity of the code;

prior to signing the code:

verify the integrity of the code received from the software publisher by validating the digital signature received from the software publisher;

verify the trustworthiness of the code received from the software publisher at least in part by testing the code received from the software publisher for vulnerabilities;

upon verifying the integrity and trustworthiness of the code, sign the code by generating a single digitally signed trustworthiness certificate for the code that certifies both that the code originates from the software publisher and that the code itself is trustworthy;

after signing the code, store the code within a database;

provide the trustworthiness certificate to the software publisher to enable the software publisher to attest that the code is trustworthy;

perform periodic reviews of the code stored within the database in order to verify that the code remains trustworthy.

19. The non-transitory computer-readable-storage medium of claim 18 , wherein the one or more computer-executable instructions cause the computing device to test the code received from the software publisher for vulnerabilities by at least one of:

scanning the code for malware;

testing the code for at least one of bugs and objectionable behavior.

20. The non-transitory computer-readable-storage medium of claim 18 , wherein the one or more computer-executable instructions cause the computing device to verify the trustworthiness of the code received from the software publisher in part by:

requesting that a third-party testing entity verify the trustworthiness of the code;

receiving an indication from the third-party testing entity that the code is trustworthy.

Assignments (11)
ASSIGNMENT OF SECURITY INTERESTS IN INTELLECTUAL PROPERTY (FIRST LIEN), RECORDED ON OCTOBER 16, 2019 AT REEL 050741 FRAME 0918 Recorded Sep 24, 2025
From: UBS AG, STAMFORD BRANCH, AS SUCCESSOR TO CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING AGENT
To: HPS INVESTMENT PARTNERS, LLC, AS SUCCESSOR AGENT
Reel/Frame 072947/0157 →
SECOND LIEN NOTICE OF SUCCESSION OF AGENCY Recorded Jul 30, 2025
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS PRIOR AGENT
To: UBS AG, STAMFORD BRANCH, AS SUCCESSOR AGENT
Reel/Frame 072300/0068 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 19, 2021
From: JEFFERIES FINANCE LLC, AS EXISTING AGENT
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS SUCCESSOR AGENT
Reel/Frame 055345/0042 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Oct 17, 2019
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: DIGICERT, INC.; GEOTRUST, LLC
Reel/Frame 050746/0973 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Oct 17, 2019
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: DIGICERT, INC.; GEOTRUST, LLC
Reel/Frame 050747/0001 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 16, 2019
From: DIGICERT, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 050741/0899 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 16, 2019
From: DIGICERT, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 050741/0918 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 3, 2017
From: DIGICERT, INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 044681/0556 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 3, 2017
From: DIGICERT, INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 044710/0529 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2017
From: SYMANTEC CORPORATION
To: DIGICERT, INC.
Reel/Frame 044344/0650 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2011
From: DEACON, WILLIAM
To: SYMANTEC CORPORATION
Reel/Frame 026961/0039 →