Uniloc USA, Inc. et al v. NATIONAL INSTRUMENTS CORP. et al

Filing 257

CLAIM CONSTRUCTION BRIEF filed by Uniloc Singapore Private Limited, Uniloc USA, Inc.. (Attachments: # 1 Exhibit Declaration of Steven W. Hartsell, # 2 Exhibit A, # 3 Exhibit B, # 4 Exhibit C, # 5 Exhibit D1, # 6 Exhibit D2, # 7 Exhibit D3, # 8 Exhibit D4, # 9 Exhibit D5, # 10 Exhibit D6, # 11 Exhibit D7, part 1, # 12 Exhibit D7, part 2, # 13 Exhibit D8, # 14 Exhibit D9, # 15 Exhibit E, # 16 Exhibit F)(Bumgardner, Barry) (Additional attachment(s) added on 9/15/2011: # 17 Exhibit E Searchable, # 18 Exhibit F Searchable) (mjc, ).

Download PDF
111111111111111111111111111111111111111111111111111111111111111111111111111 US005490216A United States Patent [19] [11] Richardson, III [45] [54] Inventor: 5,386,468 5,388,211 5,390,297 SYSTEM FOR SOFTWARE REGISTRATION [75] Frederic B. Richardson, III, Brookvale, Australia Assignee: Uni10c Private Limited, Singapore [21] Appl. No.: 124,718 [22] Filed: [56] Feb. 6, 1996 1/1995 Akiyama et aI. ........................... 38014 2/1995 Hornbuckle ................................. 38014 2/1995 Barber et aI ................................ 38014 W09209160 5/1992 WIPO. Primary Examiner-David C. Cain Attorney, Agent, or Firm-Knobbe, Martens, Olson & Bear Sep. 21, 1993 [57] Foreign Application Priority Data Sep. 21, 1992 [AU] Oct. 26, 1992 [AU] [51] [52] [58] 5,490,216 FOREIGN PATENT DOCUMENTS [73] [30] Patent Number: Date of Patent: Australia ................................. PL4842 Australia ................................. PL5524 Int. Cl. 6 ........................................................ H04L 9/00 U.S. Cl. ................................................... 380/4; 380/23 Field of Search ............................... 380/3, 4, 23, 24, 380/25 References Cited u.s. PATENT DOCUMENTS 4,654,799 3/1987 Ogaki et aL . 4,688,169 8/1987 Joshi. 4,796,220 1/1989 Wolfe. 4,982,430 1/1991 Frezza et aI .. 4,999,806 3/1991 Chernow et aI ............................ 5,191,611 3/1993 Lang ........................................... 5,199,066 3/1993 Logan ......................................... 5,222,133 6/1993 Chou et aI .................................. 5,239,166 8/1993 Graves. 5,239,648 8/1993 Nukui .......................................... 5,287,408 2/1994 Samson ....................................... 5,291,598 3/1994 Grundy. 5,313,637 5/1994 Rose ............................................ 5,319,705 7/1994 Halter et aI ................................. 5,337,357 8/1994 Chou et aI. ................................. 5,343,526 8/1994 Lassers ........................................ 5,349,643 9/1994 Cox et aI .................................... 5,371,792 12/1994 Asai et aI. .. ................................ 5,379,433 111995 Yamagishi ................................... 13 38014 38014 38014 38014 38014 380/4 38014 38014 38014 38014 38014 38014 ABSTRACT A registration system allows digital data or software to run in a use mode on a platform if and only if an appropriate licensing procedure has been followed. Preferably, the system detects when part of the platform on which the digital data has been loaded has changed in part or in entirety, as compared with the platform parameters, when the software or digital data to be protected was last booted or run. The system relies on a portion of digital data or code which is integral to the digital data to be protected by the system. This integral portion is termed the code portion and may include an algorithm that generates a registration number unique to an intending licensee of the digital data based on information supplied by the licensee which characterizes the licensee. The algorithm in the code portion is duplicated at a remote location on a platform under the control of the licensor or its agents, and communication between the intending licensee and the licensor or its agent is required so that a matching registration number can be generated at the remote location for subsequent communication to the intending licensee as a permit to licensed operation of the digital data in a use mode. The code portion can be identical for all copies of the digital data. The algorithm provides a registration number which can be "unique" if the details provided by the intending licenses upon which the algorithm relies when executed upon the platform are themselves "unique". 20 Claims, 12 Drawing Sheets 380/4 [2J 15 10 u.s. Patent Feb. 6, 1996 Sheet 1 of 12 5,490,216 ......... u.s. Patent Feb. 6, 1996 NO 5,490,216 Sheet 2 of 12 IS THIS A NEW COpy ? (INTERNAL CHECKING BY APPLICATION) GO TO FIG. 30 OR 3b DEMO .------_ _...L..-_ _- , B DISPLAY PRODUCT INFORMATION BOX: e.g .. SOFTWARE PUBLISHER DETAILS DEMO MODE OF APPLICATION: NO SAVE OR PRINT CAPABILITY CANCEL AGREE B1 LICENSE INFO. DIALOG BOX: DETAILS OF NEW LICENSING AGREEMENT CANCEL CONTINUE FIG.2a GO TO FIG. 2b u.s. Patent Feb. 6, 1996 Sheet 3 of 12 , 5,490,216 FROM FIG. 20 FIG.2b A SERIAL NO. IS GENERATED BY THE APPLICATION USING INFORMATION FROM THE USER ENVIRONMENT (E.G. TIME, MACHINE TYPE, LAST MODIFICATION DATE) SERIAL NO. IS ENCRYPTED, REARRANGED AND PRESENTED AS A NUMBER IN THE SERIAL NO. FIELD OF THE REGISTRATION DIALOG BOX. REGISTRATION DIALOG BOX: USER MUST ENTER DETAILS IN THE SPECIFIED FIELDS IN ORDER TO REGISTER THE PRODUCT INCLUDING: NAME, COMPANY, ADDRESS, CONTACT NUMBER (PHONE AND CREDIT CARD DETAILS OR CORPORATE ACCOUNT NO.) - USER CALLS THE NEAREST ADMINISTRATION CENTER (FROM CONTACT DIALOG BOX) AND COMMUNICATES THE REGISTRATION DETAILS AS WELL AS THE SERIAL NO. GENERATED BY APPLICATION PAYMENT DETAILS CONFIRMED (E.G. CREDIT CARD) PUBLISHER USES REGISTRATION DETAILS IN UNLOCKING APPLICATION REGISTRATION NO. GENERATED FROM USER DETAILS ADDED TO SERIAL NO. IS ENCRYPTED AND RE-ARRANGED '-----~~: USER GIVEN REGISTRATION NO. t GO TO FIG. 2c u.s. Patent Feb. 6, 1996 5,490,216 Sheet 4 of 12 FROM FIG. 2b FIG.2c USER TYPES IN REGISTRATION NUMBER APPLICATION USES UNLOCKING ALGORITHM TO CHECK VALIDITY NO VALID YES ? ALERT DIALOG BOX: USER TOLD THE REGISTRATION NO. IS INCORRECT AND ASKED TO CALL THE OPERATOR FOR ASSISTANCE IN CHECKING REGISTRATION DETAILS. USER GIVEN 3 ATTEMPTS TO REGISTER AFTER WHICH THE PROGRAM AUTOMATICALLY REVERTS TO DEMO VERSION RUN DEMO VERSION , RUN FULL VERSION u.s. Patent 5,490,216 Sheet 5 of 12 Feb. 6, 1996 FIG. 3 DO REGISTRA TlON .-----_--:N~0=---i (KEY) DETAILS EXIST ~YE=S~_ IN APPLICATION ? LOOK FOR DUPLICATE NO KEY FILE STORED ~-------{ ELSEWHERE ON MACHINE DO REGISTRATION (KEY) DETAILS MATCH ENVIRONMENT ? YES YES NO REMOVE KEY NO INFORMATION ~~ IF IT EXISTS COpy DUPLICATE KEY FILE INFORMATION TO APPLICATION DO REGISTRATION (KEY) DETAILS MATCH ENVIRONMENT ? RUN DEMO VERSION YES RUN FULL VERSION u.s. Patent Feb. 6, 1996 5,490,216 Sheet 6 of 12 /220 { NAME: ORGANIZATION ADDRESS CITY ZIP/POST CODE COUNTRY I CREDIT CARD /ORDER# ~I===================; EXPIRE DATE L-I_ _ _ _ _ _ __ LAST USER NO. SERIAL NO. PRODUCT NO. YOUR USER NO. 1~==============~~~ r I r REGISTRATION NO. FIG. 4 I 1"" __j-22 -50 21 u.s. Patent 5,490,216 Sheet 7 of 12 Feb. 6, 1996 37 A. r 39 38 .A. r y .A. " , 34 31 III 33 ENVIRONMENT/PLATFORM 30 J.L P ,---_ _ _ _--. 32 IJ a:m CIDJ I:IJ:DJ ~---IIJIJOOOOOOIJIJCJ ClIJOOOIJIJIJOOCl OOOOOOIJOOCl o 01 '0 D 35 FIG. 5 0000 OIJOO 0000 OIJIJO u.s. Patent Feb. 6, 1996 Sheet 8 of 12 52 56' 53 DAC TO TV/HI FI FIG. 6 5,490,216 u.s. Patent Sheet 9 of 12 Feb. 6, 1996 5,490,216 PLAY FIRST PIECE OF ENCODED INFORMATION IS BROUGHT INTO CONTROLLER INCLUDING A PRODUCT IDENTIFIER. YES DEMO }--~ NO ALLOWS ACCESS TO DEMONSTRATION RECORDINGS THAT ARE NOT ENCRYPTED. REGISTRATION DATA ENTRY eg: PAYMENT DETAILS AND PERSONAL DATA COMMUNICATION WITH REGISTRATION SERVICE PROVIDOR SUPPLY OF REGISTRATION NUMBER TO CUSTOMER STORE REGISTRATION NUMBER IN WRITABLE MEMORY OF LOCAL CONTROLLER AND WRITABLE STORAGE AREA OF SMART CARD. FIG. 7 ALLOWS ACCESS TO DAC AND DECRYPTION ENGINE u.s. Patent ,------------- ,-------------1 I I I REMOTE REGISTRATION DATABASE LOCATION I I I I LOCAL LICENSEE LOCATION 1 I INTERNAL I 39", BOND ,- 38 6/", I : USER PROGRAM I 5,490,216 Sheet 10 of 12 Feb. 6, 1996 I I I I I I I i I I I I I REGISTRATION: DATABASE I PROGRAM I IALGI I I ,-62 I I I I I I I I I I I PROGRAM I SUBSET I I I I I I I I I I I t 53 t PLATFORM I~--------------~ I I I I LOCAL LICENSEE UNIQUE 1.0. GENERATOR (DEMO) 0 ..... 0 ......---- --- MODE SWITCHER I ~ I 67 REMOTE LICENSEE UNIQUE 1.0. I I I I I I I I I I I I I I I I GENERATOR 66 I FULL PROGRAM I I I 70 I I I PLATFORM UNIQUE 1.0 GENERATOR I I : I L _____________ -.J FIG. 8 I I L _____________ _ u.s. Patent Feb. 6, 1996 VARIABLE KEY PORTION 72 [ I' 1 if 5,490,216 Sheet 11 of 12 SYSTEM INFORMATION 71 50 I I I '''---I-----"11/ 1 SERIAL NO. 61 + r-----------./ '--_ _ _ _ _ _ _ _ _ _......1 PRODUCT NAME 65 + / '--_____________.... 1 CUSTOMER INFORMATION 22 + / '--_ _ _ _ _ _ _ _ _ _.... 1 PREVIOUS USER IDENTIFICATION 6'6' / 1 "---_ _ _ _ _ _ _ _...1. FIG. 9 REGISTRATION NUMBER u.s. Patent Feb. 6, 1996 Sheet 12 of 12 5,490,216 x >- i'I I I r------..., 1 'I I~L __ 1 1 1 1 ,/ I // I '" L.. ______ ..J ). -------1 r-~I~~------~ I I I r- ,I 1- " ..... ' ~I ~ I 0-: ~ ~ I I I I I I ,=> ~ : I :r ! ~~ I ~ L _ _ _ _ _ _ _ _ _ -1 5,490,216 1 2 closes a computer software security system which relies for its security on a "machine identification code unique to the BACKGROUND OF THE INVENTION machine" upon which the software to be protected is to be run. Again, the disclosure is limited to identification of the 1. Field of the Invention 5 platform and there is no suggestion or contemplation of This invention relates to improvements in systems for linking platform identification with unique user identificasoftware registration and, more particularly, to improvetion. ments in arrangements where software is transferable by Also this arrangement does not allow the flexibility of media such as magnetic disks, CD ROMS and the like. transfer of copies of the program from platform to platform 2. Description of the Related Art 10 which can be run in a demonstration mode. Much commercially available software is provided at time It is an object of the present invention to address or reduce of purchase (or license) on a magnetic media, typically a the above-mentioned disadvantages. floppy disk. Frequently the only security feature attached to Definitions the software is a simple registration number stored on the Throughout this specification the term "software" is to be media. This registration number identifies that particular 15 interpreted broadly so as to include all forms of digital data copy of the software and it is often required at the time of which are executable on a platform (as to be later defined). installation of the software onto any given computer that the The digital data comprising the software can, for example, installer must provide the registration number independently be code comprising a word processing program adapted to to the installation routines. run on a PC or the like. The software can also, for example, However, such simple security arrangements for the dis- 20 be digital data stored on a CD ROM adapted for playback as music on a CD ROM audio drive. The digital data can be tribution of software on media suffer from at lest two disadvantages: (1) each copy of the software made on any displayable information or information which is otherwise usable by a licensed user. given media at the time of manufacture must include an Throughout this specification the term "platform" denotes individual, unique number, programmed into the media, and (2) this arrangement does not prevent copying of the soft- 25 an environment to be associated with a computing device such as a microprocessor or other data processing device ware, once installed on any given computer, to another computer by means of file transfer (as opposed to reinstalwhich permits execution of the digital data (to which referlation). ence has previously been made in relation to the term "software") whereby the computer can perform functions on WO 92/09,160 to Tan Systems Corporation discloses a registration system which is relatively sophisticated which 30 input and output devices associated therewith. In some circumstances, the "software" or digital data may relies for its security on a requirement that an intending itself be the operating system environment. Typically, but by software licensee must obtain from a remote location by file no means exclusively, examples of operating system envitransfer significant and essential portions of the program ronments include the MicroSoft DOS operating system, the which the licensee desires to execute. The arrangement disclosed in WO 92109,160 suffers from a number of defi- 35 IBM OS/2 operating system or the Macintosh System 7 environment. In the degenerate case of microcontrollers ciencies including: operating from ROM, the operating system environment a. the shell program which the intending licensee initially may be the microcode of the microcontroller which enables executes requires a unique identity embodied within the the microcontroller to execute machine code. shell prior to distribution of the shell program; In this specification, "use mode" refers to use of the 40 b. the shell program is not, itself, a functional programdigital data or software by its execution on a platform so as that is, it does not include all of the code which the to fulfill the seller' s/licensor' s obligations in relation to the intending licensee wishes to execute. That program sale or license of the right to execute the digital data or must be obtained remotely with all the delays, inconsoftware in the use mode. The use mode is to be distinveniences and possibilities of corruption during transit 45 guished from what might generally be termed unlicensed that that entails; modes of operation (which is not to say unauthorized modes c. the prior art system appears to require and indeed, rely of operation) as typified by the demonstration modes later on, encryption to ensure that the program material described in this specification. which is communicated from a remote location is not intercepted for utilization in an unauthorized manner; 50 SUMMARY OF THE INVENTION and In broad terms, the system according to the invention is d. it is unclear whether the system can accommodate and designed and adapted to allow digital data or software to run react appropriately to the situation where the program, in a use mode on a platform if and only if an appropriate once registered, is transferred in its entirety from one platform to another so as to avoid the requirement for 55 licensing procedure has been followed. In particular forms, the system includes means for detecting when parts of the payment of a further registration fee. platform on which the digital data has been loaded has U.S. Pat. No. 4,796,220, assigned to Pride Software changed in part or in entirety as compared with the platform Development Corporation, discloses a system for unique parameters when the software or digital data to be protected recognition of a platform on which licensed software is to be executed. However, U.S. Pat. No. 4,796,220 does not con- 60 was for example last booted or run or validly registered. The system relies on digital data or code which forms part template or disclose utilization of information which is of the digital data to be protected by the system. This portion unique to the user or intended licensee as part of the of the digital data which preferably is integral to the digital registration process which is to be distinguished from idendata to be protected has been termed the "code portion" tification of the platform upon which the software is pro65 elsewhere in this specification. The code portion includes an posed to be run. algorithm adapted to generate a registration number which is U.S. Pat. No. 4,688,169 to Joshi broadly discloses the same principles as U.S. Pat. No. 4,796,220 in that it disunique to an intending licensee of the digital data based on SYSTEM FOR SOFTWARE REGISTRATION 5,490,216 3 information supplied by the licensee which characterizes the licensee. The algorithm in the code portion is duplicated at a remote location on a platform under the control of the licensor or its agents and communication between the intending licensee and the licensor or its agent is required so that a matching registration number can be generated at the remote location for subsequent communication to the intending licensee as a permit to licensed operation of the digital data in a use mode. Preferably, the code portion is integral with the digital data and can be identical for all copies of the digital data. It is the algorithm embedded within the code portion (and which is duplicated at the remote location) which provides a registration number which can be "unique" if the information provided by the intending licensee upon which the algorithm relies when executed upon the platform is itself "unique." In any event, in particular preferred forms, a serial number (see further on) is included in the registration number generation algorithm which introduces an additional level of uniqueness into the registration number calculation process. Accordingly, in one broad form of the invention there is provided a system for licensing use of digital data in a use mode, the digital data executable on a platform, the system including local licensee unique ID generating means and remote licensee unique ID generating means, the system further including mode switching means operable on the platform which permits use of the digital data in the use mode on the platform only if a licensee unique ID generated by the local licensee unique ID generating means has matched a licensee unique ID generated by the remote licensee unique ID generating means. Preferably, the system further includes platform unique ID generating means, wherein the mode switching means will permit the digital data to run in the use mode in subsequent execution of the digital data on the platform only if the platform unique ID has not changed. Preferably, the mode switching means permits operation of the digital data in the use mode in subsequent execution of the digital data only if the licensee unique ID generated by the local licensee unique ID generating means has not changed. Preferably, the mode switching means includes part of the digital data. Preferably, the remote licensee unique ID generating means comprises software which includes the algorithm utilized by the local licensee unique ID generating means to produce the licensee unique ID. Preferably, the information utilized by the local licensee unique ID generating means to produce the licensee unique ID comprises prospective licensee credit card number, date of birth and full name and address. Preferably, the platform unique ID generating means forms part of the digital data. Preferably, the platform unique ID generating means utilizes hard disk information and/or other computer hardware or firmware information to determine the platform unique ID. Preferably, the platform comprises a computer operating system environment. Preferably, the digital data comprises a software program adapted to run under the operating system environment. In a further broad form of the invention, there is provided a security routine or registration means attachable to software to be protected, the registration means generating a 4 security key from information input to the software which uniquely identifies an intended registered user of the software on a computer on which the software is to be installed. Preferably, the security key is generated by a registration 5 number algorithm. Preferably, the registration number algorithm combines information entered by a prospective registered user unique to that user with a serial number generated from information provided by the environment in which the software to be 10 protected is to run (e.g., system clock, last modify date, user name). Preferably, the registration means is replicated at a registration authority and used for the purposes of checking by 15 the registration authority that the information unique to the user is correctly entered at the time that the security key is generated by the registration means. Preferably, the registration means checks at the time of boot of the software as to whether it is a first boot of the 20 software to be protected or a subsequent boot. If a subsequent boot is detected, then environment and user details are compared to determine whether the program reverts to a demonstration mode and a new user registration procedure is to commence, or a full version run. Preferably, the environment details comprise one or more 25 of disc volume name, user name or computer, initialization date of hard disk, hardware identifier (e.g., ROM checksum) or other elements which are generally not user-configurable on the platform. 30 In a further broad form of the invention, there is provided a method of control of distribution of software, the method comprising providing mode-switching means associated with the software adapted to switch the software between a fully enabled mode and a partly enabled or demonstration 35 mode; the method further comprising providing registration key generating means adapted to generate an enabling key which is a function of information unique to an intending user of the software; the mode-switching means switching the software into fully enabled mode only if an enabling key 40 provided to the mode-switching means by the intending user at the time of registration of the software has matched identically with the registration key generated by the registration key generating means. Preferably, the enabling key is communicated to the 45 intending user at the time of registration of the software by a third party operating a duplicate copy of the registration key generating means. In yet a further broad form of the invention, there is provided digital data incorporating registration code, the 50 digital data executable on a platform; the registration code comprising a portion of the digital data executable on the platform so as to switch the digital data between a demonstration mode and a use mode. Preferably, the registration code when executed on the 55 platform provides local licensee unique ID generating means whereby the digital data can be switched from the demonstration mode to the use mode by execution of the registration code only if a licensee unique ID generated by the local 60 licensee unique ID generating means has matched a licensee unique ID generated by remote licensee unique ID generating means. 65 BRIEF DESCRIPTION OF THE DRAWINGS Embodiments of the invention will now be described with reference to the accompanying drawings wherein: 5,490,216 5 FIG. 1 is a schematic diagram of the relationship and interaction between an intending registered user and a registration authority of software on media secured according to a first embodiment of the invention; FIGS. 2a, 2b and 2c are segments of a flow chart of the procedure to be followed during registration of software by a user according to a first embodiment of the invention; FIG. 3 is a flow chart of alternative boot processes according to a second embodiment of the invention; FIG. 4 is a personal information dialogue box relating to the procedure of FIGS. 2a, 2b, 2c in accordance with a third embodiment; FIG. 5 is a schematic diagram of a system according to a fourth embodiment of the invention; FIG. 6 is an implementation of the fourth embodiment of FIG. 5 in relation to a CD ROM drive; FIG. 7 is a logic flow chart in relation to the decoder box of FIG. 6; FIG. 8 is a block diagram of a generalized system according to a fifth embodiment of the invention; FIG. 9 is a block diagram indicating one particular example of generation of a registration number for the system of FIG. 8; and FIG. 10 is a schematic diagram of a sixth embodiment comprising a particular example of the generalized system of FIG. 8. 6 The algorithm in the code portion is duplicated at a remote location on a platform 67 under the control of the licensor or its agents, and communication between the intending licensee and the licensor or its agent is required so that a matching registration number or enabling key can be gen5 erated at the remote location for subsequent communication to the intending licensee as a permit to licensed operation of the digital data 39 in a use mode. Execution of the duplicated code portion on platform 67 10 comprises, in this instance, the remote licensee unique ID generating means. Mode switching means can comprise execution of the code portion which additionally performs a comparison of the locally and remotely generated registration numbers. Preferably, the code portion 38 is integral with the digital 15 data and can be identical for all copies of the digital data. It is the algorithm embedded within the code portion (and which is duplicated at the remote location) which provides a registration number which can be "unique" if the infor20 mation provided by the intending licensee upon which the algorithm relies when executed upon the platform is itself "unique". In any event, in particular preferred forms, a serial number (see further on) is included in the registration number 25 generation algorithm which introduces an additional level of uniqueness into the registration number calculation process. With particular reference to FIG. 1, a program comprising digital data protected according to a first embodiment of the invention is supplied recorded on a magnetic disk 10. Included as part of the software on that disk 10 is a 30 DETAILED DESCRIPTION OF THE registration and re-registration routine which executes PREFERRED EMBODIMENT whenever the program protected by the arrangement of the first embodiment "boots". It is to be understood that, in its various embodiments, the With reference to FIG. 1 and FIGS. 2a, 2b and 2c, the present invention is for the protection of digital code/ software by control of permission to use the digital code/ 35 operation of the security routine will be described on the software. A hardware platform and a remote registration assumption that the program on the disk 10 protected by the registration routine has not been registered on the platform station implemented at least partially by means of electronic or is otherwise being loaded for the first time. hardware are required by the various embodiments. The code/software to be protected requires at least some The prospective new user 11 inserts disk 10 into the user adaption to be usable with the invention in its various 40 PC 12 so as to be read by PC 12. embodiments. The adaptation can be universal for all copies As part of the software installation procedure, the regisof the code/software to be protected. tration routine is activated causing a series of dialogue boxes to appear on the display 13 of the user PC 12. Having 45 checked to ensure that the software has not previously been First Embodiment registered on the PC 12, a dialogue box A (in FIG. 2a) is displayed which provides the user with a choice of either With reference to FIGS. 1 and 8, the system according to seeing a demonstration of the software (which typically has embodiments of the invention is designed and adapted to features such as save and/or print disabled) or alternatively allow digital data 39 or software to run in a use mode on a platform 31 if and only if an appropriate licensing procedure 50 an invitation to register ownership/licensee of the software (after which all features of the software are made available has been followed. In particular forms, the system includes to the user). means for detecting when parts of the platform 31 on which If the register option is selected or if the user cancels the the digital data 39 has been loaded has changed in part or in entirety as compared with the platform parameters when the demonstration in favor of registration, then a contact diasoftware or digital data to be protected was, for example, last 55 logue box B (in FIG. 2a) is presented on the display 13 booted or run or validly registered. which provides a list (stored on disk 10 as part of the registration routine) which provides for example, names and The system relies on digital data or code 38 which forms contact numbers of the software publishing company part of the digital data to be protected by the system. This together with other general product information. portion of the digital data, which preferably is integral to the digital data to be protected, has been termed the code portion 60 Following the user's indication of agreement during dis38 elsewhere in this specification. The code portion 38 play of license details (box Bl) to proceed to register, the user can contact the registration center after filling out the includes an algorithm adapted to generate a registration registration dialogue box C as detailed below. After selecting number 66 or local licensee unique ID or registration key which characterizes the licensee. In this instance, the local "continue", the registration routine begins the first step in the licensee unique ID generator which generates the registra- 65 generation of a security key which will be unique to the tion number comprises the execution of code 38 on current copy of the software and to certain features of the platform 31. environment in which it runs. 5,490,216 7 As shown in FIG. 2b, the first step in the generation of the security key comprises the generation of a serial number generated from the current time on the system and, in this example, the last modify date of the software and other information from the computer environment. The serial 5 number is encrypted and rearranged and then presented as a number in the registration dialogue box on the display 13. The registration dialogue box C (in FIG. 2b) prompts the user for details unique to that user (including, for example, name, company, address, state, contact number) together 10 with financial details for payment for the purpose of becoming a registered user of the software protected by the registration routine (for example Mastercard or corporate account number details). This information, unique to the user, is passed through a registration number algorithm 14 15 (represented symbolically in FIG. 1) which generates a registration number or security key from the information unique to the user together with the serial number previously generated. The registration number or security key is not made available to the user of the PC 12 by the PC 12. 20 An identical registration number algorithm 14 resides on the registration authority PC 15. As an integrlll part of the registration procedure, the prospective new user 11 communicates the information unique to the user which was entered by the user on the user PC 12, along with the serial number 25 generated by the user's algorithm, to the registration authority 16. The registration authority feeds this information into the registration authority PC 15 wherein the registration number algorithm 14 should produce an identical registration number or security key to that produced by the user PC 30 12 if the details communicated to the registration authority by the prospective new user 11 match with the details that have been entered on the user PC 12. Optionally, the user can communicate the information to the registration authority electronically, e.g., by fax or modem or tone phone. 35 As a final stage in registration (refer to FIG. 2d), the registration authority 16 provides the registration number generated by the registration authority PC 15 to the user 11. The user 11 enters the registration number into the user PC 12 where the registration routine checks to see whether the 40 entered registration number matches the calculated registration number. If the two match, then a valid registration has taken place and access is provided by the registration routine to a full operating version of the software protected by the registration routine. If there is no match and a preference file 45 (which stores the user details) does not exist then a dialogue box D (FIG. 2c) appears on the display 13 of user PC 12 providing the prospective new user 11 with the opportunity to check hislher details or switch to the demonstration version of the software protected by the registration routine. 50 Again, the registration authority PC 15 can provide to PC 12 the registration number which it generates by electronic means such as modem communication. It will be evident that it is not obvious to the prospective 55 new user 11 that the registration number which unlocks the full version of the software protected by the registration routine is, in fact, generated from an algorithm residing on the magnetic disk 10 and that it forms part of the software to which access is desired. 60 In this manner, the registration procedure outlined above ensures that exactly the same details entered by the prospective new user on hislher user PC 12 are those details recorded by the registration authority 16. It will also be evident that the procedure does not require each magnetic 65 disk 10 containing a copy of the software to be protected to have a unique registration number recorded on the disk at the 8 time of distribution of the disk. Each copy has exactly the same registration number algorithm located upon it. A unique registration number or "security key" is generated only at the time of registration from the details supplied by the prospective new user 11. The registration routine behaves generally as follows where any copy of the protected software boots. In this situation, the registration routine checks at the time of boot to see what registration details are present for that particular copy of the software. If no details are present, then it is assumed that the PC is booting from a newly distributed magnetic disk and registration is to occur for the first time. The registration procedure in that case is that followed in respect of FIGS. 2a, 2b and 2c. In the event that registration details are present, then the registration routine checks a number of parameters which are expected to be unique to the environment in which the software to be protected operates. In this embodiment, the parameters checked are hard disk volume name, user name, and computer name and user password and hard disc initialization date (not generally user configurable on the Apple Macintosh computer). The registration routine then checks these parameters against the corresponding details that it finds from the operating environment of the computer on which the software is running. If a designated combination of these details matches then it is assumed that a properly authorized and registered copy of the software is running and full access to the software is allowed. In this manner, it is quite in order for users to provide other users with copies of the software protected by the security routine. The security routine attached to the software to be protected determines from the environment in which it operates whether an additional registration fee is required. If it is determined by the registration routine that this is the case, then the registration routine has the capability to provide a fresh registration number as part of an authorized registration procedure pending which the protected software reverts to demonstration mode. Second Embodiment (Auto re-registration) According to a second embodiment, a more sophisticated procedure suitable for checking at first boot and at subsequent boot is shown in flowchart form in FIG. 3. This procedure incorporates redundancy to cope with situations where the key file containing the information from which the current use has been authorized may have been deleted or does not exist on a subsequent boot. The distinction as against the first embodiment is that a "key file" is created at the time of registration of the software and a duplicate key file is also created at the same time. The duplicate key file is arranged to be stored on the computer at a location separate from the program to be protected. In the case of the Apple Macintosh computer the duplicate key file can be stored in the "system" folder. Both the key file (stored with the software) and the duplicate key file are encrypted and both contain identical information. The information contained comprises: 1. The user registration details including the serial number, 2. The environment details of the computer, and 3. Details of the application protected by the security routine for which registration is to be or has been obtained. With reference to FIG. 3, whenever the protected application boots, a check is made by the registration routine to 5,490,216 9 determine whether registration details exist in the key file of the protected application. If they do, a comparison is made by the registration routine between what is stored in the key file and the environment to determine whether a change has taken place to the environment as compared with what is 5 stored in the key file. If no change is detected, then the protected application is permitted to run normally. If there are no registration details present in the key file or if the above-referenced comparison between the key file contents and the application does not show a match, then the 10 re-registration routine of FIG. 3 looks for the existence of a duplicate key file within the environment. If a duplicate key file exists, then the information contained within that duplicate key file is copied to the application key file and comparisons as previously described as between the key file 15 details and the environment and application are made. If the comparison is positive, then the protected application is allowed to run normally. If the comparison proves negative, then the protected application is permitted to run by the registration routine in demonstration mode only. If a dupli- 20 cate key file is found not to exist at all and the internal key file, if present, brings a negative result, then the protected application is allowed to run in demonstration mode only. This arrangement provides improved durability for the registration routine in the sense that it is less likely that the 25 protected application will be caused to run in demonstration mode for incorrect reasons. 10 platform. The serial number 50 generated by the selfserialization process can be a required input to the registration algorithm from which the registration number is generated. Clearly, the serial number 50, as determined and displayed to the user, will then be required to be communicated to the registration authority for input to the registration authority's registration number generating algorithm. It will be observed that a serial number 50 generated in this manner is likely to be displayed as a different number on each platforni on which the software to be protected is to be run and comprises a randomized input to the registration algorithm which is determined and determinable only at the time of registration. Fifth Embodiment With reference to FIG. 5, there is shown in schematic form a microprocessor 30 adapted to operate under an operating system or upon a platform 31 such as, for example, MicroSoft DOS or Macintosh System 7. The platform 31 allows relatively high level commands to be used to cause the microprocessor 30 to interact with input/output devices such as keyboard 32, monitor 33, loudspeaker 34, memory 35 and magnetic or CD ROM disk 36. By way of example a word processing program comprising a length of code or digital data 37 has been copied onto disk 36. The digital data 37 includes registration code portion 38 and use code portion 39. Third Embodiment 30 The digital data 37 is arranged in such a way that when Tracking System microprocessor 30 seeks to first execute the digital data 37 With reference to FIG. 4, a modified form of the dialogue by way of operating system or platform 31 the digital data box C of FIG. 2b is shown which includes provision for comprising the registration code portion 38 is caused to entry of "your user number" in box 21. execute first in a manner previously described in reference At the time a prospective new user enters his/her details 35 to the first embodiment of the invention. The execution of into the other boxes comprising the dialogue box C, there is the digital data comprising the registration code portion 38 an option for the user to enter a user number into box 21. The in conjunction with the operating system or platform 31 user number is provided by the registration authority 16 as comprises a mode switcher which will permit the microproa number unique to that particular registered user. If the box cessor 30 to execute the use code portion 39 of digital data 21 has the user number details inserted into it, then the 40 37 only in a demonstration mode unless and until registraregistration routine, When the next copy of the protected tion involving reference to an external registration authority application is made, will transfer the user number details is first completed successfully. This registration procedure is from box 21 to the "last user number" box 22. A similar as previously described with reference to the first emboditransfer will take place when next a copy is made of the ment. protected application if and only if the person wishing to 45 The digital data 37 can comprise, for example, a word register the next copy enters their user number details in box processing program such as Wordperfect 6.0 available from 21. If they do not, then the last user number details in box Wordperfect Corporation. The registration code portion 38 is 22 remain as before. In this manner, a tracking system is integral with the digital data 37 comprising the word proavailable to the registration authority in the form of a tree cessing program. The registration code portion 38 includes where any given copy is identified by its ancestry based on 50 the algorithm for calculation of the registration number as current and previous user number as entered into boxes 21 previously described in respect of other embodiments of the and 22. invention. Self-Serialization It will be appreciated that the registration code portion 38 In a particular embodiment, a process termed "self-seri55 effectively forms simply a part of the software or digital data alization" can be utilized to produce the serial number 50 37 to be protected/registered and that the digital data 37 will which is displayable to the userllicensee as illustrated in be or can be identical for all copies of the word processing FIG. 4. program produced. The registration code portion 38 allows The serial number 50 is disguised by use of a random or a unique link to be made between the digital data 37 and an pseudorandom number input to the algorithm which generates the serial number at the time of first boot of the software 60 individual authorized or licensed to use the digital data 37 by way of initial execution of a copy of the digital data as part of the initial registration procedure. For example, the comprising registration code portion 38. serial number, when generated by the self-serialization proWith reference to FIGS. 6 and 7, a specific realization of cess, can be generated by a random number routine forming the fifth embodiment will be described. part of the registration software or it can be generated by the With particular reference to FIG. 6, a decoder 51 is registration software with reference to data which is avail- 65 interposed in the datapath from the CD in CD player 52 and able in a widely varying fashion on the platform on which a digital-to-analog converter 53. The digital-to-analog conthe software is located-for example, a time reference on the 5,490,216 11 12 verter 53 is the device by which digitally encoded musical or video information residing on CD ROM 54 is converted to analog form suitable for playback on current mass produced television sets (video) or hi-fi sets (audio). The decoder 51 comprises part of the platform upon which the digital data 37 is executed and includes means to interpret the code portion 38 of the digital data 37 whereby the registration system is implemented such that the digital data 37 and, more particularly, the use code portion 39 of that digital data 37 can be executed on the platform in a use mode only if the registration procedure to which reference has been made in respect of previous embodiments has been performed. The registration code portion 38 can include a preview or demonstration related to a subset of the balance of the digital data on the CD 54 which can be executed by the platform without license. The decoder 61 includes LCD display 55 and keypad 56 whereby the licensee can enter information via keypad 56 and receive information via the LCD display 55 for the purpose of the registration procedure. In addition a smart card (SRAM) 57 is receivable by the decoder 81 for the purpose of customizing or amending operation of the decoder 51. With reference to FIG. 7, the registration procedure following insertion of CD 54 into CD player 52 is as follows. The user operates the play control and decoder 51 reads from CD 54 code portion 38 of digital data 37 located thereon and executes this code so as to determine whether the digital data is already licensed for the platform. If not, a demonstration is communicated via digital-to-analog converter 63 whilst the user determines whether to register as a licensee of the digital data 37 in the manner indicated in the flowchart of FIG. 7. changed as provided to it by platform unique ID generator 70. In this embodiment, serial number 50 is comprised of two components, namely system information 71 and a variable key portion 72. The variable key portion 72 provides the characteristic of self serialization described earlier in the specification and, in this embodiment, is generated at the time of registration on platform 31 by reference to a variable platform parameter, in this case reference to system time information, although other parameters which are variable can be utilized in other embodiments. System information 71 can include information which identifies the hardware comprising the platform 31 on which the user program 39 is to be executed such as, for example, CPU number (where available), or unique parameters associated with the firmware in use. The system information, optionally, can further include system configuration information such as amount of memory, type of processor etc. It will be noted, therefore, that serial number 50 will appear to an intending licensee when it appears on screen as per box C in FIG. 4 as an apparently random variable having no obvious link to the platform 31 or the user program 39. However, when the serial number 50 is communicated to the remote licensee unique ID generator 67 a secondary algorithm complementary to the algorithm which generated the serial number including variable key portion 72 and system information 71 is able to "decode" or otherwise strip away the variable key portion 72 so as to make use of the system information 71 if allowable and desirable in the circumstances. Whether the system information 71 is utilized or not, the serial number 50 generated in this manner provides an input to the algorithm which generates registration number 66 which presents as an apparently variable parameter thereby rendering "cracking" of the software registration system more difficult and unlikely. 5 10 15 20 25 30 35 Sixth Embodiment With reference to FIG. 8, there is shown a block diagram of a system according to a further embodiment of the invention which is to be read in the context of the earlier generalized description in respect of FIG. 1. The system illustrated in FIG. 8 operates in the manner generally described in respect of previous embodiments and as generally outlined in the diagram. In the context of the block C illustrated in FIG. 4, and with reference to FIG. 9, the algorithm, which generates the unique user identification and which is resident both as the registration code portion 38 in digital data 37 integrally bound to use code portion 39 for execution on local platform 31 and also as remote algorithm 61, is attached to registration database program 62 for execution on the remote platform 63. The algorithm, in this embodiment, combines by addition the serial number 50 with the software product name 64 and customer information 65 and previous user identification 22 to provide registration number 66. As discussed earlier, all of the items to be summed, namely items 50, 64, 65 and 22 must be communicated to the remote licensee unique ID generator 67 by the intending licensee whereby algorithm 51 causes the production of a registration number 66 which matches identically with the locally produced registration number. When mode switcher 68 verifies the match, then the mode switcher 68 allows execution on platform 31 of the full user program 39. Prior to allowing execution of the full program, mode switcher 68 will also check whether platform ID 69 has Seventh Embodiment 40 45 50 55 60 65 The schematic diagram of FIG. 10 illustrates a substantially hardware implementation of the invention applicable, for example, for implementation of the CD arrangement of FIG. 6 or the more generalized arrangement of FIGS. 8 and 9. In this embodiment, a prospective user 80 of digital code 81 on media 82 by its execution on platform 83 firstly inserts the media 82 into an appropriate digital code reading device within platform 83 (e.g., a floppy disk drive or a CD ROM drive). Customer information C is provided by user 80 both direct to local encoder/decoder 84 and also to local adder or summer 85. Additionally, product information P derived from media 82 (typically via platform 83) or else via the intermediary of the user (signified by the small man symbol) is provided to encoder/decoder 84 and to summer 85. Finally, a serial number S derived from platform 83 is supplied either directly or via the intermediary of user 80 to encoder/decoder 84 and to summer 85. Summer 85 acts as a local licensee unique ID generating means by combining, by addition, customer information C, product information P and serial number S in order to provide a local licensee unique ID here designated Y. Encoder/decoder 84 transmits the serial number S, the customer information C and the product information P via 5,490,216 13 modems 86, 87 over the public switched telephone network to a remote encoder/decoder 88 which, in turn, supplies signals S, C and P to the inputs of remote summer 89. Remote summer 89 combines these signals by addition (thereby acting as a remote license unique ID generating means) so as to provide a summed output, here termed X, which represents a licensee unique ID or enabling key which should match identically with the local licensee unique ID or registration key or registration number Y if inputs S, C and P to summers 85 and 89 are identical. The licensee unique ID termed X is transmitted back via encoder/decoders and modems 84, 86, 87, 88 to comparator 90 which outputs a high signal if X equals Y. This condition corresponds to the local licensee unique ID matching with the licensee unique ID generated at the remote location by the remote licensee unique ID generating means generally comprising summer 89. Digital code 81 on media 82 comprises code identified as a demonstration portion D together with code identified as a use portion U. There may be other kinds of code designated o as well. Code 81 is executed on platform 83 (for example, a microprocessor or a substantially hardware based, dedicated playback device such as a CD drive) with the code being passed through a mode switcher comprising first gate 91 and second gate 92 together with relay 93. First gate 91 energizes relay 93 so as to permit execution of code of type D but not code of any other type such as of ~~u. Second gate 92 permits execution of any kind of code by closure of relay 93 provided only that the output of comparator 90 is high (which is to say that X equals Y or that the local licensee unique ID matches with the licensee unique ID generated by the remote licensee unique ID generating means comprising summer 89). Comparator 90 together with gates 91, 92 and relay 93 comprise one particular form of mode switcher or switching platform 83 of various kinds of code such as the code of types D and U. Industrial Applicability The aforementioned may be applied either in dedicated electronic hardware or by means of more generalized digital computation devices such as microprocessors and the like whereby digital code or software (which may incorporate at least part of the code which, when executed, acts as a licensee unique ID generator) is fully enabled only after following a specified licensing procedure. The above describes only some embodiments of the present invention and modifications, obvious to those skilled in the art, can be made thereto without departing from the scope and spirit of the present invention. What is claimed is: 1. A registration system for licensing execution of digital data in a use mode, said digital data executable on a platform, said system including local licensee unique ID generating means and remote licensee unique ID generating means, said system further including mode switching means operable on said platform which permits use of said digital data in said use mode on said platform only if a licensee unique ID first generated by said local licensee unique ID generating means has matched a licensee unique ID subsequently generated by said remote licensee unique ID generating means; and wherein said remote licensee unique ID generating means comprises software executed on a platform which includes the algorithm utilized by said local licensee unique ID generating means to produce said lic- 14 5 10 15 20 25 ~ 35 40 45 50 55 60 65 ensee unique ID. 2. The system of claim 1, wherein said local licensee unique ID generating means generates said local licensee unique ID by execution of a registration algorithm which combines information in accordance with said algorithm, said information uniquely descriptive of an intending licensee of said digital data to be executed in said use mode. 3. The system of claim 2, wherein said mode switching means permits operation of said digital data in said use mode in subsequent execution of said digital data only if said licensee unique ID generated by said local licensee unique ID generating means has not changed. 4. The system of claim 3, wherein said local licensee unique ID generating means comprises part of said digital data when executed on said platform. 5. The system of claim 4, wherein said mode switching means comprises part of said digital data when executed on said platform. 6. The system of claim 5, wherein the information utilized by said local licensee unique ID generating means to produce said licensee unique ID comprises prospective licensee details including at least one of payment details, contact details and name. 7. The system of claim 1, said system further including platform unique ID generating means, wherein said mode switching means will permit said digital data to run in said use mode in subsequent execution of said digital data on said platform only if said platform unique ID has not changed. 8. The system of claim 7, wherein said platform unique ID generating means comprises part of said digital data when executed on said platform. 9. The system of claim 8, wherein said platform unique ID generating means utilizes hard disc or other platform information to determine said platform unique ID. 10. The system of claim 1, wherein said platform comprises a computer operating system environment. 11. The system of claim 10, wherein said digital data comprises a software program adapted to run under said operating system environment. 12. A registration system attachable to software to be protected, said registration system generating a security key from information input to said software which uniquely identifies an intended registered user of said software on a computer on which said software is to be installed; and wherein said registration system is replicated at a registration authori~ and used for the purposes of checking by the registration authori~ that the information unique to the user is correctly entered at the time that the security key is generated by the registration system. 13. The registration system of claim 12, wherein said security key is generated by a registration number algorithm. 14. The registration system of claim 13, wherein said registration number algorithm combines information entered by a prospective registered user unique to that user with a serial number generated from information provided by the environment in which the software to be protected is to run. 15. The registration system of claim 12, wherein said registration system checks at the time of boot of said software as to whether it is a first boot of the software to be protected or a subsequent boot, and, if a subsequent boot is detected, then environment and user details are compared to determine whether the program reverts to a demonstration mode and a new user registration procedure is to commence or a full version run. 16. The registration system of claim 15, wherein said environment details comprise at least one element which is not user-configurable on the platform. 5,490,216 15 17. A method of control of distribution of software, said method comprising providing mode-switching means associated with said software adapted to switch said software between a fully enabled mode and a partly enabled or demonstration mode, said method further comprising pro- 5 viding registration key generating means adapted to generate a registration key which is a function of information unique to an intending user of the software; said mode-switching means switching said software into fully enabled mode only if an enabling key provided to said mode-switching means 10 by said intending user at the time of registration of said software has matched identically with said registration key; and wherein said enabling key is communicated to said intending user at the time of registration of said software; said enabling key generated by a third party means of 15 operation of a duplicate copy of said registration key generating means. 18. The method of claim 17, wherein said registration key is also a function of the environment in which said software 20 is installed. 19. A remote registration station incorporating remote licensee unique ID generating means, said station forming part of a registration system for licensing execution of digital data in a use mode, said digital data executable on a platform, said system including local licensee unique ID 25 generating means, said system further including mode switching means operable on said platform which permits use of said digital data in said use mode on said platform 16 only if a licensee unique ID generated by said local licensee unique ID generating means has matched a licensee unique ID generated by said remote licensee unique ID generating means; and wherein said remote licensee unique ID generating means comprises software executed on a platform which includes the algorithm utilized by said local licensee unique ID generating means to produce said licensee unique ID. 20. A method of registration of digital data so as to enable execution of said digital data in a use mode, said method comprising an intending licensee operating a registration system for licensing execution of digital data in a use mode, said digital data executable on a platform, said system including local licensee unique ID generating means and remote licensee unique ID generating means, said system further including mode switching means operable on said platform which permits use of said digital data in said use mode on said platform only if a licensee unique ID generated by said local licensee unique ID generating means has matched a licensee unique ID generated by said remote licensee unique ID generating means; and wherein said remote licensee unique ID generating means comprises software executed on a platform which includes the algorithm utilized by said local licensee unique ID generating means to produce said licensee unique ID. * * * * *

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?