24
(19) United States US 2004.0143746A1 (12) Patent Application Publication (10) Pub. No.: US 2004/0143746A1 Ligeti et al. (43) Pub. Date: Jul. 22, 2004 (54) SOFTWARE LICENSE COMPLIANCE SYSTEMAND METHOD (76) Inventors: Jean-Alfred Ligeti, Whistler (CA); Paul Ligeti, Beaconsfield (CA); Gilles Surprenant, Ville St-Laurent (CA); Claude Brisson, Beaconsfield (CA) Correspondence Address: BULL HOUSSER & TUPPER PO BOX 11130 3000 ROYAL CENTER 1055 WEST GEORGIA STREET VANCOUVER, BC V6E 3R3 (CA) (21) Appl. No.: 10/345,263 (22) Filed: Jan. 16, 2003 Publication Classification (51) Int. Cl. .................................................... H04L 9/00 (52) U.S. Cl. .............................................................. 713/185 is Activation Code> found in {Secture Serfer Database? (16) No (17) <Rejection Counter is incremented by 1 in IP Address database. If <Rejection limit) has been reached set crejection lock out on and timestamp, (29) aAlert Mode> asSoftware does not function cyr fewers to Demo mode. (30) (57) ABSTRACT A Software license compliance System and method limits multiple access to a Software program. License compliance Software is associated with the Software program which Selectively prevents access to that Software program. Each time a user accesses the Software program the license compliance Software accesses a remotely located database by means of a computer network or other connection to obtain a current unique validation code unique to that Specific copy of the Software program. If the code received from the database matches a current unique validation code Stored in association with the Software license compliance Software on the user's computer the license compliance Software permits the user to access and use the Software program. A new unique validation code is generated and Stored in the remotely located database as well in association with the license compliance Software which replaces the current unique validation code which no longer functions to provide user access to the Software program. is there a sWalidation Codex in scSecure Sewer Databases record? (21) New salidation Code> is created in new signed gClient data Module> and <Secure Server databases. 25) <Encrypted> <Authentication Code> is sent from <Secre Servers to <Software) wia (Client interface Module (26 Does the -Authentitatic codex match the one created by the wSoftware- mamm - Display x <Rejection Counter) is scAlertodes incremented by 1 in P entode Address databaself star <Rejection limit has function or been eached set revets to crejection lock-out Demo mode. on and timestamp (19) Go to Re Activatio Process. (23) Yes 2. Activatius Sea 2. (32) Licease Atiyata, Please vic your passassi and errai-address option: cSoftwares is permitted to function. (33)

US 2004.0143746A1 (19) United States (12) Patent ... Ligeti, Beaconsfield (CA); Gilles Surprenant, Ville St-Laurent (CA); Claude Brisson, Beaconsfield (CA) Correspondence Address:

Embed Size (px)

Citation preview

(19) United States US 2004.0143746A1

(12) Patent Application Publication (10) Pub. No.: US 2004/0143746A1 Ligeti et al. (43) Pub. Date: Jul. 22, 2004

(54) SOFTWARE LICENSE COMPLIANCE SYSTEMAND METHOD

(76) Inventors: Jean-Alfred Ligeti, Whistler (CA); Paul Ligeti, Beaconsfield (CA); Gilles Surprenant, Ville St-Laurent (CA); Claude Brisson, Beaconsfield (CA)

Correspondence Address: BULL HOUSSER & TUPPER PO BOX 11130 3000 ROYAL CENTER 1055 WEST GEORGIA STREET VANCOUVER, BC V6E 3R3 (CA)

(21) Appl. No.: 10/345,263

(22) Filed: Jan. 16, 2003

Publication Classification

(51) Int. Cl. .................................................... H04L 9/00 (52) U.S. Cl. .............................................................. 713/185

is Activation Code> found in {Secture Serfer

Database? (16)

No (17)

<Rejection Counter is incremented by 1 in IP Address database. If

<Rejection limit) has been reached set crejection lock

out on and timestamp, (29)

aAlert Mode> asSoftware does not

function cyr fewers to

Demo mode. (30)

(57) ABSTRACT

A Software license compliance System and method limits multiple access to a Software program. License compliance Software is associated with the Software program which Selectively prevents access to that Software program. Each time a user accesses the Software program the license compliance Software accesses a remotely located database by means of a computer network or other connection to obtain a current unique validation code unique to that Specific copy of the Software program. If the code received from the database matches a current unique validation code Stored in association with the Software license compliance Software on the user's computer the license compliance Software permits the user to access and use the Software program. A new unique validation code is generated and Stored in the remotely located database as well in association with the license compliance Software which replaces the current unique validation code which no longer functions to provide user access to the Software program.

is there a sWalidation Codex in

scSecure Sewer Databases record? (21)

New salidation Code> is created in new signed gClient data Module> and <Secure Server databases. 25)

<Encrypted> <Authentication Code> is

sent from <Secre Servers to <Software) wia (Client interface Module (26

Does the -Authentitatic codex match the one created by the wSoftware- mamm - Display x

<Rejection Counter) is scAlertodes incremented by 1 in P entode Address databaself star <Rejection limit has function or

been eached set revets to crejection lock-out Demo mode. on and timestamp (19)

Go to Re Activatio Process. (23) Yes

2.

Activatius Sea 2. (32) Licease Atiyata,

Please vic your passassi and errai-address option:

cSoftwares is permitted to function. (33)

Patent Application Publication Jul. 22, 2004 Sheet 1 of 10 US 2004/0143746A1

Initial START (0) Software is installed along with <Client Interface Module>.

thank you for purchasing our software. in order to complete the installation ang activation please ensure that you are connected to the Enternet. Figu re 1 -A (2)

CClient Data Moduled is not found in User's

computer. (1)

Preferred Embodiment

4Secure Server Internet

Database> connection? (6) (3)

Preferred Embodiment

(Alert Mode> is CRejection CRejection <Softwares Lock-out> on Cooling does not

for this IP Period function or Address? finished? reverts to

(7) (9) Demo rhode. (11)

Reset CRejection Counter) and set to off CRejection Lock-out> (13)

(15) Activation step 1. : Server connection established,

password:

confirm:

email: Preferred

Embodiment : confirm:

If only password is entered, open screen that recommends entering email. SPARATEMESSAGE FOR

EMAI*

Patent Application Publication

is CActivation Code found in CSecure Server

Database>? (16)

20

Figure 1-B

<Rejection Counter is incremented by 1 in IP Address database. If

<Rejection Limit has been reached set <Rejection Lock

out) on and timestamp. (29)

cAlert Mode> CSoftwared does not

function or reverts to

Demo mode. (30)

NO 28

Jul. 22, 2004 Sheet 2 of 10

<Rejection Counter) is incremented by 1 in IP Address database. If <Rejection Limit) has

17 been reached set <Rejection Lock-out> on and timestamp.

is there a kValidation Code> in

<Secure Server 22 Databased record? (21)

New (Validation Code> is created in new signed CClient Data Module> and <Secure Server Database >. (25)

<Encrypted> <Authentication Code> is

Sent from <Secure Sewers to <Software via <Client interface Module> (26)

Does the KAuthentication code> match the one created by the <Software

(27)

SWar:

3:

sy is it is fans:

US 2004/0143746A1

cAlert Mode> CSoftware) does not

function or revets to

Demo mode. (19)

Go to gRe Activation Process. (23)

Display C - Activation Step 2. License Activated

Please vic out password and email-address (optional

ydogsrat's

try anagedorrain on

assweed anteresa address

<Software) is permitted to function. (33)

Patent Application Publication Jul. 22, 2004 Sheet 3 of 10 US 2004/0143746A1

Figure 1-C cActivation

Runs Counters reached the <Activation Runs Limite?

(34)

39

<Activation Runs Counter) is ao Aaron cana. Display incremented by 1. (40) Activation Cancelled

(36) You have selected to cancel your software activation process.

(37) Activation Skipped You have selected to skip your software activation process.

Times activation has beer R O Times left before mandatory activation: 0

Times activation has beer skipped: 3 times left before mandatory activation: 2

tieg : :

KAlert Modeo CSoftwared does not function or reverts to

Demo mode. (41)

<Software> (38)

<Activation Runs Counters reached the <Activation Runs Limit?

(42)

Activation Runs CounterP is incremented by 1.

(44)

Launch CSoftware> under temporary basis

(45)

aAlert Mode> (CUser) is <Softwared asked to does not Connect to function or

internet. Is there reverts to now an internet Demo mode connection (48) (50)

Patent Application Publication Jul. 22, 2004 Sheet 4 of 10 US 2004/0143746A1

ls there an teet

connection? (2)

(START) (1) <Software) is launched & <Activation Codex and CValidation Code> found in

<Client Data Module.

Figure 2-A

<Rejection Cooling Period finished?

<Rejection Lock out> message with

<Rejection Cooling Period time re Thaining before gRe

Activation is allowed (11)

