`Richardson, III
`
`1|||||||||||||mumnuqgggygmyguun|||||||||||||||||||||||
`5,490,216
`Feb. 6, 1996
`
`Patent Number:
`[11]
`[45] Date of Patent:
`
`[54] SYSTEM FOR SOFTWARE REGISTRATION
`
`[75] Inventor: Frederic B. Richardson, III,
`Brookvale, Australia
`
`5,386,468
`5,388,211
`5,390,297
`
`1/1995 Akiyama et al. ......................... .. 380/4
`2/1995 Hombuckle
`380/4
`2/1995 Barber et al. ............................. .. 380/4
`
`FOREIGN PATENT DOCUMENTS
`
`[73] Assignee: Uniloc Private Limited, Singapore
`
`WO9209160 5/1992 WIPO .
`
`[21] Appl. No.: 124,718
`[22] Filed:
`Sep. 21, 1993
`[30]
`Foreign Application Priority Data
`
`Sep. 21, 1992 [AU]
`Oct. 26, 1992 [AU]
`
`Australia ............................... .. PL4842
`Australia ............................... .. PL5524
`
`[51] Int. Cl.6 ...................................................... .. H04L 9/00
`[52] US. Cl. ................................................. .. 380/4; 380/23
`[58] Field of Search ............................. .. 380/3, 4, 23, 24,
`380/25
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`3/1987 Ogald et al. .
`4,654,799
`8/1987 Joshi.
`4,688,169
`1/1989 Wolfe.
`4,796,220
`1/1991 Frezza et al. .
`4,982,430
`380/4
`3/1991 Chemow et al.
`4,999,806
`380/4
`3/1993 Lang ............. ..
`5,191,611
`.'380/4
`3/1993 Logan
`5,199,066
`6/1993 Chou et a1. ............................... .. 380/4
`5,222,133
`8/1993 Graves.
`5,239,166
`8/1993 Nukui ........................................ .. 380/4
`5,239,648
`2/1994 Samson ..................................... .. 380/4
`5,287,408
`5,291,598 3/1994 Grundy .
`5,313,637
`5/1994 Rose .......................................... .. 380/4
`5,319,705 7/1994 Halter et al.
`380/4
`5,337,357
`8/1994 Chou et al. .
`380/4
`5,343,526
`8/1994 Lassers
`380/4
`5,349,643
`9/1994 Cox et al.
`380/4
`5,371,792 12/1994 Asai et al. ..
`380/4
`5,379,433
`1/1995 Yamagishi ................................. .. 380/4
`
`Primary Examiner-David C. Cain
`Attorney, Agent, or Firm—Knobbe, Martens, Olson & Bear
`
`[57]
`
`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 sys
`tem 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 informa
`tion supplied by the licensee which characterizes the lic
`ensee. 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
`
`Petitioners Ex. 1001 Page 1
`
`
`
`US. Patent
`US. Patent
`
`Feb. 6, 1996
`Feb. 6, 1996
`
`Sheet 1 of 12
`Sheet 1 of 12
`
`5,490,216
`5,490,216
`
`\6F.
`
`Petitioners Ex. 1001 Page 2
`
`Petitioners Ex. 1001 Page 2
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 2 of 12
`
`5,490,216
`
`IS
`THIS A NEW
`COPY ?
`(INTERNAL CHECKING
`BY APPLICATION)
`
`GO TO
`FIG. 30 OR 3b
`
`DIALOG
`" BOX:
`DEMO OR
`REGISTER"
`?
`
`REGISTER
`
`DISPLAY PRODUCT /
`INFORMATION BOX:
`8.9.. SOFTWARE
`PUBLISHER DETAILs
`
`Y
`DEMO MODE OF APPLICATION:
`NO sAvE 0R PRINT CAPABILITY
`
`I
`
`CANCEL
`
`CAggEL
`AGREE
`7
`'ACREE
`
`\ LICENsE INFO. DIALOG BOX:
`DETAILS OF NEw LICENSING
`'
`AGREEMENT
`
`CANCEL
`
`CANCEL
`OR
`CONTINUE
`'2
`
`CONTINUE
`
`GO TO FIG. 2b
`
`'FIG. 2a
`
`Petitioners Ex. 1001 Page 3
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 3 of 12
`
`5,490,216
`
`FIG. 2b
`
`FROM FIG. 20
`
`I
`A SERIAL NO. IS GENERATED
`BY THE APPLICATION USING
`INFORMATION FROM THE USER
`ENVIRONMENT (E.G. TIME, MACHINE
`TYPE, LAST MODIFICATION DATE)
`
`I
`
`SERIAL NO. IS ENCRYPTED,
`REARRANGED AND PRESENTED AS
`A NUMBER IN THE SERIAL, NO. FIELD
`OF THE REGISTRATION DIALOG BOX.
`
`/C
`
`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.)
`
`I
`
`I
`
`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)
`
`I
`
`PUBLISHER USES
`REGISTRATION DETAILS
`IN UNLOCKING APPLICATION
`I
`REGISTRATION No. GENERATED
`FROM USER DETAILS ADDED TO
`SERIAL NO. IS ENCRYPTED
`AND RE-ARRANGED
`
`I
`I
`
`> USER GIVEN REGISTRATION NO.
`
`GO TO FIG. 20
`
`Petitioners Ex. 1001 Page 4
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 4 of 12
`
`5,490,216
`
`FIG. 2C
`
`FROM FIG. 2b
`
`USER TYPES IN
`REGISTRATION NUMBER
`
`APPLICATION USES UNLOCKING
`ALGORITHM TO CHECK VALIDITY
`
`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 FULL
`VERSION
`
`RUN DEMO
`VERSION
`
`Petitioners Ex. 1001 Page 5
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 5 of 12
`
`5,490,216
`
`FIG. 5
`
`LOOK FOR DUPLICATE
`KEY FILE STORED
`ELSEWHERE ON MACHINE
`
`REGISTRATION (KEY)
`DETAILS MATCH
`ENVIRONMENT
`
`YES
`
`DOES
`DUPLICATE
`KEY FILE
`ExIsT
`'2
`
`N0
`
`REMOVE KEY
`INFORMATION
`IF IT EXISTS
`
`Y
`RUN DEMO
`VERSION
`
`COPY DUPLICATE
`KEY FILE INFORMATION
`TO APPLICATION
`
`REGISTRAPI'IDON (KEY)
`DETAILS MATCH
`ENVIRONMENT
`?
`
`RUNv FULL
`v
`|
`ERS 0N
`
`Petitioners Ex. 1001 Page 6
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 6 of 12
`
`5,490,216
`
`220
`/ I
`NAME:
`I
`ORGANIZATION
`I
`ADDRESS
`I
`CITY
`I
`ZIP/POST CODE
`I
`COUNTRY
`I
`CREDIT CARD/ORDER#
`l
`EXPIRE DATE
`|
`
`LAST USER NO.
`SERIAL NO.
`PRODUCT NO.
`YOUR USER NO.
`
`L
`I
`I
`I
`
`REGISTRATION NO.
`
`I
`
`I
`I
`I
`I
`|
`I
`I
`I
`
`‘I
`\22
`+~\\50
`
`(‘2/
`
`I
`
`Petitioners Ex. 1001 Page 7
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 7 of 12
`
`5,490,216
`
`@E 0%
`
`.34
`
`~21
`ENVIRONMENT/PLATFORM
`f
`30 M P
`
`_K I I .r
`33
`/
`
`.32
`DEIIDIIIZDIIIID /
`CIDUDDDDDCIDI'IJ DUDE]
`UDUUDDDDDDC! DCIUD
`[:IDDUDDDDCID CICIDD
`0 DEC! D DDUEI
`
`F/G.5
`
`Petitioners Ex. 1001 Page 8
`
`
`
`US. Patent
`US. Patent
`
`Feb. 6, 1996
`Feb. 6, 1996
`
`Sheet 8 of 12
`Sheet 8 0f 12
`
`5,490,216
`5,490,216
`
`52
`
`
`
`TV/Hl Fl
`TV/Hl Fl
`
`F/G.6
`FIG.6
`
`Petitioners Ex. 1001 Page 9
`
`Petitioners Ex. 1001 Page 9
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 9 of 12
`
`5,490,216
`
`PLAY
`
`I
`
`FIRST PIECE OF ENCODED
`INFORMATION IS BROUGHT
`INTO CONTROLLER INCLUDING
`A PRODUCT IDENTIFIER.
`
`YES
`
`IS
`THE CURRENT
`PRODUCT REGISTERED
`FOR USE
`?
`
`NO
`
`DEMO OR
`BUY
`?
`
`BUY
`
`REGISTRATION DATA
`ENTRY eg: PAYMENT
`DETAILS AND
`PERSONAL DATA
`
`I
`
`COMMUNICATION
`WITH REGISTRATION
`SERVICE PROVIDOR
`
`I
`SUPPLY OF
`REGISTRATION
`NUMBER TO
`CUSTOMER
`
`ALLOWS ACCESS TO
`DEMONSTRATION RECORDINGS
`THAT ARE NOT ENCRYPTED.
`
`STORE REGISTRATION
`NUMBER IN WRITABLE
`MEMORY OF LOCAL
`CONTROLLER AND
`WRITABLE STORAGE
`AREA OF SMART CARD.
`
`Y
`ALLOWS ACCESS
`TO DAC AND
`DECRYPTION
`ENGINE
`
`FIG. 7
`
`Petitioners Ex. 1001 Page 10
`
`
`
`U.S. Patent
`
`Feb. 6, 1996
`
`Sheet 10 0f 12
`
`5,490,216
`
`EXECUTE ON PLATFORM
`I
`LOCAL
`LICENSEE
`UNIQUE
`I.D.
`GENERATOR
`6'6"
`
`USER
`PROGRAM
`
`Y
`
`“I
`
`IE]
`
`Y
`
`E LOCAL LICENSEE LOCATION j
`|
`INTERNAL
`I
`I
`|
`I
`|
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`v
`I
`PROGRAM
`5‘?
`I I SUBSET
`(I
`| (DEMO)
`I °<x MODE
`I
`04 ,,,,, P’ SWITCHER
`I
`FULL
`I PROGRAM
`69
`I
`/70 w
`I
`PLATFORM
`UNIQUE
`I
`I
`I0
`I
`GENERATOR
`
`L ___________ _ _ _I
`
`{IN
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`1
`|
`I
`I
`
`V
`
`E REMOTE REGISTRATION 7
`I
`DATABASE LOCATION
`I
`|
`I
`I
`I
`I
`I
`I
`I
`I
`I
`|
`l
`
`REGISTRATION
`DATABASE
`E PROGRAM
`
`L
`
`Y
`
`L
`
`a
`
`I/GJI
`
`EXECUTE ON PLATFORM
`I
`f67
`REMOTE
`LICENSEE
`UNIQUE
`I.D.
`GENERATOR
`
`J
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`|
`I
`
`I
`
`Petitioners Ex. 1001 Page 11
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 11 of 12
`
`5,490,216
`
`VARIABLE
`KEY PORTION
`72
`
`SYSTEM
`INFORMATION
`7/
`
`50
`/
`
`SERIAL NO.
`
`5/
`
`/
`
`PRODUCT NAME
`
`65
`
`/ CUSTOMER
`
`INFORMATION
`
`22
`
`/ PREVIOUS USER
`IDENTIFICATION
`
`/ REGISTRATION
`
`NUMBER
`
`F/G.9
`
`Petitioners Ex. 1001 Page 12
`
`
`
`US. Patent
`
`Feb. 6, 1996
`
`Sheet 12 of 12
`
`5,490,216
`
`UKLVI
`
`0mm
`
`Petitioners Ex. 1001 Page 13
`
`
`
`1
`SYSTEM FOR SOFTWARE REGISTRATION
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`This invention relates to improvements in systems for
`software registration and, more particularly, to improve
`ments in arrangements where software is transferable by
`media such as magnetic disks, CD ROMS and the like.
`2. Description of the Related Art
`Much commercially available software is provided at time
`of purchase (or license) on a magnetic media, typically a
`?oppy disk. Frequently the only security feature attached to
`the software is a simple registration number stored on the
`media. This registration number identi?es that particular
`copy of the software and it is often required at the time of
`installation of the software onto any given computer that the
`installer must provide the registration number independently
`to the installation routines.
`However, such simple security arrangements for the dis
`tribution of software on media suffer from at lest two
`disadvantages: (1) each copy of the software made on any
`given media at the time of manufacture must include an
`individual, unique number, programmed into the media, and
`(2) this arrangement does not prevent copying of the soft
`ware, once installed on any given computer, to another
`computer by means of ?le transfer (as opposed to reinstal
`lation).
`W0 92/09,l60 to Tan Systems Corporation discloses a
`registration system which is relatively sophisticated which
`relies for its security on a requirement that an intending
`software licensee must obtain from a remote location by ?le
`transfer signi?cant and essential portions of the program
`which the licensee desires to execute. The arrangement
`disclosed in WO 92/09,16O suffers from a number of de?
`ciencies including:
`a. the shell program which the intending licensee initially
`executes requires a unique identity embodied within the
`shell prior to distribution of the shell program;
`b. the shell program is not, itself, a functional program
`that is, it does not include all of the code which the
`intending licensee wishes to execute. That program
`must be obtained remotely with all the delays, incon
`veniences and possibilities of corruption during transit
`that that entails;
`c. the prior art system appears to require and indeed, rely
`on, encryption to ensure that the program material
`which is communicated from a remote location is not
`intercepted for utilization in an unauthorized manner;
`and
`d. it is unclear whether the system can accommodate and
`react appropriately to the situation where the program,
`once registered, is transferred in its entirety from one
`platform to another so as to avoid the requirement for
`payment of a further registration fee.
`US. Pat. No. 4,796,220, assigned to Pride Software
`Development Corporation, discloses a system for unique
`recognition of a platform on which licensed software is to be
`executed. However, US. Pat. No. 4,796,220 does not con
`template or disclose utilization of information which is
`unique to the user or intended licensee as part of the
`registration process which is to be distinguished from iden
`ti?cation of the platform upon which the software is pro
`posed to be run.
`US. Pat. No. 4,688,169 to Joshi broadly discloses the
`same principles as US. Pat. No. 4,796,220 in that it dis
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`5,490,216
`
`2
`closes a computer software security system which relies for
`its security on a “machine identi?cation code unique to the
`machine” upon which the software to be protected is to be
`run. Again, the disclosure is limited to identi?cation of the
`platform and there is no suggestion or contemplation of
`linking platform identi?cation with unique user identi?ca
`tion.
`Also this arrangement does not allow the ?exibility of
`transfer of copies of the program from platform to platform
`which can be run in a demonstration mode.
`It is an object of the present invention to address or reduce
`the above-mentioned disadvantages.
`De?nitions
`Throughout this speci?cation the term “software” is to be
`interpreted broadly so as to include all forms of digital data
`which are executable on a platform (as to be later de?ned).
`The digital data comprising the software can, for example,
`be code comprising a word processing program adapted to
`run on a PC or the like. The software can also, for example,
`be digital data stored on a CD ROM adapted for playback as
`music on a CD ROM audio drive. The digital data can be
`displayable information or information which is otherwise
`usable by a licensed user.
`Throughout this speci?cation the term “platform” denotes
`an environment to be associated with a computing device
`such as a microprocessor or other data processing device
`which permits execution of the digital data (to which refer
`ence has previously been made in relation to the term
`“software”) whereby the computer can perform functions on
`input and output devices associated therewith.
`In some circumstances, the “software” or digital data may
`itself be the operating system environment. Typically, but by
`no means exclusively, examples of operating system envi
`ronments include the MicroSoft DOS operating system, the
`IBM 0S/2 operating system or the Macintosh System 7
`environment. In the degenerate case of rnicrocontrollers
`operating from ROM, the operating system environment
`may be the microcode of the microcontroller which enables
`the rnicrocontroller to execute machine code.
`In this speci?cation, “use mode” refers to use of the
`digital data or software by its execution on a platform so as
`to ful?ll the seller’ s/licensor’s obligations in relation to the
`sale or license of the right to execute the digital data or
`software in the use mode. The use mode is to be distin
`guished from what might generally be termed unlicensed
`modes of operation (which is not to say unauthorized modes
`of operation) as typi?ed by the demonstration modes later
`described in this speci?cation.
`
`SUMMARY OF THE INVENTION
`
`In broad terms, the system according to the invention is
`designed and adapted to allow digital data or software to run
`in a use mode on a platform if and only if an appropriate
`licensing procedure has been followed. In particular forms,
`the system includes means for detecting when parts 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 for example last booted or run or validly registered.
`The system relies on digital data or code which forms part
`of the digital data to be protected by the system. This portion
`of the digital data which preferably is integral to the digital
`data to be protected has been termed the “code portion”
`elsewhere in this speci?cation. The code portion includes an
`algorithm adapted to generate a registration number which is
`unique to an intending licensee of the digital data based on
`
`Petitioners Ex. 1001 Page 14
`
`
`
`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 infor
`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 num
`ber (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 hard
`ware or ?rmware 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 soft
`ware to be protected, the registration means generating a
`
`55
`
`60
`
`65
`
`15
`
`25
`
`35
`
`45
`
`50
`
`4
`security key from information input to the software which
`uniquely identi?es an intended registered user of the soft
`ware on a computer on which the software is to be installed.
`Preferably, the security key is generated by a registration
`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
`protected is to run (e. g., system clock, last modify date, user
`name).
`Preferably, the registration means is replicated at a reg
`istration authority and used for the purposes of checking by
`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 ?rst boot of the
`software to be protected or a subsequent boot. If a subse
`quent 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
`of disc volume name, user name or computer, initialization
`date of hard disk, hardware identi?er (e.g., ROM checksum)
`or other elements which are generally not user-con?gurable
`on the platform.
`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
`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
`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 regis
`tration key generating means.
`Preferably, the enabling key is communicated to the
`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
`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 demon
`stration mode and a use mode.
`Preferably, the registration code when executed on the
`platform provides local licensee unique ID generating means
`whereby the digital data can be switched from the demon
`stration mode to the use mode by execution of the registra
`tion code only if a licensee unique ID generated by the local
`licensee unique ID generating means has matched a licensee
`unique ID generated by remote licensee unique ID gener
`ating means.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`Embodiments of the invention will now be described with
`reference to the accompanying drawings wherein:
`
`Petitioners Ex. 1001 Page 15
`
`
`
`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 accord
`ing to a ?rst embodiment of the invention;
`FIGS. 2a, 2b and 2c are segments of a ?ow chart of the
`procedure to be followed during registration of software by
`a user according to a ?rst embodiment of the invention;
`FIG. 3 is a ?ow 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 ?ow chart in relation to the decoder box
`of FIG. 6;
`FIG. 8 is a block diagram of a generalized system
`according to a ?fth 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.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`It is to be understood that, in its various embodiments, the
`present invention is for the protection of digital code/
`software by control of permission to use the digital code/
`software. A hardware platform and a remote registration
`station implemented at least partially by means of electronic
`hardware are required by the various embodiments.
`The code/software to be protected requires at least some
`adaption to be usable with the invention in its various
`embodiments. The adaptation can be universal for all copies
`of the code/software to be protected.
`
`First Embodiment
`
`45
`
`With reference to FIGS. 1 and 8, the system according to
`embodiments of the invention is designed and adapted to
`allow digital data 39 or software to run in a use mode on a
`platform 31 if and only if an appropriate licensing procedure
`has been followed. In particular forms, the system includes
`means for detecting when parts of the platform 31 on which
`the digital data 39 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, for example, last
`booted or run or validly registered.
`The system relies on digital data or code 38 which forms
`part of the digital data to be protected by the system. This
`portion of the digital data, which preferably is integral to the
`digital data to be protected, has been termed the code portion
`38 elsewhere in this speci?cation. The code portion 38
`includes an algorithm adapted to generate a registration
`number 66 or local licensee unique ID or registration key
`which characterizes the licensee. In this instance, the local
`licensee unique ID generator which generates the registra
`tion number comprises the execution of code 38 on
`platform 31.
`
`55
`
`65
`
`5,490,216
`
`15
`
`20
`
`25
`
`35
`
`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 lic
`ensee and the licensor or its agent is required so that a
`matching registration number or enabling key can be gen
`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
`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
`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 infor
`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 num
`ber (see further on) is included in the registration number
`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 ?rst embodiment of the
`invention is supplied recorded on a magnetic disk 10.
`Included as part of the software on that disk 10 is a
`registration and re~registration routine which executes
`whenever the program protected by the arrangement of the
`?rst embodiment “boots”.
`With reference to FIG. 1 and FIGS. 2a, 2b and 2c, the
`operation of the security routine will be described on the
`assumption that the program on the disk 10 protected by the
`registration routine has not been registered on the platfonn
`or is otherwise being loaded for the ?rst time.
`The prospective new user 11 inserts disk 10 into the user
`PC 12 so as to be read by PC 12.
`As part of the software installation procedure, the regis
`tration routine is activated causing a series of dialogue boxes
`to appear on the display 13 of the user PC 12. Having
`checked to ensure that the software has not previously been
`registered on the PC 12, a dialogue box A (in FIG. 2a) is
`displayed which provides the user with a choice of either
`seeing a demonstration of the software (which typically has
`features such as save and/or print disabled) or alternatively
`an invitation to register ownership/licensee of the software
`(after which all features of the software are made available
`to the user).
`If the register option is selected or if the user cancels the
`demonstration in favor of registration, then a contact dia~
`logue box B (in FIG. 2a) is presented on the display 13
`which provides a list (stored on disk 10 as part of the
`registration routine) which provides for example, names and
`contact numbers of the software publishing company
`together with other general product information.
`Following the user’s indication of agreement during dis
`play of license details (box B1) to proceed to register, the
`user can contact the registration center after ?lling out the
`registration dialogue box C as detailed below. After selecting
`“continue”, the registration routine begins the ?rst step in the
`generation of a security key which will be unique to the
`current copy of the software and to certain features of the
`environment in which it runs.
`
`Petitioners Ex. 1001 Page 16
`
`
`
`5,490,216
`
`7
`As shown in FIG. 2b, the ?rst 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
`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
`‘ with ?nancial details for payment for the purpose of becom
`ing 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
`(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.
`An identical registration number algorithm 14 resides on
`the registration authority PC 15. As an integral part of the
`registration procedure, the prospective new user 11 commu
`nicates the information unique to the user which was entered
`by the user on the user PC 12, along with the serial number
`generated by the user’ s algorithm, to the registration author
`ity 16. The registration authority feeds this information into
`the registration authority PC 15 wherein the registration
`number algorithm 14 should produce an identical registra
`tion number or security key to that produced by the user PC
`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 author
`ity electronically, e.g., by fax or modem or tone phone.
`As a ?nal 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
`entered registration number matches the calculated registra
`tion 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 ?le
`(which stores the user details) does not exist then a dialogue
`box D (