IP Library Granted Patent US 7,549,147
Granted Patent B2
US 7,549,147 · App. 10/414,314 · Granted Jun 16, 2009

Security framework for protecting rights in computer software

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,549,147
App. No.
10/414,314
Granted
Jun 16, 2009
Kind
B2
Abstract

A method for protecting software is provided, where source code for the software has a first directive marking an encryption beginning point and a second directive marking an encryption end point. The method contains the steps of: processing the source code to identify a block of code between the first and second directives; compiling the source code to produce a binary file; generating a valid key and a random string; encrypting the random string with the key to obtain a first encrypted value; encrypting a portion of the binary file corresponding to the block of code with the valid key to obtain a second encrypted value; and replacing the portion of the binary file corresponding to the block of code with the second encrypted value and code that can decrypt the second encrypted value during execution of the software.

Claims (25)

1. A method for protecting software, source code for the software having a first directive marking an encryption beginning point and a second directive marking an encryption end point, the method comprising the steps of:

processing the source code to identify a block of code between the first and second directives;

compiling the source code to produce a binary file;

generating a random string and establishing a mechanism that allows the software to obtain a valid key from a data flow expected to be received by the software in a manner that the valid key is neither stored within the software, nor located in a remote storage, but instead is obtained from the data flow,

wherein the step of establishing the mechanism further comprises the steps of:

encrypting the random string with the valid key to obtain a first encrypted value;

encrypting a portion of the binary file corresponding to the block of code with the valid key to obtain a second encrypted value; and

replacing the portion of the binary file corresponding to the block of code with the second encrypted value and code that can decrypt the second encrypted value during execution of the software,

accepting a binary string believed to be the valid key;

encrypting the random string with the binary string believed to be the valid key to obtain a third encrypted value;

comparing the third encrypted value to the first encrypted value; and

decrypting the second encrypted value with the binary string believed to be the valid key if the first encrypted value equals the third encrypted value.

2. The method of claim 1 , further comprising the step of storing line number information for the block, wherein the step of encrypting the portion of the binary file is based on the stored line number information.

3. The method of claim 1 , further comprising the step of decrypting the encrypted portion of the binary file during execution of the binary file based on the valid key obtained during execution of the binary file.

4. The method of claim 3 , further comprising the steps of:

accepting a trigger value;

generating a hash of the trigger value;

comparing the hash of the trigger value to a hash of the valid key; and

outputting the valid key if the hash of the trigger value equals the hash of the valid key.

5. The method of claim 3 , further comprising the steps of:

accepting a sequence of trigger values;

encrypting the random string using the sequence of trigger values as keys to obtain a first sequence of encrypted values;

comparing the first sequence of encrypted values to a second sequence of encrypted values obtained by encrypting the random string with a sequence of secret sub-keys; and

outputting a secret key if each member of the first sequence of encrypted values equals each respective member of the second sequence of encrypted values,

wherein the secret key is equal to an exclusive OR of the sequence of secret sub-keys.

Assignments (16)
TERMINATION AND RELEASE OF FIRST LIEN INTELLECTUAL PROPERTY SECURITY INTEREST RECORDED AT REEL/FRAME 51059/0861 Recorded Nov 24, 2025
From: JEFFERIES FINANCE LLC
To: FORTRA, LLC (FORMERLY KNOWN AS HELP/SYSTEMS, LLC)
Reel/Frame 073783/0406 →
TERMINATION AND RELEASE OF SECOND LIEN INTELLECTUAL PROPERTY SECURITY INTEREST RECORDED AT REEL/FRAME 51059/0911 Recorded Nov 21, 2025
From: ACQUIOM AGENCY SERV ICES LLC
To: FORTRA, LLC (F/K/A HELP/SYSTEMS, LLC)
Reel/Frame 073662/0442 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Aug 14, 2025
From: GOLUB CAPITAL MARKETS LLC (AS EXISTING AGENT)
To: ACQUIOM AGENCY SERVICES LLC (AS SUCCESSOR COLLATERAL AGENT)
Reel/Frame 072471/0665 →
RELEASE OF SECURITY INTEREST Recorded Feb 3, 2025
From: PNC BANK. NATIONAL ASSOCIATION
To: COURION CORPORATION; CORE SECURITY TECHNOLOGIES, INC.; CORE SDI, INC.; COURIONLIVE CORPORATION; COURION HOLDINGS, INC.; COURION INTERMEDIATE HOLDINGS, INC.
Reel/Frame 070086/0008 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 20, 2021
From: JEFFERIES FINANCE LLC, AS EXISTING AGENT
To: GOLUB CAPITAL MARKETS LLC, AS SUCCESSOR AGENT
Reel/Frame 056322/0628 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Nov 19, 2019
From: HELP/SYSTEMS, LLC
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 051059/0911 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Nov 19, 2019
From: HELP/SYSTEMS, LLC
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 051059/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2019
From: CORE SDI, INC.
To: HELP/SYSTEMS, LLC
Reel/Frame 048381/0497 →
RELEASE OF SECURITY INTEREST Recorded Feb 8, 2019
From: PNC BANK, NATIONAL ASSOCIATION
To: COURION INTERMEDIATE HOLDINGS, INC.; CORE SECURITY SDI CORPORATION; CORE SECURITY TECHNOLOGIES, INC.; CORE SDI, INC.; CORE SECURITY LIVE CORPORATION; CORE SECURITY HOLDINGS, INC.; DAMABLLA, INC.
Reel/Frame 048281/0835 →
RELEASE OF SECURITY INTEREST Recorded Jan 4, 2018
From: SARATOGA INVESTMENT CORP. SBIC LP
To: COURION CORPORATION; CORE SDI, INC.; CORE SECURITY TECHNOLOGIES, INC.
Reel/Frame 044535/0830 →
PATENT SECURITY AGREEMENT Recorded Oct 10, 2016
From: COURION CORPORATION; CORE SECURITY TECHNOLOGIES, INC.; CORE SDI, INC.
To: SARATOGA INVESTMENT CORP. SBIC LP, AS ADMINISTRATIVE AGENT
Reel/Frame 040298/0816 →
SECURITY INTEREST Recorded Dec 29, 2015
From: COURION CORPORATION; CORE SECURITY TECHNOLOGIES, INC.; CORE SDI, INC.; COURIONLIVE CORPORATION; COURION HOLDINGS, INC.; COURION INTERMEDIATE HOLDINGS, INC.
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 037374/0301 →
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2015
From: MULTIPLIER CAPITAL, L.P.
To: CORE SECURITY TECHNOLOGIES, INC.; CORE SDI, INC.
Reel/Frame 037372/0488 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY DATA PREVIOUSLY RECORDED ON REEL 015627 FRAME 0125. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR'S INTEREST. Recorded Dec 22, 2015
From: FUTORANSKY, ARIEL; SARRAUTE YAMADA, CARLOS EMILIO; BENDERSKY, DIEGO ARIEL; NOTARFRANCESCO, LUCIANO; WAISSBEIN, ARIEL
To: CORE SDI, INC.
Reel/Frame 037358/0534 →
SECURITY AGREEMENT Recorded Aug 23, 2013
From: CORE SDI, INC.; CORE SECURITY TECHNOLOGIES, INC.
To: MULTIPLIER CAPITAL, LP
Reel/Frame 031077/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2005
From: FUTORANSKY, ARIEL; YAMADA, CARLOS EMILIO SARRAUTE; BENDERSKY, DIEGO ARIEL; NOTARFRANCESCO, LUCIANO; WAISSBEIN, ARIEL
To: CORE SDI, INCOROORATED
Reel/Frame 015627/0125 →