Guit (Software of launch with reduced functionality (12)

Preferred Embodiment

Cuit (Software or launch with reduced

functionality (4) €Secure Server

Database (6)

<Rejection Lock-out or

for this IP Address?

(7)

Yes (8)

kRejection Counter) is

incremented by 1 in PAddress database. If

<Rejection Limit has been reached

is CActivation Reset (Rejection Code found Counterd and set to in CSecure off CRejection Lock- Sever set (Rejection

out> (14) Database? Lock-out on and timestamp.

(15) (18)

CAert Mode> CSoftware) does not function of reverts to

Demo mode. (19)

16

ls there a KValidation Code in

<Secure Server Database record?(20)

Go to gRe Activation Process. (22)

Patent Application Publication Jul. 22, 2004 Sheet 5 of 10

Does it match the Walidation Codeo in the KClientata Modulee

(24) Figure 2-B

New CValidation Code> is Created in KClient Data Module and <Secure

Server Database P and is recorded in signed <Client

Data Module> (28)

<Encrypted> <Authentication Code>

is sent from KSecure Sever) to CSoftware) wia <Client Interface

Module> (29)

Does the cAuthentication code> match the one created by the CSoftware

(30)

cRejection Counter) is incremented by 1 in IP Address database. If

<Rejection Limite has been reached set (Rejection Lock

out> on and timestamp. (32)

<Alert Mode> aSoftware. does not

function or reverts to

Demo mode. (33)

Yes 34

US 2004/0143746A1

Go to CRe Activation> Process. (26)

gSoftware> is permitted to function. (35)

Patent Application Publication Jul. 22, 2004 Sheet 6 of 10 US 2004/0143746A1

Figure 2-C

KWalidation CWalidation Runs Launch Runey iter Countee is cSoftware aValidation incremented by 1. (39) Runs Limite? (38)

(36)

cAlert Mode> asser) is kSoftware> asked to does not Connect to function or

internet. S there reverts to now an internet Demo mode. connection (41) (44)

Patent Application Publication Jul. 22, 2004 Sheet 7 of 10 US 2004/0143746A1

- Display Al START (0) (1) Activation Alert: Walidation Invalid

<User sent here directly following A.Y., E. re-set, it order row, (Activation> or please ensure that you are corrected to the Internet Figure 3-A

CWalidation error.

Ouit CSoftwared or launch with educed

functionality (2) <Rejection Lock-out On for P

address? (3)

Activation Reset Server Connection established. (12) <Rejection

Cooling Reset KRejection Enter your current Activation and Password Periodo Counter) and set finished? to off <Rejection Activation

(6) Lock-out> (11) - Passy.gif

Get your current password by email: my emalidorrain.com

Sendermait

2 Tore re-activasis alloyed. If the next. 12 da

iie

<Rejection Lock out> message with

<Rejection Cooling Period) time remaining before gRe

Activation> is allowed (8)

ls <Activation ls there a Does it match Code> found aPassword in 22 the in CSecure cSecure CPasswordid Server Server entered by the

Databases? Databased CUsers)? (13) record? (20)

<Rejection Counter-> is incremented by 1 in IP Address database. If <Rejection Limite has

been reached set <Rejection Lock-out> on

and timestamp. (15)

Ouit gSoftware> or launch with reduced

functionality (9)

Patent Application Publication Jul. 22, 2004 Sheet 8 of 10 US 2004/0143746A1

Display C (26) Password Confired

Display D Re-Activation Step 1 f

Enter a NEW password in the following screen. You may add or edit your email address if you wish otherwise sease cofirth Ayta reviously entered. Activation i:

Server Connection established, (27)

If only activation it displayed here

Enter a few password Passwords is Continue entered, open

w ---------- Screen that

recommends ----------------------- : entering

Kemai>.

Figure 3-B

is the CRe Activation Lock-out> on? (29)

Guit CSoftware> or launch with reduced functionality (28)

30

Reset are <Re- Activation New CWalidation Code> is <Encrypted

Activation Counter) and set created in CClient Data <Authentication Code> is Cooling to off CRe- Module> and <Secure sent from <Secure server to finished? Activation lock- Server Database >. (38) <Software> via <Client

(31) Interface Module> (39) out> (36)

CRe-Activation Counters) is incremented by 1. if KRe

Activation limit) has been reached set are

Activation Lock-out) on and timestamp.

(44)

No 32

cRe-Activation Lockout> message

with <Cooling Period) time

remaining before <Re-Activation> is

allowed (33)

Does the <Authentication code> match the One Created by the <Software

(40) Copyeo Activation Step 2

V (45) License Activated. Pleast trust. Jur password and enait-address (optional)

Password: ycksfne mwumw

cabi: myenned domain.com <Rejection Counter2 is incremented by 1 in IP Address database. If

<Rejection Limite has been reached set CRejection Lock

out on and timestamp. (42)

Quit <Software> or launch with reduced functionality (34)

launch CSoftware> (46)

Patent Application Publication Jul. 22, 2004 Sheet 9 of 10 US 2004/0143746A1

- Display A - (1) Remove/Transfer License.

In order to complete this procedure and de-activation please ensure that you are connected to the Enternet.

Figure 4

Display B (2) beractivation Step 1

Server Connection established.

Y

Enter your Password

Canced

awd. risisfar fly lices

te

Display C. (5) code Misaatch

Either your activation code, and/or password does riot match the one initially entered, or

this software has not been properly wallidated. a.Activation Code>,

(Password- No & CWalidation 4 Codce match?

(3) Emai: the few code: Early ces

7 teip

CPasswordd & CValidation Code> reset in KSecure

Severe and CClient Data Moduled removed from User's computer.

(8)

(9) License De-Activated (6) de-Activation cancelled You have s cance your software

-activatio process. Please note your activation code p

Abo-ACR-1234-Thies

Finish

ckd

De-Activation completed

(11)

Patent Application Publication Jul. 22, 2004 Sheet 10 of 10 US 2004/0143746A1

CDevelopers logs on to the <Secure Servers (1) Figure 5

Configuration or Upload Codes (2)

aDevelopers configures each KSoftware> title.

<Developer) uploads &Activation Code>S and CAuthentication Code>s

(4) (3)

CActivation Send error Code>s message to valid? <Developerce

(by email) (6) Meaning they are unique per (5)

<Product DZ

Yes

Yes, upload complete (confirm to <Developer2

(by email) (7)

US 2004/O143746A1

SOFTWARE LCENSE COMPLIANCE SYSTEM AND METHOD

BACKGROUND OF THE INVENTION

0001) 1. Field of the Invention 0002 This invention relates generally to a computer Software license compliance System and method, and more Specifically to methods and Systems for controlling access to Software programmes to prevent unauthorised multiple use of those programmes. 0003 2. Description of the Related Art 0004 Most software, including typical “off-the-shelf Software is not copy protected and, other than restrictions contained in the Software License Agreement, a purchaser of a computer Software product may make multiple copies of that Software which may be loaded on multiple computer Systems and used independently by multiple users on those Systems. It is common knowledge that computer piracy, that is unauthorized use of copies of computer programmes, is a Serious concern to Software owners. According to the 2002 annual global Software piracy Study conducted by the Inter national Planning and Research Corporation, dollar losses in 2001 due to software piracy was estimated at over ten billion dollars globally. 0005. In the past, systems and methods have been devel oped to restrict unauthorized multiple access to a computer programme by permitting a user to access a programme with a particular password or code entry and denying access to other users who do not enter that password or code entry. However, these types of Systems do not prevent multiple unauthorised access to a particular Software programme as users can use multiple copies of the Software by inputting the password or code entry to gain access to the Software. AS well, Software which is not copy protected does not typically include any controls which prevent the use of unauthorized copies of the Software, whether by means of password control or otherwise.

0006 U.S. Pat. No. 6,101,607 to Bachand et al is an example of a method, System and computer programme product for Selectively restricting access to a programme function in a computer System. The patent describes a System and method which restricts Selected users access to Selected programmes or portions of programmes. A user having special use privileges Selects and Sets the authoriza tion of each user of the computer System to either grant or deny that user access to a programme function from an application programme executing or running on the com puter System under the user's control. The user having Special use privileges can grant or deny user authorizations to portions of a programme, as well as an entire programme as a whole.

0007 U.S. Pat. No. 5,745,879 to Wyman describes a method and System for managing execution of licensed programmes wherein a licensed programme, upon Start-up, makes a call to a license Server to check on whether usage is permitted. The license Server checks a database of licenses and, if the particular use requested by that user is permitted under the license, a grant is returned allowing access to the Software by that user. A variety of license alternatives can be provided based on a licensing relationship between a user organisation and the Software developerS.

Jul. 22, 2004

0008 However, neither of the systems includes a method and System for preventing multiple use of unauthorized copies of the Software programme. 0009. In many cases, software developers who sell soft ware products, particularly those which are sold “off the Shelf, desire to limit use of the Software programme to only one individual who is authorized to use the Software and to deny access and use of the computer Software programme to all others, including users of unauthorized copies of that Software programme. This restriction is usually commensu rate in Scope with the grant of license in the Software license agreement for that Software. This ensures that the authorized user will remain in compliance with those license terms. AS a consequence, there is a need for a license compliance method and System which permits only one authorized user to use a particular Software programme, or a portion of that Software programme, at any time and which denies access and use of that Software and all copies of that Software programme to all others who may attempt to use the Soft ware, or copies of it.

SUMMARY OF THE INVENTION

0010. A method of limiting multiple access to a software program is provided which includes the Steps of:

0011 (a) associating license compliance Software with a Software program to be Secured from multiple access, the license compliance Software Selectively preventing access to the Software program or to a part of the Software program when installed on a user's computer;

0012 (b) upon a user wishing to access the software program, by means of the user's computer: 0013 (i) accessing a remotely located database by means of a computer network or other connection to obtain a current unique validation code associ ated with that Specific copy of the Software pro gram; and

0014 (ii) comparing the current unique validation code obtained from the database to a unique validation code associated with the user's Soft ware program on the user's computer;

0015 (c) if the current unique validation code obtained from the database corresponds to the cur rent unique validation code associated with the user's Software program:

0016 (1) permitting the user to use the software program,

0017 (2) generating a new unique validation code asSociated with the Specific copy of the Software program; and

0018 (3) updating the database with the new unique validation code and providing the new unique validation code to the user's computer to be stored in associated with the user's Software program, the new unique validation code replac ing the current unique validation code, the replaced unique validation code no longer func tioning to provide user access to the Software program.

US 2004/O143746A1

0019. The method may further include that the database is associated with a computer System comprising Server Software which generates the new unique validation code, provides it for Storage on the user's computer and updates the database.

0020. The method may further include the following Steps after step (a) above:

0021 (a1) establishing a unique activation code, Storing it on the Secure Server and providing it to an authorized user of the Software program concurrent with the sale or licensing of the software to the authorized user;

0022 (a2) when the authorized user first installs the Software requesting input of the activation code; and

0023 (a3) upon input of the activation code, comparing it to the activation code Stored on the Secure Server and if they match advancing to Step (b) above.

0024. The method may also include the following steps after step (a3) above:

0025 (a3.1) requesting user input of a password;

0026 (a3.2) storing the password on the secure Server,

0027 (a3.3) each time a user re-installs the software program and upon access of the Software program by a user, requesting input of the password and the unique activation code; and

0028 (a3.4) upon input of the password and the unique activation code advancing to step (b) above.

0029. The method may include, before step (b)(i) above, the Step of permitting a user to use the Software program or the part of the Software program a pre-determined number of times before requiring the user to proceed to step (b)(i). 0030 The method may further include, at step (a2) above, the Step of permitting a user to use the Software program or the part of the Software program a pre-deter mined number of times before requiring the user to proceed to step (a3) above. 0031) The method may further include that at step (c)(3) above the new unique validation code is Stored on the user's computer as a part of the Software program or license compliance Software. The method may further include that at Step (a1) above the unique activation code is provided to the user by means of email. The method may further include at Step (c)(3) above the new unique validation code is provided to the user by means of a connection over a computer network or other connection.

0032 The method may further include, after step (a3) above and at step (b)(i) above, the step of if there is no unique validation code in the remotely located database directing the user to step (a2) above.

0033. The method may further include that each time a user accesses the remotely located database and before permitting the user to use the Software program at Step (c)(1)

Jul. 22, 2004

above, verifying that the Server associated with the database is authorized to provide the current unique validation code to the user.

0034. The method may further include that the step of Verifying that the Server associated with the database is authorized to provide the current unique validation code to the user is undertaken by the Steps of

0035) (a) generating a unique authentication code by means of a computer algorithm at the Secure Server containing the remotely located database;

0036) (b) transmitting the unique authentication code to the license compliance Software on the user's computer,

0037 (c) generating a unique authentication code by means of the same computer algorithm at the user's computer,

0038 (d) by means of the license compliance soft ware on the user's computer, comparing the unique authentication code received from the Secure Server to the unique authentication code generated by means of the computer algorithm at the user's com puter,

0039 (e) if the two authentication codes match, permitting the user to use the Software program at Step (c)(1) above.

0040. In another aspect of the invention license compli ance Software for Securing a Software program from unau thorized use is provided which includes:

0041 (a) means for controlling access to a software program to be Secured;

0042 (b) means for determining a unique code element and associating it with the Software pro gram,

0043 (c) means for receiving a unique code element Stored remotely from the user's computer on activa tion of the Software program for use by the user;

0044) (d) means for determining whether the unique code element Stored remotely from the user's com puter matches the unique code element associated with the Software;

0045 (e) means for permitting access to the soft ware program by the user if the means for determin ing determines that the unique code element Stored remotely from the user's computer matches the unique code element associated with the Software;

0046 (f) means for establishing a new unique code element, different from any previous unique code element attributed to the Software program, to replace the code element associated with the Soft ware and Stored remotely from the user's computer if the means for determining determines that the unique code element Stored remotely from the user's computer matches the unique code element associ ated with the Software; and

0047 (g) means for associating the new unique code element with the Software program and Storing it remotely from the user's computer.

US 2004/O143746A1

0.048. The unique code element stored remotely from the user's computer is accessible to the user's computer through a computer network or other connection. 0049. The software may further include means for storing the unique code element remotely from the user's comput er)Said means for Storing being accessible to the user's computer through a computer network or other connection. The Software may further include means for encrypting communication between the means for Storing and the user's computer to prevent unauthorised access to the unique code element.

0050. The software may further include means for veri fying that the means for Storage is authorized to provide the unique code element to the user through the computer network or other connection. The means for Verifying may include:

0051 (a) means, associated with the means for stor ing, for generating a unique authentication code by means of a computer algorithm;

0.052 (b) means for transmitting the unique authen tication code to the user's computer;

0053 (c) means, associated with the user's com puter, for generating a unique authentication code by means of the same computer algorithm;

0054 (d) means for comparing the unique authen tication code received from the means for generating asSociated with the means for Storing with the unique authentication code generated by the means for gen erating associated with the user's computer;

0055 (e) means for permitting the user to use the Software if the two authentication codes match.

DESCRIPTION OF THE DRAWINGS

0056. A preferred embodiment or embodiments will now be described with reference to the accompanying drawings, wherein:

0057 FIGS. 1(A, B and C) is a block diagram of the activation process of the Software license compliance System of the present invention; 0.058 FIGS. 2(A, B and C) is a block diagram of the validation process of the Software license compliance SyS tem of the present invention; 0059 FIGS. 3(A and B) is a block diagram of the re-activation process of the Software license compliance System of the present invention; 0060 FIG. 4 is a block diagram of the de-activation process of the Software license compliance System of the present invention; 0061 FIG. 5 is a block diagram of the developer's operational process of the Software license compliance SyS tem of the present invention.

DETAILED DESCRIPTION

0.062 Referring to FIG. 1, a block diagram demonstrates the activation process of the Software license compliance System of the present invention. In a preferred embodiment, Software developerS will incorporate applicant's Software

Jul. 22, 2004

license compliance computer programme as a part of the Software programme to be licensed to users. The Software license compliance programme controls access to the Soft ware programme by requiring either an initial activation code upon installation of the Software programme, or a validation code each time the Software is accessed. The validation code changes each time a user accesses the Software. Optionally, the Software developer can provide a random or a fixed and pre-determined number of times the Software programme can be accessed and used before the user must activate or validate the Software programme. 0063. There are two main license compliance features of the Software System of the present invention: 0064 1. A Software license compliance activation system and method which controls initial installation, access and use of the Software programme as well as de-installation and re-installation on another computer by authorized users who can input a unique activation code and user defined pass word.

0065 2. A software license compliance validation system and method which provides ongoing control over the use of the Software programme to ensure that only one user may use the Software programme (or any copies of the pro gramme originating from that Software programme) at any time, and that users are limited in the ability to transfer authorizations from one user to another and to prevent use of the Software programme by multiple users. 0066. In each case, the license compliance System pre vents use of the Software programme by anyone other than an authorized user, that is the user who inputs an activation code, at the Stage of initial installation and use. The Software license compliance activation and validation System relies on a remote and Secure Server accessible on a computer network Such as the Internet, or other connection, to control activation and ongoing use of the Software programme.

0067 Activation, De-Activation and Re-Activation 0068 Activation 0069. The flow chart of FIG. 1 describes the software license compliance method and System in a preferred embodiment for activating access to a Software programme or a portion of a Software programme following installation of the Software programme on a user's computer.

0070 Initially, a software developer who wishes to use the Software license compliance System of the present inven tion will embed, within its Software programme, a Software programme (the “license compliance programme”), which implements the Software license compliance System. This is the form in which the Software programme is Sold, or licensed, to the end user. The embedded license compliance Software in the Software programme Selectively prevents access to the Software programme or to a part of the Software programme unless acceSS is permitted based on user input of an activation code or if a validation is performed in the manner discussed below. The license compliance Software includes a client interface module for communicating between the Software and a Secure Server located remote of the user's computer and controlled by the software devel oper or the license compliance Software vendor. The client interface module may be embedded within the Software in a manner which renders it unavailable to a user. Alternatively,

US 2004/O143746A1

the client interface module may reside on the user's System as Separate modules. Separating the client interface module from the license compliance Software has the advantage for the developer of the license compliance Software in main taining its Software more Securely as a trade Secret in that the Source code for the license compliance Software need not be provided to the developer of the Software programme. However the more Secure System of license compliance occurs where this module is actually embedded within the Software programme.

0071. The license compliance Software also includes an encrypted client data module for entry and Storage of encrypted data received from a Secure Server as more particularly described below. Because the client data module receives and Stores data from the Secure Server it must be accessible to the Secure Server, through the client interface module, and as Such is Stored separately on the user's system. This enables the client interface module to read the data Stored in the client data module and Send it to the Secure Server and also to receive data from the Secure Server and Store it in the client data module.

0.072 FIG. 1 describes the initial activation steps under taken by the license compliance Software upon initial instal lation and access to the Software programme. A unique activation code which is unique to that particular computer Software product purchased or licensed by that user is allocated to that copy of the Software programme by the Software developer. The activation code is Stored in a database record on a Secure Server at a remote location from the Software programme, the Server being accessible to the license compliance Software by means of a computer net work or other connection Such as a modem and telephone dial-up. In a preferred embodiment, the Secure Server, con taining the database record with the unique activation code, may be accessible by the license compliance Software through the Internet. Preferably, all copies of the software programme with the license compliance Software embedded in it are identical when shipped by the developer and Sold to all users. This provides a significant advantage in manufac turing and distributing the Software programme as the Soft ware developer need not uniquely identify each copy of the Software when manufactured. Each authorized copy of the Software programme will be uniquely identified when the user's computer connects to the Secure Server operated by the developer of the license compliance Software (or oper ated by the Software developer) and the user provides a correct activation code whereupon the license compliance Software records a validation code, all as described in more detail below.

0073) Referring to block 0 of FIG. 1-A, when a user initially installs the Software programme, a Search on the user's computer is undertaken to determine whether or not the client data module can be located. The client data module is a module located in the user's directory associated with the Software programme which contains Stored data which resulted from previous installation, activation and validation of the Software programme in the past. If no client data module can be located (block 1 of FIG. 1-A), it means that the Software has not been installed on that computer in the past or the computer hard drive has been formatted or otherwise modified to delete the client data module. On the other hand, if a client data module can be found the

Jul. 22, 2004

validation process, rather than the activation proceSS, is implemented as provided below with respect to FIG. 2.

0074. If no client data module can be located, the acti vation process, as described in FIG. 1 is implemented.

0075 Block 2 of FIG. 1-A depicts a screen display Sample (Display A) viewable by a user upon initial instal lation which, in the preferred embodiment, will not function unless a connection to the Internet (or any other computer network or connection) is available in order to complete the installation and activation process. The user has a choice of clicking on the “Skip' button, or the “Continue” button with the user's mouse or by entering appropriate key Strokes to Select the desired action. If the user selects the “Continue” button, the license compliance Software will determine whether a computer network connection (e.g. the Internet) or other connection to the secure server exists (block 3 of FIG. 1-A). If there is no computer network or other connection, the Software programme may revert to partial functionality (Such as a demonstration mode) or deny access to a user (block 11 of FIG. 1-A). If the user selects the “Skip' button, the Software either does not function or reverts to partial functionality, Such as a demonstration mode (block 11 of FIG. 1-A). Alternatively, the user may be provided with a random or fixed and pre-determined number of times he or She can acceSS and use the Software before the user must connect to the Secure Server and activate the Software programme. This is described more fully below in Optional Embodiment for Activation Process.

0076. In the event that a computer network or other connection to the Secure server database is Successful (block 5 of FIG. 1-A), a determination is made as to whether or not the rejection lock-out is on or off at block 7. A rejection counter Stores the number of times an unsuccessful activa tion has occurred for this IP address and will not permit further activation if a pre-Set maximum number of unsuc cessful activations within a pre-determined time period is reached; referred to as "rejection lock-out' and depicted at block 7 of FIG. 1-A. The rejection counter is a field in the record database of the Secure Server which need not corre spond to that copy of the Software programme and which is tied to a particular IP address. The rejection lock-out is designed to ensure that only a limited number of attempts can be made by a particular IP address to input an activation number without resulting in a correct match with the acti Vation number Stored in the Secure Server database.

0077. When rejection lockout is triggered, the user at that IP address will not be allowed to access the secure server during the rejection cooling period, a pre-configured amount of time set by the software developer.

0078 If the rejection lock-out is on (block 8 of FIG. 1-A) and the rejection cooling period is not finished (block 10 of FIG. 1-A), the software either does not function or reverts to partial functionality, Such as a demonstration mode (block 11 of FIG. 1-A). If the rejection lock-out is on and the cooling period is finished, the rejection counter is reset, the rejection lock-out is set to off and the user is allowed to continue the activation process (block 13 of FIG. 1-A) 0079 At block 15 of FIG. 1-A (Display B), the user is requested to input a unique activation code which has previously been provided to the user. The activation code is provided to the user when the Software is purchased, either

US 2004/O143746A1

by being included in the box or printed on other packaged material for software sold “off the shelf” or by way of e-mail or other notification if the user downloads his or her copy of the Software from the Internet. The activation code is a unique code which acts as a key to a particular record on the Secure Server database which will, after activation of the Software program, correspond to that particular copy of the Software programme Sold or licensed to the user. The user is further requested to enter a user defined password which is confirmed to ensure accurate entry. The user defined pass word is Stored by the Secure Server in the Secure Server database record associated with that activation code and thereby corresponds to the user's Specific copy of the Software programme.

0080. The user is further requested to input an e-mail address and to confirm that address at block 15 of FIG. 1-A (Display B). The e-mail entry step is optional and if the user does not enter this information, the activation process will Still continue to complete initial activation of the Software. The entry of a user defined password is required to allow the user to control or regain control of the Software programme.

0.081 Entry of the user's e-mail address on activation of the software programme at block 15 of FIG. 1-A is also useful in the situation where user may have forgotten his password as on re-activation of the Software programme at block 12 of FIG. 3-A, the password may be sent to the user on request at the e-mail address initially provided.

0082 Optionally, at block 15, if the user does not enter an e-mail address, a separate warning may be displayed to the user which advises the user of the importance of entering an e-mail address at this stage. 0.083. The user then has a choice of selecting a “Con tinue” button or a “Cancel button at block 15 of FIG. 1-A. If the user selects the “Cancel” button, in the preferred embodiment, the Software either does not function or reverts to partial functionality, Such as a demonstration mode (block 11 of FIG. 1-A). Alternatively, the user may be provided with a random or fixed and pre-determined number of times he or she can acceSS and use the Software before the user must connect to the Secure Server and activate the Software programme. This is described more fully below in Optional Embodiment for Activation Process.

0084. If the user selects the “Continue” button at block 15 of FIG. 1-A (Display B), a determination is made as to whether the activation code is found in the Secure Server database at block 16 of FIG. 1-B.

0085. If it is not found, the rejection counter is incre mented by one at block 18 and the software either does not function or reverts to partial functionality, Such as a dem onstration mode (block 19 of FIG. 1-B). If the rejection counter reaches the predetermined limit, rejection lock-Out is set on (block 18 of FIG. 1-B). Once rejection lock-out is on, the user (i.e. at that IP address) can no longer enter further activation codes at block 15 (Display B) of FIG. 1-A. The user or users at a particular IP address are allowed a predetermined number of unsuccessful activation or re activation attempts until the rejection limit is reached within a predetermined rejection period of time, following the first rejection time Stamp or the last rejection lock-out time Stamp. A rejection counter Stored as a part of the Secure Server database record is incremented with each unsuccess

Jul. 22, 2004

ful activation or re-activation occurrence during the pre determined rejection period. If the rejection counter reaches the rejection limit within the rejection period, the user will not be allowed to access the Software programme during the rejection cooling period, which is a pre-determined time period Set by the developer residing as part of the Secure Server database record relating to that Software programme and applying to all copies of the Software programme.

0086 Once there is a match between the activation code entered by the user and that found on the Secure Server database at block 16 of FIG. 1-B, a determination is made as to whether or not there is a validation code Stored in the Secure Server database record corresponding to that activa tion code (block 21). If there is, it means that the software has been installed previously and is being reinstalled, for example when a user does not de-activate the Software program from one computer and then installs it on another. The user is then directed to the re-activation process at block 23 of FIG. 1-B, as discussed more fully below with refer ence to FIG. 3.

0087. If there is no validation code in the secure server database record at block 21, a new validation code is created by the secure server Software and then transmitted by encrypted communication to the client interface module that Stores it in a new, signed and encrypted client data module which is created and Stored in the user's computer in an encrypted manner (block 25 of FIG. 1-B) and which remains inaccessible by the user. The client interface module looks after communication between the user's computer and the Secure Server. The client data module is signed by the license compliance Software. The Signature algorithm uses a combination of the activation code, identification numbers of Selected hardware components of the user's computer and other data to create the Signature used to Sign the client data module. The Signature is verified and changed every time the client data module is accessed to ensure there have been no attempts to modify the client data module to circumvent the license compliance Software and System.

0088. This system of validation codes ensures that there is no duplicate activation code being used by an unautho rized user, therefore preventing unauthorized copies and ensuring that only one copy of the programme is functioning at a time, or optionally as many as the Software developer allows (configures) per activation code. 0089. Once a new validation code is created at block 25 of FIG. 1-B, the server communicating with the software is authenticated by means of an authentication code. The encrypted authentication code is Sent from the Secure Server to the Software programme by the client interface module (block 26). Note that the authentication process is in effect undertaken each time there is a communication between the Secure Server and the user's Software. The authentication code is designed to ensure that the user's computer is connected to the authorized secure server (i.e. the server operated by the developer of the license compliance Soft ware or the developer of the software) and validates the communication between that Secure Server and the user's computer. This prevents, for example, Substitution of an unauthorized Server to replace the authorized Secure Server; preventing an unauthorised Server being Set up to Signal the Software program that it has been Successfully activated or validated, in a situation where that Software program is an

US 2004/O143746A1

unauthorized copy or where incorrect activation and Vali dation codes are provided from the user or the unauthorized copy of the Software program to that unauthorized Server in an attempt to circumvent the license compliance Software and System. The process for generating the authentication code is further detailed below.

0090 When the secure server sends the activation code and the related authentication code to the license compliance Software embedded in the Software programme, the Software will run the authentication code algorithm and re-generate an internal authentication code, at block 27 of FIG. 1-B. The Software will then test to match the license compliance Software generated authentication code with the authentica tion code downloaded from the Secure server, at block 27.

0091) If there is no match, the rejection counter is incre mented by one at block 29 of FIG. 1-B and the software either does not function or reverts to partial functionality, such as a demonstration mode (block 30 of FIG. 1-B). If the rejection counter reaches the predetermined limit, rejection lock-out is set on (block 29). 0092. If there is a match, the client data module is updated and the password and e-mail entered by the user is confirmed (block 32 of FIG. 1-B, Display C). The user must select a “Finish” button at block 32 which completes the activation proceSS and launches the Software programme at block 33. The Software programme has then been Success fully activated and may be used by an authorized user Subject to the validation process required each time the Software programme is run, as discussed below. 0093. If at any stage between when the computer network or other connection is established with the Secure Server and when the “Finish' button is selected at block 33 of FIG. 1-B, the connection is lost or activation fails for any other reason, the Software is not launched, the rejection counter is increased by one and the license compliance Software on the user's computer returns to the initial activation Stage at block 1 of FIG. 1-A. Alternatively, the Software is launched with reduced functionality Such as in a demonstration mode, as provided at block 11 of FIG. 1-A.

0094 Optional Embodiment of Activation 0.095 Because the user's computer may not always be accessible to the Internet, other computer network connec tion or other connection to enable activation or validation of the Software programme by linking the license compliance Software with the Secure Server, it is Sometimes advanta geous to permit a user to access the Software programme a random or a fixed and predetermined number of times before requiring the user to connect to the computer network (e.g. the Internet) or other connection to activate or validate the Software programme.

0.096 Referring to the Activation Process as depicted in FIG. 1, if the user either selects the “Skip' button at block 2 of FIG. 1-A, or the “Cancel” button at block 15 of FIG. 1-A, the license compliance Software makes a determination of whether or not the activation runs counter is less than the activation runs limit at block 34 of FIG. 1-C. The activation runs limit is embedded in the Software and the activation runs counter is Stored in the client data module and keeps track of the number of times the user has accessed the Software without activating it by linking the license com

Jul. 22, 2004

pliance Software with the Secure Server. If no client data module exists, it will be created by the license compliance Software.

0097. If the activation runs counter is less than the activation runs limit, the activation runs counter is incre mented (block 36) and the screen depicted at block 37 of FIG. 1-C (Display E) is displayed to the user. The screen display at block 37 advises the user as to the number of times the activation proceSS has been skipped and the remaining opportunities to use the Software programme before man datory activation will be required. The user selects the “Finish” button in order to launch the software (block 38). Optionally, the user can activate a link to a portion of the license compliance Software that describes the effect of reaching the mandatory number of times the Software can be launched without activation.

0098. In the event that the activation runs counter has reached the activation runs limitat block 34 of FIG. 1-C, the screen at block 40 of FIG. 1-C (Display D) is displayed showing the number of times activation has been skipped (set at the maximum permitted, pre-determined by the developer of the Software programme) and showing that Zero activation times are left before mandatory activation is required. The user has a choice between Selecting the “Activate” or the “Ouit” buttons. If the user selects the “Ouit' button the user exits the Software or the Software is launched with reduced functionality (for example in a dem onstration mode), at block 41. If the user selects the “Acti vate” button at block 40 of FIG. 1-C, a determination is made as to whether a connection exists between the com puter network or other connection and the Secure Server, at block 3 of FIG. 1-A and the procedure for activation is undertaken again as discussed above. 0099] If there is no connection to the secure server (block 3 of FIG. 1-A) the license compliance software makes a determination of whether or not the activation runs counter is less than the activation runs limitat block 42 of FIG. 1-C. If the activation runs counter is less than-the activation runs limit, the activation runs counter is incremented (block 44 of FIG. 1-C) and the software is launched (block 45 of FIG. 1-C). 0100. In the event that the activation runs counter has reached the activation runs limit at block 42, the user is asked to establish a connection between the computer net work or other connection and the secure server (block 48 of FIG. 1-C). If no connection can be established, the software is launched with reduced functionality (for example in a demonstration mode), at block 50. If a connection is estab lished (block 47), then the procedure for activation is undertaken again as discussed above. 0101 Authentication Code Generation and Activation Code Generator

0102) The Authentication process authenticates commu nication between the 3 main modules, the Software pro gramme; the license compliance Software and the Secure Server. This ensures that none of these components may be hacked or replaced. 0103) In a preferred embodiment as regards the authen tication code generating process, the developer will create an algorithm (the “authentication code algorithm”) or formula and use it to generate authentication codes based on the

US 2004/O143746A1

activation code (and/or any arbitrary code that the developer chooses) to create a unique authentication code for each activation code. The developer will upload the authentica tion codes with the related activation codes to the Secure Server database. The developer will embed the same algo rithm in the software programme. When the secure server Sends the activation code and the related authentication code to the license compliance Software embedded in the Software programme, the Software will run the algorithm and re generate an internal authentication code (example: block 27 of FIG.1-B). The software will then test to match the license compliance Software generated authentication code with the authentication code downloaded from the Secure Server database (example: block 27 of FIG. 1-B). 0104. Alternatively, in a simpler version, the authentica tion code can be a simple password located both in the Software and on the Secure Server.

0105. Alternatively also, the developer can either: 0106 (a) Upload to the secure server the algorithm that will be used in the software programme and will be used by the Secure Server to generate an authen tication code based on the activation code. Both codes are stored on the Secure server. When the Secure Server Sends the activation code and the related authentication code through the license com pliance Software to the Software programme, the Software programme will run the algorithm and re-generate an internal authentication code. The Soft ware programme will then test to match the Software programme generated authentication code with the authentication code downloaded from the Secure Server database;

0107 (b) download an algorithm created by the license compliance Software developer and incorpo rate the algorithm in the Software programme. The Software developer will upload an authentication key to the Secure Server database for a particular Software programme Product ID. The secure server will run the algorithm and generate an authentication code based on the activation code and the authentication key. Both codes are Stored on the Secure Server. When the secure server sends the activation code and the related authentication code through the license compliance Software to the Software programme, the Software programme will run the algorithm using the authentication key embedded in the Software pro gramme and the activation code and re-generate an internal authentication code. The Software pro gramme will then test to match the Software pro gramme generated authentication code with the authentication code downloaded from the Secure Server database.

0108 (c) upload a unique authentication key for each Software programme product identifier. The unique authentication key is a word, numbers or any alpha numeric code created by the developer with or without any relation to the Software programme. In this case the authentication key Serves as the authen tication code. The authentication code will be the Same for every activation code for that Software programme product identifier. It will be matched with the same authentication code that the developer has incorporated in the main Software programme.

Jul. 22, 2004

0109) Note that in methods 1, 2 and 3, the generation of the authentication code may be performed by an activation code generator. 0110. The activation code generator can be used by the developer to generate activation codes as an alternative to the developer generating his own generator of activation codes. The activation code generator may be used offline at his premises, online on the Secure Server or in real-time at the time of purchase of the Software programme by the user. 0111. If used offline, the developer will upload the acti Vation codes and authentication codes to the Secure Server.

0112) If used online, the activation code generator will generate the new activation codes. It may also call the authentication code algorithm to generate the matching authentication code. It will Store the code(s) in the Secure Server. If used in real-time, the activation and/or authenti cation codes can be generated “on the fly' and need not necessarily be Stored in advance in the Server database. 0113. If used in real-time, for example, as soon as the user's credit card has been accepted, the Sale transaction Script will call the activation code generator Script and generate a new activation code. It may also call the authen tication code algorithm to generate the matching authenti cation code. Subsequently, in real time, the activation code generator will upload the new codes(s) to the Secure server and only Send the activation code to the Sale transaction Script So that it may email the activation code and other transaction details directly to the user as well as an optional copy to the developer.

0.114) To create a random activation code, the activation code generator could use a random Seed based on Date, Time, Product ID, as well as an activation code seed provided by the developer or other variables. This will ensure no relation between different activation codes.

0115 De-Activation 0116. In the event that the user wishes to remove the Software programme from the computer on which it resides, the Software programme and the license compliance Soft ware associated there with must be de-activated in order to permit activation of the Software programme when it is installed on another computer. FIG. 4 is a flowchart of this process, including Sample user Screens. If the de-activation process is not performed upon removal of the Software, upon re-installation of the Software programme on that computer or installation of the Software programme on another com puter, the software will revert to an alert mode and then the user will have to re-activate the Software programme in order to use it.

0117 Upon the user initiating the process for removal of the Software programme from the user's computer, the license compliance Software associated with the Software programme will cause the screen at block 1 of FIG. 4 (Display A) to be displayed to the user. If the user selects the “Skip' button, the Software removal procedure quits at block 10 of FIG. 4. If the user Selects the “Continue” button at block 1 and if a connection with the Secure Server has been established over the computer network or other connection, the screen at block 2 of FIG. 4 (Display B) is displayed to the user. The user is requested to enter the password which was entered at block 15 of FIG. 1-A. If the user selects the

US 2004/O143746A1

“Cancel” button at block 2 (Display B), the de-activation cancelled screen at block 5 (Display C) is displayed. The user may then select the “Quit' button in which case the Software removal process quits at block 10 of FIG. 4 without removal of the software programme. Otherwise, the user may select the “Re-Enter” button to return to the password entry screen (block 2 of FIG. 4). Optionally, the user may click on a help link to be connected with a help programme to assist the user in de-activating Software or to assist the user in obtaining the password through the e-mail address entered at block 15 of FIG. 1-A.

0118 When the user enters a password and selects the “Continue” button, a determination is made at block 3 of FIG. 4 as to whether the user password matches the user password contained in the database record associated with the Software programme Stored on the Secure Server. AS well, a determination is made as to whether the activation code and validation code Stored in the license compliance Soft ware on the user's System (the client data module) matches the activation and validation codes Stored in the Secure Server database record. The user password is entered in order to authenticate the user as being authorized to de-activate the Software. This prevents an unauthorized user from de activating the Software and activating it on another com puter.

0119) If either the user password, the validation code or the activation code do not match that Stored on the Secure server database record, the screen at block 5 (Display C) is displayed. The user has the choice of either re-entering the password by selecting the “Re-enter” button in which case the user is returned to the Screen at block 2 or the “Ouit” button in which case the screen at block 6 of FIG. 4 (Display E) is displayed and the user quits the procedure by Selecting the “Ouit button at block 6.

0120) If the user password, activation code and validation code match the record on the Secure Server, the Screen at block 9 of FIG. 4 (Display D) is displayed. Block 9 includes a display of the activation code for that copy of the Software which must be noted by the user in order to re-activate the Software programme on installation of the Software pro gramme on a computer System as described below. The user then selects the “Finish' button and the procedure is com pleted at block 11 with the successful de-activation of the Software programme. On de-activation of the Software pro gramme, the client data module is removed from the user's System to be reinstalled on a System with the reinstallation of the Software programme. The Secure Server database record is re-initialized upon de-activation and only the activation code remains. Optionally, the user password can remain in order to validate the same user on re-activation.

0121 The Software programme may now be uninstalled from the computer in a manner which will permit activation of the Software programme at a later date. 0.122 Optionally, the screens displayed at blocks 2, 5, 6 and 9 can include a link to a help Screen to assist the user in de-activating the Software programme prior to uninstalling it from the user's computer. AS well, optionally, block 2 can include a link to a page on the license compliance Software which describes how the license to the Software programme can be transferred to another user. As well, block 5 can include a link to permit an e-mail message to be sent to the Secure Server Software, or the Software programme devel

Jul. 22, 2004

oper, So that the password can be e-mailed to the e-mail address entered at step 15 of FIG. 1-A. 0123 Re-Activation 0.124. If the Software programme has not been previously removed from the computer System and de-activated in accordance with the de-activation procedure discussed above, the Software programme must be re-activated So that it may be installed on a computer system. FIG. 3 is a flowchart of the method and System for re-activating the Software programme upon installation of the Software pro gramme on a computer System So that it may be used. 0.125 Failing prior de-activation, upon installation of the computer programme on the computer System, an alert mode screen as depicted at block 1 of FIG. 3-A (Display A) is displayed to the user. The user may either Select a “Con tinue” button, or a "Quit' button. If the “Ouit' button is Selected, the Software either quits without the completion of the re-activation proceSS, or the Software is launched with reduced functionality, Such as in a demonstration mode (block 2 of FIG. 3-A). 0.126 If the user selects the “Continue” button, a deter mination is made by the license compliance Software at block 3 of FIG. 3-A as to whether or not the rejection lock-out is on. If rejection lock-out is on and the rejection cooling period is not finished, the user is provided with a message indicating that the System has locked out the user until the rejection cooling period has expired (block 8 of FIG. 3-A). No re-activation is allowed within that rejection cooling period. The Software then quits without Successful re-activation, or is allowed to run but with reduced func tionality (block 9 of FIG. 3-A). If the rejection lock-out is on and the rejection cooling period is finished, the rejection counter is reset, the rejection lock-out is set to off and the user is allowed to continue the re-activation process (block 11 of FIG.3-A) 0127. If the rejection lock-out is not on and a successful connection is established between the computer network or other connection and the Secure Server, the Screen at block 12 of FIG.3-A (Display B) is displayed and the user is asked to input the activation code which was provided to the user upon purchase of the Software as described above or pro vided to the user at block 9 of FIG. 4 and the user defined password which was input by the user upon activation of the Software at block 15 of FIG. 1-A. If the user has forgotten his/her password, he/she can activate the “Send e-mail” button at block 12 of FIG. 3-A and the required password will be e-mailed to the e-mail address provided at block 15 of FIG. 1-A.

0128. The user can then either select the “Continue” button, or the “Cancel” button at block 12 of FIG. 3-A. If the “Cancel” button is selected, installation of the Software quits without Successful re-activation or the Software is allowed to run but operates with reduced functionality, all as provided in block 2 of FIG. 3-A. 0129. If the user selects the “Continue” button at block 12 of FIG. 3-A, a determination is made as to whether the activation code entered by the user is found in the Secure server database (block 13 of FIG. 3-A). If the activation code is found, then a determination is made whether there is a password in the Secure Server database record for this activation code (block 20 of FIG. 3-A). If there is, a

US 2004/O143746A1

determination is made as to whether the password provided by the user in block 12 matches the password in the Secure server database record (block 23 of FIG.3-A). If it matches, the screen of block 26 of FIG.3-B (Display C) is displayed to the user to confirm that the password has been Success fully matched and that the license compliance System rec ognizes that this is the authorized user of the Software programme.

0.130) If the activation code entered by the user at block 12 of FIG. 3-A is not found in the Secure server database (block 13), or if no password is found in the secure server database record for the activation code provided by the user (block 20), or if the password provided by the user at block 12 of FIG. 3-A does not match the password in the secure Server database record (block 23), then the rejection counter is incremented by 1 at block 15 of FIG. 3-A. If the rejection counter exceeds the rejection limit then the rejection lock out is set to on (block 15 of FIG. 3-A). Upon failure of the re-activation process, the Software either quits or is allowed to run but operates with reduced functionality, all as pro vided at block 9 of FIG. 3-A.

0131 On Selecting the “Continue” button at block 26 of FIG. 3-B (Display C), the screen at block 27 of FIG. 3-B (Display D) is displayed. The activation code is displayed and the user is requested to enter a new password. The user can also optionally also change his or her e-mail address. Optionally, a link can be established at this Screen to displays or web pages advising the user as to the importance of noting the password and e-mail address and also to the privacy policy of the Software developer. AS well, if the user does not enter an e-mail address, a Screen displays a warning recommending that an e-mail address be provided. 0132) At block 27 of FIG. 3-B, the user may select the “Cancel” button in which case the re-activation of the Software is cancelled and the Software either quits or is allowed to run with reduced functionality at block 28 of FIG. 3-B. If the user Selects the “Continue” button at block 27, a determination is made as to whether or not the re-activation lock-out is on (block 29 of FIG. 3-B). The re-activation lock-out is designed to Stop a group of unau thorized users from continually and Successfully activating or re-activating the Software by trading activation codes and passwords thereby permitting multiple users to acceSS and use copies of the same Software programme at different times.

0133) If the re-activation lock-out is on and the re activation cooling period is not finished (block 31 of FIG. 3-B), a message is provided to the user at block 33 of FIG. 3-B indicating the cooling period of time remaining before re-activation will be allowed. Software re-activation then quits at block 34. If the re-activation lock-out is on and the cooling period is finished, then the re-activation counter is reset and the re-activation lock-out is set to off at block 36 of FIG. 3-B, and the user is allowed to continue the re-activation process at block 38 of FIG. 3-B. 0134) If the re-activation lock-out is off (block 37 of FIG. 3-B), a new validation code is created by the Secure server Software and then transmitted by encrypted communication to the client interface module that Stores it in a new, signed and encrypted client data module which is created and Stored in the user's computer in an encrypted manner (block 38 of FIG. 3-B) and which remains inaccessible by the user.

Jul. 22, 2004

0135). Once a new validation code is created at block 38 of FIG. 3-B, the communication between the server and the Software is authenticated by means of an authentication code. The encrypted authentication code is Sent from the Secure Server to the Software programme by the client interface module (block 39 of FIG. 3-B). 0.136 When the secure server sends the activation code and the related authentication code to the license compliance Software embedded in the Software programme, the Software will run the authentication code algorithm and re-generate an internal authentication code, at block 40 of FIG.3-B. The license compliance Software will then test to match the license compliance Software generated authentication code with the authentication code downloaded from the Secure server, at block 40. 0.137 If there is no match, the rejection counter is incre mented by one at block 42 of FIG. 3-B and the software either does not function or reverts to partial functionality, Such as a demonstration mode. If the rejection counter reaches the predetermined limit, rejection lock-out is Set on (block 42). 0138). If there is a match at block 40 of FIG. 3-B, the re-activation counter is incremented by 1 at block 44 of FIG. 3-B and the client data module is updated. If the re activation limit has been reached then the re-activation lock-out is set to on (block 44). No further re-activations will be allowed within the re-activation cooling period which begins at the timestamp of this re-activation. The re-activa tion limit and the re-activation cooling period are set by the Software developer and Stored in the Secure Server. 0.139. The password and e-mail entered by the user is then confirmed (block 45 of FIG.3-B, Display E). The user must select a “Finish” button at block 45 which completes the re-activation process and launches the Software pro gramme at block 46 of FIG. 3-B. The software programme has then been Successfully re-activated and may be used by an authorized user Subject to the validation process required each time the Software programme is run, as discussed below.

0140) Ifat any stage between when the computer network or other connection is established with the Secure Server and when the “Finish' button is selected at block 45 of FIG.3-B, the Server connection is lost or re-activation fails for any other reason, the Software is not launched, the rejection counter is increased by one and the license compliance Software on the user's computer returns to the initial re activation stage at block 1 of FIG. 3-A. Alternatively, the Software is launched with reduced functionality Such as in a demonstration mode, as provided at block 9 of FIG. 3-A. 0141 Validation 0.142 Validation of the software programme will now be discussed with reference to FIG. 2. The previous discussion related to activation of the Software, either when first installed or properly de-activated in accordance with FIG. 4 when re-installed and re-activated. Once activated, or re activated, the Software programme must be validated each time it is used (or, if desired by the Software programme developer, upon the validation runs counter reaching the validation runs limit, as discussed below). 0.143 Each time the Software programme is launched, the license compliance Software is run. The Software checks to

US 2004/O143746A1

determine whether a client data module is found and cor rectly signed at block 1 of FIG. 2-A. This is to ensure that the client data module is still installed on the same computer as was the case when the Software was previously run. The client data module is signed by the license compliance Software. The Signature algorithm uses a combination of the activation code, identification numbers of Selected hardware components of the user's computer and other data to create the Signature used to Sign the client data module. The Signature is verified and updated every time the client data module is accessed to ensure there have been no attempts to modify the client data module to circumvent the license compliance Software and System. 0144. The license compliance software then reads the activation code and validation code Stored in the client data module at block 1 of FIG. 2-A. An attempt is made to connect the license compliance Software to the Secure Server database by determining whether or not there is an Internet, computer network or other connection at block 2 of FIG. 2-A.

0145. In the preferred embodiment, the license compli ance Software will determine whether an Internet connec tion, computer network connection or other connection to the secure server exists (block 2 of FIG.2-A). If there is no Internet connection, computer network connection or other connection, the Software programme may revert to partial functionality (Such as a demonstration mode) or deny access to a user (block 4 of FIG. 2-A.) 0146 Alternatively, the user may be provided with a random or fixed and pre-determined number of times he or She can access and use the Software before the user must connect to the Secure Server and validate the Software programme. This is described more fully below in Optional Embodiment for Validation.

0147 If the user's computer is connected to the Internet, computer network or other connection (block 5 of FIG.2-A) a connection is made between the license compliance Soft ware and the Secure Server database record that corresponds to the activation code.

0148). If rejection lock-out is on (block 8 of FIG. 2-A) and the rejection cooling period is not finished (block 9 of FIG. 2-A) the user is provided with a message indicating that the System has locked out the user until the rejection cooling period has expired (block 11 of FIG. 2-A). No validation is allowed within that rejection cooling period. The Software then quits without Successful validation, or is allowed to run but with reduced functionality (block 12 of FIG. 2-A). If the rejection lock-out is on and the cooling period is finished, the rejection counter is reset, the rejection lock-out is Set to off and the user is allowed to continue the validation process (block 14 of FIG. 2-A). 0149 Rejection lock-out being on means that a user (that is, a particular IP address) has unsuccessfully attempted to activate or re-activate the Software too many times and that a rejection cooling period is in effect before the Software can be validated. The user is also prevented from using the Software until that cooling-off period has expired and the Software programme will not function, or functions with reduced functionality.

0150. If the rejection lock-out is off (block 7a), a search is performed for the activation code in the Secure Server

Jul. 22, 2004

database record at block 15 of FIG. 2-A. If the activation code is not found, the rejection counter is incremented by one at block 18 of FIG. 2-A, rejection lock out is set on with a timestamp if the rejection limit has been reached, and the Software reverts to its demonstration mode or does not function, as provided in block 19 of FIG. 2-A.

0151. If the activation code is found in the secure server database at block 15, a determination is made by the Secure server Software at block 20 of whether a validation code is present in the Secure Server database record for that activa tion code. If not, the Software goes to the re-activation process at block 22 of FIG. 2-A as discussed above with respect to FIG.3. If there is a validation code in the database record (block 23) a determination is made at block 24 of FIG.2-B of whether the validation code stored in the Secure Server database matches that Stored in the license compli ance Software. If not, the Software goes to the re-activation process at block 26 of FIG.2-B and as discussed above with respect to FIG. 3.

0152) If there is a match of the validation code in the Secure Server database record and the license compliance software (block 24 of FIG. 2-B), the secure server software creates a new validation code for that activation code and Sends it to the license compliance Software by means of encrypted communication where it is Stored in the signed client data module which is Stored in the user's computer in an encrypted manner (block 28 of FIG. 2-B) and which remains inaccessible by the user. The newly created valida tion code is also stored in the Secure Server database record to replace the previous validation code for that activation code.

0153. Once a new validation code is created at block 28 of FIG. 2-B, the server communicating with the software is authenticated by means of an authentication code. The encrypted authentication code is Sent from the Secure Server to the Software programme by the client interface module (block 29). The authentication code is designed to ensure that the user's computer is connected to the authorized Secure server (i.e. the server operated by the developer of the license compliance Software or the developer of the Soft ware) and validates the communication between that Secure Server and the user's computer.

0154 When the secure server sends the activation code and the related authentication code to the license compliance Software embedded in the Software programme, the Software will run the authentication code algorithm and re-generate an internal authentication code, at block 30 of FIG.2-B. The license compliance Software will then test to match the license compliance Software generated authentication code with the authentication code downloaded from the Secure server, at block 30.

O155 If there is no match, the rejection counter is incre mented by one at block 32 of FIG. 2-B and the software either does not function or reverts to partial functionality, such as a demonstration mode (block 33). If the rejection counter reaches the predetermined limit, rejection lock-out is set on (block 32). 0156 If there is a match, the software programme has then been Successfully validated, the client data module is updated and the Software programme may be used by the authorized user (block 35 of FIG. 2-B).

US 2004/O143746A1

O157) Ifat any stage between when the computer network or other connection is established with the Secure Server and when the authentication code is matched at block 30 of FIG. 2-B, the Server connection is lost or validation fails for any other reason, the Software is not launched, the rejection counter is increased by one and the license compliance Software on the user's computer returns to the initial Vali dation stage at block 1 of FIG. 2-A. Alternatively, the Software is launched with reduced functionality Such as in a demonstration mode, as provided at block 12 of FIG. 2-A. 0158 Optional Embodiment of Validation 0159. Because the user's computer may not always be accessible to the Internet or other computer network or connection to enable activation or validation of the Software programme by linking the license compliance Software with the Secure Server, it is Sometimes advantageous to permit a user to access the Software programme a random or a fixed and predetermined number of times before requiring the user to connect to the computer network (e.g. the Internet) or other connection to activate or validate the Software pro gramme. It should be noted that in the most Secure embodi ment of the present invention, users will not have the option of running the Software programme without first connecting to the Secure Server and validating the Software programme. Permitting users to run the Software, even for a limited number of times, without this validation may provide unau thorized users with an opportunity to attempt to hack through the Security features, particularly as regards the client data module and client interface module both of which are Stored on the user's computer. 0160 Referring to block 2 of FIG. 2-A, if there is no connection to the Secure Server, the license compliance Software determines whether the validation runs counter has reached the validation runs limit at block 36 of FIG. 2-C. The validation runs limit is pre-set by the software developer as the maximum number of times the Software can be run with full functionality until validation is required. The validation runs counter is a Sub-routine of the license compliance Software which keeps track of the number of times the Software programme has been run without Vali dation. If the validation runs counter has not reached the validation runs limit (block 36 of FIG. 2-C), the validation runs counter is incremented by 1 (block 38 of FIG.2-C) and the software is permitted to function at block 39 of FIG. 2-C.

0.161 If the validation runs counter has reached the validation runs limit at block 36 of FIG. 2-C, the user is asked to connect to the Internet at block 41 of FIG. 2-C. If there is no Internet connection, computer network connec tion or other connection (block 43), the software is either not permitted to function, or reverts to limited functionality, Such as a demonstration mode, at block 44 of FIG. 2-C. 0162) If there is a computer network or other connection with the secure server (block 42 of FIG. 2-C) then the user is allowed to continue the validation process at block 6 of FIG. 2-A.

0163. It should be noted that, other than the activation runs counter and the validation runs counter which are asSociated with the license compliance Software Stored in the client's computer, all other counters are Stored in the remotely located Secure Server database including the rejec tion limit and the re-activation limit.

Jul. 22, 2004

0164. Developer Operation 0.165 FIG. 5 depicts a flowchart describing a preferred embodiment for developerS to upload activation codes and authentication codes to the Secure Server. The developer is permitted to access the Secure Server, for the purpose of providing activation codes and authentication codes to be used in Securing use and access to its Software products. The developer logs onto the secure server at block 1 of FIG. 5 using appropriate password codes. The developer then chooses to enter configuration information respecting its Software product or to upload unique “upload codes' for a particular Software product. 0166 The developer uploads activation codes and authentication codes which it has previously generated as described above, at block 4 of FIG. 5. The server Software then checks at block 5 of FIG. 5 to ensure that the activation codes are valid (that is, that they are unique for each product identification of that developer). If they are not valid an error message can be sent back to the developer So that the error can be corrected (block 6 of FIG. 5). If they are valid the upload is completed and is confirmed to the developer by e-mail at block 7 of FIG. 5.

0.167 Having thus described preferred embodiments of a computer Software license compliance System and method, it will be apparent by those skilled in the art how certain advantages of the present invention have been achieved. It should also be appreciated that various modifications, adap tations, and alternative embodiments thereof may be made within the Scope and Spirit of the present invention. For example, a computer Software license compliance System has been illustrated, but it should be apparent that the inventive concepts described above would be equally appli cable to an endless array of applications including music compact discs and videos, Digital Video Disks (DVDs) and other products Subject to a license agreement between the user of the product and the developer of the product. Moreover, the words used in this specification to describe the invention and its various embodiments are to be under stood not only in the Sense of their commonly defined meanings, but to include by Special definition in this speci fication Structure, material or acts beyond the Scope of the commonly defined meanings. Thus, if an element can be understood in the context of this specification as including more than one meaning, then its use in a claim must be understood as being generic to all possible meanings Sup ported by the specification and by the word itself. The definitions of the words or elements of the following claims are, therefore, defined in this specification to include not only the combination of elements which are literally set forth, but all equivalent Structure, material or acts for performing Substantially the same function in Substantially the same way to obtain Substantially the Same result. The described embodiments are to be considered illustrative rather than restrictive. The invention is further defined by the following claims.

1. A method of limiting multiple access to a Software program comprising the Steps of:

(a) associating license compliance Software with a Soft ware program to be Secured from multiple access, the license compliance Software Selectively preventing access to the Software program or to a part of the Software program when installed on a user's computer;

US 2004/O143746A1

(b) upon a user wishing to access the Software program, by means of the user's computer: (i) accessing a remotely located database by means of

a computer network or other connection to obtain a current unique validation code associated with that Specific copy of the Software program; and

(ii) comparing the current unique validation code obtained from the database to a unique validation code associated with the user's Software program on the user's computer;

(c) if the current unique validation code obtained from the database corresponds to the current unique validation code associated with the user's Software program: (1) permitting the user to use the Software program; (2) generating a new unique validation code associated

with the Specific copy of the Software program; and

(3) updating the database with the new unique valida tion code and providing the new unique validation code to the user's computer to be Stored in associated with the user's Software program, the new unique validation code replacing the current unique valida tion code, the replaced unique validation code no longer functioning to provide user access to the Software program.

2. The method of claim 1 wherein the database is asso ciated with a computer System comprising server Software which generates the new unique validation code, provides it for Storage on the user's computer and updates the database, all as provided at Steps (c)(2) and (c)(3) of claim 1.

3. The method of claim 1 further comprising the following Steps after step (a) of claim 1:

(a) establishing a unique activation code, storing it on the Secure Server and providing it to an authorized user of the Software program concurrent with the Sale or licens ing of the Software to the authorized user;

(b) when the authorized user first installs the software requesting input of the activation code; and

(c) upon input of the activation code, comparing it to the activation code Stored on the Secure Server and if they match advancing to step (b) of claim 1.

4. The method of claim 3 further comprising the following Steps after step (c) of claim 3:

(a) requesting user input of a password; (b) storing the password on the Secure server; (c) each time a user re-installs the Software program and upon access of the Software program by a user, request ing input of the password and the unique activation code; and

(d) upon input of the password and the unique activation code advancing to step (b) of claim 1.

5. The method of claim 1 further comprising the following step before step (b)(i) of claim 1:

(a) permitting a user to use the Software program or the part of the Software program a pre-determined number of times before requiring the user to proceed to Step (b)(i).

Jul. 22, 2004

6. The method of claim 3 further comprising the following Step at Step (b) of claim 3:

(a) permitting a user to use the Software program or the part of the Software program a pre-determined number of times before requiring the user to proceed to step (c) of claim 3.

7. The method of claim 1 wherein at step (c)(3) of claim 1 the new unique validation code is Stored on the user's computer as a part of the Software program or license compliance Software.

8. The method of claim 3 wherein at step (a) of claim 3 the unique activation code is provided to the user by means of email.

9. The method of claim 1 wherein at step (c)(3) of claim 1 the new unique validation code is provided to the user by means of a connection over a computer network or other connection.

10. The method of claim 3 wherein after step (c) of claim 3 further comprising the Step of

(a) at Step (b)(i) of claim 1, if there is no unique validation code in the remotely located database directing the user to step (b) of claim 3.

11. The method of claim 1 wherein each time a user accesses the remotely located database and before permit ting the user to use the Software program at Step (c)(1) of claim 1, Verifying that the Server associated with the data base is authorized to provide the current unique validation code to the license compliance software on a user's com puter.

12. The method of claim 11 wherein the step of verifying that the Server associated with the database is authorized to provide the current unique validation code to the license compliance Software on user's computer is undertaken com prising the Steps of

(a) generating a unique authentication code by means of a computer algorithm at the Secure Server containing the remotely located database;

(b) transmitting the unique authentication code to the license compliance Software on the user's computer;

(c) generating a unique authentication code by means of the same computer algorithm at the user's computer;

(d) by means of the license compliance Software on the user's computer, comparing the unique authentication code received from the Secure Server to the unique authentication code generated by means of the com puter algorithm at the user's computer; and

(e) if the two authentication codes match, permitting the user to use the Software program at Step (c)(1) of claim 1.

13. License compliance Software for Securing a Software program from unauthorized use, comprising:

(a) means for controlling access to a Software program to be Secured;

(b) means for determining a unique code element and asSociating it with the Software program;

(c) means for receiving a unique code element stored remotely from the user's computer on activation of the Software program for use by the user;

US 2004/O143746A1

(d) means for determining whether the unique code ele ment Stored remotely from the user's computer matches the unique code element associated with the Software;

(e) means for permitting access to the Software program by the user if the means for determining determines that the unique code element Stored remotely from the user's computer matches the unique code element asSociated with the Software;

(f) means for establishing a new unique code element, different from any previous unique code element attrib uted to the Software program, to replace the code element associated with the Software and Stored remotely from the user's computer if the means for determining determines that the unique code element Stored remotely from the user's computer matches the unique code element associated with the Software, and

(g) means for associating the new unique code element with the Software program and Storing it remotely from the user's computer.

14. The Software as described in claim 13 wherein the unique code element Stored remotely from the user's com puter is accessible to the user's computer through a com puter network or other connection.

15. The Software as described in claim 14 further com prising means for Storing the unique code element remotely from the user's computer Said means for Storing being accessible to the user's computer through a computer net work or other connection.

13 Jul. 22, 2004

16. The Software as described in claim 15 further com prising means for encrypting communication between the means for Storing and the user's computer to prevent unau thorised access to the unique code element.

17. The Software as described in claim 15 further com prising means for verifying that the means for Storage is authorized to provide the unique code element to the user through the computer network or other connection.

18. The Software as described in claim 17 wherein the means for Verifying comprises:

(a) means, associated with the means for Storing, for generating a unique authentication code by means of a computer algorithm;

(b) means for transmitting the unique authentication code to the user's computer;

(c) means, associated with the user's computer, for gen erating a unique authentication code by means of the Same computer algorithm;

(d) means for comparing the unique authentication code transmitted to the user's computer at Step (b) of claim 18 with the unique authentication code generated at Step (c) of claim 18; and

(e) means for permitting the user to use the Software if the two authentication codes match.