`
`US 7,503,072 B2
`(10) Patent No.:
`a2) United States Patent
`Hughesetal.
`(45) Date of Patent:
`Mar.10, 2009
`
`
`(54) HARDWAREID TO PREVENT SOFTWARE
`PIRACY
`
`(75)
`
`Inventors: Aidan T. Hughes, Bellevue, WA (US);
`David Barnaby Pearce, West Palm
`Beach, FL (US)
`
`5,199,066 A
`5,357,573 A
`5,379,343 A
`5,490,216 A
`5,491,804 A
`
`3/1993 Logan oo. ceeeeeeeeeeee 380/4
`... 380/25
`10/1994 Walters
`
`1/1995 Grube et al. we 380/4
`2/1996 Richardson,IT] ............... 380/4
`2/1996 Heath et al. we. 395/275
`(Continued)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`EP
`
`FOREIGN PATENT DOCUMENTS
`0844549 Al
`5/1998
`
`(*) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 2544 days.
`(21) Appl. No.: 09/859,915
`
`OTHER PUBLICATIONS
`He Fond
`joa
`Silent
`sap
`ih ini
`denizens
`ioe
`e@ Danas
`Hent Safjeguara—An anti-piracy device
`ieis you
`near
`without the blips; B. Fox; New Scientist, (Aug. 21, 1999) v.163, n.
`2200, p. 12.
`
`(22)
`
`Filed:
`
`May17, 2001
`
`(65)
`
`Prior Publication Data
`US 2001/0044782 Al
`Nov. 22, 2001
`
`Related U.S. Application Data
`(63) Continuation-in-part of application No. 09/070,518,
`filed on Apr. 29, 1998, now Pat. No.6,243,468.
`;
`;
`_—
`
`(51)
`
`(56)
`
`Int. Ch.
`(2006.01)
`HOAL 29/00
`(2006.01)
`HOAL 9/00
`726/26: 705/51: 705/59
`(52) U.S. Cl
`(58) Field °f ClassificationSearch
`;
`380201
`380/203. 231. 232: 705/51. 5256.57 58.
`,
`,
`,
`705/59: 126196
`See applicationfile for complete search hisis
`:
`ry:
`PP
`P
`References Cited
`
`
`U.S. PATENT DOCUMENTS
`
`4,658,093 A
`4,688,169 A
`4,796,220 A
`5,182,770 A *
`
`4/1987 Hellman... 380/25
`8/1987 Josh sssecsesverscssvesseesees 364/200
`
`1/1989 Wolfe cccccssscreccesssevess 364/900
`1/1993 Medveezky et al.
`........... 705/56
`
`222.
`
`224
`
`(Continued)
`
`.
`Primary Examiner—Matthew B Smithers
`(74) Attorney, Agent, or Firm—Merchant & Gould PC
`(57)
`ABSTRACT
`
`In one embodiment, the invention is a 64 bit hardware ID
`(H/W ID)for tying a software productto a particular com
`puter to prevent software piracy. The 64 bit hardware ID
`represents ten different components of the user’s computer:
`the CD-ROM device, the disk adapter, the disk device, the
`display adapter,
`the first drive serial number,
`the MAC
`address, the processor serial number, the processor type, the
`RAMsize in Mb, and the SCSI adapter. Each timethe soft-
`ware product is opened, the expanded H/W ID is comparedto
`the hardware on the computer to determine whethera prede-
`termined minimum number of components match. In one
`embodiment, the expanded H/W ID allows for expansion of
`the user’s computer because so long as the componentorigi-
`nally listed in the expanded H/W ID can be found on the
`computer, then that component matches the expanded H/W
`ID. Typically, seven out of ten components in the expanded
`H/W ID must match the computerbefore the software product
`will fully operate.
`
`1 Claim, 6 Drawing Sheets
`
`300
`a
`
`| Install
`Customer Computer
`
`20
`
`36
`
`rogram
`-
`Hashing
`Algorithm
`
`PID + H/W ID
`—*
`
`12
`
`Processor Product ID
`
`Customer
`
`N2
`
`license
`file
`
`14
`
`1
`
`1
`
`110
`
`
`
`Activation Unit
`Hashing
`Algorithm
`
`)_
`
`
`
`Activation
`Database
`
`
`
`Activation Authority
`
`GOOGLE 1013
`
`GOOGLE 1013
`
`1
`
`
`
`US 7,503,072 B2
`Page 2
`
`
`
`U.S. PATENT DOCUMENTS
`
`5,502,831 A
`5,509,070 A
`5,651,064 A *
`5,666,411 A
`5,671,412 A
`5,754,864 A
`5,757,907 A
`5,761,649 A
`5,790,664 A
`5,835,911 A
`5,892,900 A
`5,940,504 A
`5,968,175 A
`6,041,411 A
`6,044,471 A
`6,085,324 A
`6,240,401 Bl
`6,243,468 Bl
`6,244,758 Bl
`6,449,645 Bl
`
`3/1996 Grube et al. oo... 395/427
`
`4/1996 Schull
`.....
`wee 380/4
`7/1997 Newell
`....
`. 705/51
`we 380/4
`9/1997 McCarty........
`
`9/1997 Christiano etal.
`. 395/615
`
`5/1998 Hill ww...
`. 395/712
`
`
`wa 380/4
`5/1998 Cooperetal.
`6/1998 Hill
`.........
`. 705/27
`
`....
`8/1998 Coley etal.
`w 380/4
`11/1998 Nakagawaetal
`. 707/203
`4/1999 Ginteretal.
`. 395/186
`
`we 380/4
`8/1999 Griswold .......
`. 713/200
`10/1999 Morishitaetal.
`
`3/2000 Wyatt
`...
`... 713/200
`3/2000 Colvin .......
`w+. 713/202
`
`
`7/2000 Ogram etal.
`. 713/202
`5/2001 Oren etal.
`..
`.. 705/40
`we 380/255
`6/2001 Pearceetal.
`
`395/200.54
`6/2001 Solymar et al
`
`9/2002, Nash? wecscerrvevevsrscens 709/224
`OTHER PUBLICATIONS
`
`Rallying the disc patrol: protection schemes for CD and DVD; D.
`Galante Block; EMedia Professional, Dec. 1998) v. 11, n. 12 p. 34-8,
`40-3.
`Anti-counterfeiting holograms andgovernmentanti-piracyactivities
`in China; Hsu Dahsiung; Proceedings of the SPIE—The Interna-
`tional Societyfor OpticalEngineering Conference, (1998)v. 3358, p.
`318-321.
`
`CD/DVD piracy: the replicator, the user and the technology; D.G.
`Block; EMedia Professional, (Dec. 1997) v.10, n.12, p. 92-96,
`98-100, 102-104, 106-107.
`Preventive and deterrent controls for software piracy, R.D. Gopal
`and G.L. Sanders; Journal of Management Information Systems
`(Spring 1997) v.13, n.4, p. 29-47.
`Foiling corporate software pirates; D.H. Freedman; High Technol-
`ogy (Jul. 1995) v.5, n.7, p. 62-64.
`Software piracy: stopping it before it stops you; Mark B. Johnson;
`Proceedings of the Sixteenth ACM SIGUCCS Conference on User
`Services, 1988, p. 295-299.
`Software watermarking: models and dynamic embeddings; Christian
`Colberg and Clark Thomborson; Proceedings of the 26° ACM
`SIGPLAN-SIGACTSymposiumon Principles ofProgramming Lan-
`guages, 1999, p. 311-324.
`How to prove where you are: tracking the location of customer
`equipment, Eran Gabber and Avishai Wool; Proceedings of the 5
`ACM conference on Computer and Communications Security, 1998,
`p. 142-149.
`Handling site-licensing agreements and public domain software
`architecture; John D. Chovan; Proceedings of the ACM SIGUCCS
`XIConference on User Services: pulling it all together, 1985, p.
`175-179.
`Digital signets: self-enforcingprotection ofdigital information (pre-
`liminary version); Cynthia Dwork, Jeffrey Lotspieh and Moni Naor;
`Proceedings of the Twenty-eighth Annual ACM Symposium on
`Theory of Computing, 1996, p. 489-498.
`Globetrotter Software, Inc., “FLEXIm End User Manual”, Chapters
`1-7 (1996).
`
`* cited by examiner
`
`2
`
`
`
`U.S. Patent
`
`Mar.10, 2009
`
`Sheet 1 of 6
`
`US 7,503,072 B2
`
`
`
`Jayndwoy
`
`aOLUaY
`
`6b
`
`LS
`
`aoeH9}u|
`
`YJOMIONBdlySPlAA|wepon|
`YWIOMIANBly[2907
`Zsvg
`iYIOMJON
`
`Iwapoy|-
`[EWESSIGPJEH
`asnoya
`€zuoneoddy
`
`Jaydepywun
`
`
`
`oOaplABulssa00/d
`
`Le
`
`sngwaysks
`
`
`
`sewayshgBuneiedg
`
`cc
`
`
`
`Asowaywajsks
`
`cv
`
`BAU4S!
`
`aoeLa}U|
`
`jeondo
`
`BALIQASIC
`
`onauBbe;
`
`aauq
`
`
`
`aoe}YS]U|
`
`S0BL9}UI
`
`sainpow,,WesBolg
`
`weiBoig
`
`eyeg
`
`wesbold
`
`eyeq
`
`
`
`sinpo=:wesibolg
`
`uoneoyddy
`
`
`
`
`
`welboigweJbold
`
`uoneoyddy
`Bunessdo
`
`ejeqsa|npoyy
`
`ajnpo-:wesBolg
`
`wayshsS
`
`3
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar.10, 2009
`
`Sheet 2 of 6
`
`US 7,503,072 B2
`
`UOOAYOY
`
`SW
`
`aspqnjogZ0|
`
`araarnt
`
`
`
`Tdrt21alyesueon
`
`
`
`{DOUINYUOTOATOV
`
`TeuWosny
`
`Z‘big
`
`esuedl]ZzWwULobly
`
`
`
`JBAJOSUOHDAOYW
`
`
`
`}lUpUOIDAYDY
`
`UIULOBIY
`
`
`
`6BulysoHZLLiz
`
`TY
`
`ryd!M/H+Ald
`
`zz
`
`
`
`JOINAWIOTJOWIOJSND
`
`JOSSOIOId
`
`WpIBold
`
`BurysoH
`
`OltOSU]
`
`ode
`
`CCG
`
`4
`
`
`
`
`
`
`
`
`
`
`U.S. Patent Mar. 10,2009—Sheet 3 of 6 US 7,503,072 B2
`
`Software Product on
`Customer Computer
`
`150
`
`Get PID
`
`Activation Unit on
`Product Provider Server
`
`
`
`Generate
`Hardware ID
`
`(H/W ID)
`
`154
`
`Send PID and H/W ID
`To Activation
`Authority
`
`
`
`156
`
`158
`
`160
`
`Compute Licensefile
`
`Store PID, H/W
`ID, and Licensefile
`
`Send License file to
`Customer
`Computer
`
`
`Store licensefile
`
`
`Fig. 3
`
`5
`
`
`
`U.S. Patent
`
`Mar. 10,2009
`
`Sheet 4 of 6
`
`US 7,503,072 B2
`
`
`
`Start Program
`
`172
`
`Get PID
`
`
`
`174
`
`Generate H/W ID
`
`Compute test
`ID from PID and H/W ID
`
`etrieve Licensefile fro
`memory
`
`Comparetest ID
`with Licensefile
`
`
`
`
` Lock Program
`
`Allow Program
`to Operate
`
`
`184
`
`Fig. 4
`
`6
`
`
`
`
`
`
`
`U.S. Patent Mar. 10,2009—Sheet 5 of 6 US 7,503,072 B2
`
`Change digit in H/W ID
`To get modified H/W ID
`
`190
`
`192
`
`Concatenate PID and
`Modified H/W ID
`
`194
`
`
`
`Computetest ID from
`PID and modified
`H/W ID
`
`Comparetest ID
`with licensefile
`
`
`Tried All
`permutationsof
`H/W ID?
`
`200
`
`
`
`
`
`
`
`Lock Program
`
`Fig. 5
`
`Allow Program
`to Operate
`
`7
`
`
`
`U.S. Patent
`
`Mar.10, 2009
`
`Sheet 6 of 6
`
`US 7,503,072 B2
`
`602
`
`Start Program
`
` 606
`
`608
`
`Compare portion of
`H/W ID with all
`
`More portions of
`H/W ID to examine?
`
`
`
`
`
`
`
`s count greater than
`minimum?
`
` Allow Program
` Lock Program
`to Operate
`
`
`
`
`
`618
`
`Fig. 6
`
`8
`
`
`
`US 7,503,072 B2
`
`1
`HARDWAREID TO PREVENT SOFTWARE
`PIRACY
`
`REFERENCE TO RELATED APPLICATIONS
`
`This is a continuation-in-part of U.S. patent application
`Ser. No. 09/070,518, entitled “SOFTWARE ANTI-PIRACY
`SYSTEM THAT ADAPTS TO HARDWARE UPGRADES”,
`filed Apr. 29, 1998 now USS. Pat. No. 6,243,468, which is
`incorporated by reference herein.
`
`TECHNICAL FIELD
`
`The invention generally relates to systems and methods for
`preventing piracy orillicit use of software by identifying
`hardware components of a computer. Moreparticularly, this
`invention relates to such systems and methods that allow
`hardware components of the underlying computer to be
`upgradedandthe software to be legitimately installed on the
`upgraded machine withouttriggering the anti-piracy protec-
`tion.
`
`BACKGROUND
`
`Computer software is a unique consumerproduct in that
`the same product can be replicated many times after being
`sold. Once a software product is sold, typically as software
`code on a computer-readable disk, the purchaser can easily
`copy the code to other computer-readable media thereby rep-
`licating the same product many timesover.
`This characteristic of software can be a tremendousbenefit
`in terms of lowering manufacturing costs and facilitating
`distribution. For instance, easy replication allows a software
`manufacturerto distribute one physical copy of the software
`productandsell a multi-seatlicense that legally empowersthe
`purchaser to install the software product on many different
`computers.
`Unfortunately, this benefit comes at a cost of open abuse.
`One well-knownabuseis piracy. An unscrupulousparty can
`obtain a copy of the object code (legally or illegally) and then
`illicitly replicate and resell pirated copies of the product.
`Software companies attempt to monitor piracy activities, but
`detection is often difficult. Moreover, even when improper
`activity is detected, enforcement and legal recourse is often
`unavailable from a practical standpoint, particularly since
`muchofthe abuse occurs in foreign lands.
`A less subtle abuse is the improperuse of a software prod-
`uct beyond the scope of the license. One common scenario
`involves a shrink-wrap software product available at local
`retail stores. The product is typically accompanied by a
`shrink-wrap license to install and use the product on one
`computer, and perhaps additionally on a laptop. Unfortu-
`nately, the purchaser may intentionally or unintentionally
`install the product on more than the allowed computers,
`thereby violating the license. For the software manufacturer,
`this form of abuseis very difficult to monitor and even more
`difficult to prosecute.
`The computer software industry estimates billions of dol-
`lars are lost each year due to piracy and otherillicit uses.
`While licenses provide a legal avenue for recourse against
`such practices, the practicality of detecting and enforcing
`these licenses often proves too onerousfor the manufacturer.
`Accordingly, software companies have a real incentive to
`reduce the amount of abuses through other means.
`One conventional
`technique for preventing unlimited
`copying of a software product is to design the code with a
`self-regulating mechanism that prevents repeated installa-
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`tions. This mechanism counts the numberof installations and
`disables the software codeafter the product has been installed
`a certain number of times. The underlying premise is that
`multiple installations tend to indicate that the useris attempt-
`ing to install the product on multiple different computers,
`rather than just one computer allowed by the license.
`As an example of this concept, suppose a manufacturer
`creates a software productand places the code on a disk, such
`asaCD-ROMorfloppydiskette. The disk is packaged to form
`a shrink-wrapretail product. The manufacturer generates and
`assigns a serialized key that uniquely identifies that product.
`For instance, the key might consist of a manufacturer ID, a
`serialized incrementing number, a registered product code,
`and a checksum value. The key is printed on a label and
`affixed somewhere on the product, such as the CD-ROM case.
`Duringinstallation, the purchaser of the software product
`is prompted to enter the key. This step alone is designed to
`prevent another party from obtaining the disk only, without
`knowledge of the key, and installing the product illegally.
`Withoutthe key, the holder of the physical disk is prevented
`from installing the product.
`The product tracks the numberofinstallations. Once the
`purchaserenters the same key more timesthan a definedlimit,
`the product is disabled. The purchaseris then forced to call the
`manufacturer for assistance.
`While such mechanismshelp reduceillicit copying, they
`often cause other problemsin the form of consumerinconve-
`nience. For instance, the premise that more installations than
`a requisite number meansillegal use may be wrong in some
`cases. A user who has upgraded his/her computer, for
`example, should be able to legitimately reinstall the software
`product on the upgraded machine. However,if the requisite
`numberofinstallations has already been reached, the product
`will notinstall, forcing the user (who is now disgruntled) to
`call the manufacturer for assistance.
`
`Accordingly, there remains a need for improved technol-
`ogy solutionsto piracy andillicit use, while recognizing and
`accommodating the needs and practices of a legitimate pur-
`chaser.
`
`SUMMARY OF THE INVENTION
`
`The present invention meets the above-described needs by
`providing a system for enabling enforcementof written soft-
`ware licensing terms for a software product for use with a
`computer having a set of hardware components.
`In one aspect, the system includes a software productresi-
`dent on a computer, the software product having an associated
`product ID. The software product generates a hardware ID
`that identifies the set of hardware components on the com-
`puter. In one embodiment, a 64-bit hardware ID that identifies
`a set of ten hardware components within the computer is
`derived. The 64 bit hardware ID representsten different com-
`ponents ofthe user’ s computer: the CD-ROMdevice,the disk
`adapter, the disk device, the display adapter, the first drive
`serial number, the MAC address, the processorserial number,
`the processor type, the RAM size in Mb, and the SCSI
`
`adapter. Each time the software product
`is opened,
`the
`expanded H/W ID is compared to the hardware on the com-
`puter to determine whether a predetermined minimum num-
`ber of components match. In one embodiment, the expanded
`H/W ID allowsfor expansion ofthe user’s computer because
`so long as the componentoriginally listed in the expanded
`H/W ID can be found on the computer, then that component
`matches the expanded H/W ID. Typically, seven out of ten
`components in the expanded H/W ID must match the com-
`puter before the software product will operate.
`
`9
`
`
`
`US 7,503,072 B2
`
`3
`In another aspect of the invention, the software productis
`subsequently launched following installation and the soft-
`ware productretrieves the 64-bit hardware ID. The hardware
`ID is compared to the set of hardware components on the
`computer on which the software product is installed. If a
`suitable match occurs, the software product is enabled to
`operate on the computer. Otherwise,if a suitable match does
`not occur, the software product is locked and prevented from
`operating on the computer. Typically, a suitable match is
`found whenat least seven out often components identified by
`the hardware ID are foundin the set of hardware components
`on the current computer. Thus, the invention prevents a user
`from installing the software product onto multiple different
`computers becauseit uses the hardware ID to identify a spe-
`cific computer.
`That the invention improves over the drawbacksofpriorart
`and accomplishes the advantages described above will
`become apparent from the following detailed description of
`the exemplary embodiments and the appended drawings and
`claims.
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`FIG. 1 is a block diagram of an exemplary personal com-
`puter.
`FIG. 2 is a block diagram of an anti-piracy system that
`facilitates activation of a software productfor installation and
`use on a particular computer.
`FIG. 3 is a flow diagram showing steps in a method for
`activating the software product for use on the computer.
`FIG. 4 is a flow diagram showing steps in a method for
`running the software product on the computer.
`FIG. 5 is a flow diagram showing steps in a method for
`running the software product after the computer has been
`upgraded.
`FIG. 6 is a flow diagram showing steps in a method for
`running the software product with an expanded hardwareID.
`
`DETAILED DESCRIPTION OF EMBODIMENTS
`OF THE INVENTION
`
`
`
`An embodimentofthe present invention will be incorpo-
`rated into the “OFFICE 10”suite of program modules mar-
`keted by Microsoft Corporation of Redmond, Wash.Briefly
`described, in one embodiment, the invention is an expanded
`64 bit hardware ID (H/WID)for tying a software product to
`a particular computer to prevent software piracy. The 64 bit
`hardwareID represents ten different components ofthe user’s
`computer: the CD-ROM device, the disk adapter, the disk
`device, the display adapter, the first drive serial number, the
`MACaddress, the processor serial number, the processor
`type, the RAM size in Mb, and the SCSI adapter. Each time
`the software product is opened, the expanded H/W ID is
`compared to the hardware on the computer to determine
`whether a predetermined minimum number of components
`match. In one embodiment, the expanded H/W ID allowsfor
`expansion of the user’s computer because so long as the
`componentoriginally listed in the expanded H/W ID can be
`found on the computer, then that component matches the
`expanded H/W ID. Typically, seven out of ten componentsin
`the expanded H/W ID must match the computer before the
`software product will operate.
`FIG. 2 shows an anti-piracy system 300 that facilitates
`activation of a software product with an activation authority
`for installation and use on a particular computer. The system
`300 includes a customer computer 20 andan activation server
`334, which residesat the activation authority remote from the
`
`4
`customer. The customer computer 20 and activation server
`334 are interconnected by a network 336 to provide data
`communication. In the absence of a customer computer’s
`access to a network, the manufactureror trusted third party
`may provide proxy access to the activation server by other
`means, such as electronic mail, fax machine, postal mail, or
`telephone.
`is
`the customer computer
`For discussion purposes,
`described as a personal computer, such as a desktop or por-
`table computer. However, as used herein, the term “com-
`puter”is intended to mean essentially any type of computing
`device or machinethat is capable of running a software prod-
`uct, including such devices as communication devices(e.g.,
`pagers, telephones, electronic books, electronic magazines
`and newspapers, etc.) and personal and home consumer
`devices (e.g., handheld computers, Web-enabledtelevisions,
`home automation systems, multimedia viewing systems,
`etc.). Within the described context, the network 336 is repre-
`sentative of an Internet or intranet, or a local or wide area
`network. However, the network 336 may be implemented in
`many different forms, including both wire-based networks
`(e.g., cable, telephone,fiber optic, etc.) and wireless networks
`(e.g., RF, satellite, microwave, etc.).
`FIG. 1 and the following discussionare intendedto provide
`a brief, general description of an exemplary customer com-
`puter 20. While the invention will be described in the general
`context of an application program that runs on an operating
`systemin conjunction with a personal computer, those skilled
`in the art will recognize that the invention also may be imple-
`mented in combination with other program modules. Gener-
`ally, program modules include routines, programs, compo-
`nents, data structures, etc. that perform particular tasks or
`implement particular abstract data types. Moreover, those
`skilled in the art will appreciate that the invention may be
`practiced with other computer system configurations, includ-
`ing hand-held devices, multiprocessor systems, microproces-
`sor-based or programmable consumerelectronics, minicom-
`puters, mainframe computers, and the like. The invention
`mayalso be practiced in distributed computing environments
`wheretasks are performed by remote processing devices that
`are linked through a communications network. In a distrib-
`uted computing environment, program modules may be
`located in both local and remote memory storage devices.
`With reference to FIG. 1, an exemplary system for imple-
`menting the invention includes a conventional personal com-
`puter 20, including a processing unit 21, a system memory 22,
`and a system bus 23 that couples the system memory to the
`processing unit 21. The system memory 22 includesread only
`memory (ROM) 24 and random access memory (RAM) 25. A
`basic input/output system 26 (BIOS), containing the basic
`routines that help to transfer information between elements
`within the personal computer 20, such as during start-up, is
`stored in ROM 24. A video BIOS60 is also stored in ROM 24.
`The personal computer 20 further includes a hard disk drive
`27, a magnetic disk drive 28,e.g., to read from or write to a
`removable disk 29, and an optical disk drive 30, e.g., for
`reading a CD-ROM disk 31 or to read from or write to other
`optical media. The hard disk drive 27, magnetic disk drive 28,
`and optical disk drive 30 are connected to the system bus 23
`by ahard disk drive interface 32, a magnetic disk drive inter-
`face 33, and an optical drive interface 34, respectively. The
`drives and their associated computer-readable media provide
`nonvolatile storage for the personal computer 20. Although
`the description of computer-readable media aboverefers to a
`hard disk, a removable magnetic disk and a CD-ROMdisk,it
`should be appreciated by those skilled in the art that other
`types of media which are readable by a computer, such as
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`10
`
`10
`
`
`
`US 7,503,072 B2
`
`6
`5
`an authorized third party. The activation process allows the
`magnetic cassettes, flash memory cards, digital video disks,
`customerto activate the software product for installation and
`Bernoulli cartridges, and the like, may also be used in the
`use on a specific computer.
`exemplary operating environment.
`FIG. 3 showssteps in a methodforactivating the software
`A numberof program modules maybestored in the drives
`product 36 for installation and use on the computer 20. The
`and RAM 25, including an operating system 35, application
`methodis described with continuing reference to FIG. 2. The
`program modules 36, such as Microsoft’ s “OFFICE 10”suite
`steps are performed in software by the software product on
`of program modules, and program data 38. A user may enter
`the customer computer, and by an activation unit 110 on the
`commands and information into the personal computer 20
`activation server. At step 150, the software product 36 obtains
`through a keyboard 40 and pointing device, such as a mouse
`its product ID 102. As an example, the product ID consists of
`42. Other input devices (not shown) may include a micro-
`a 5-digit RPC (registered product code) valueforthe software
`phone,joystick, gamepad, satellite dish, scanner, or the like.
`These and other input devices are often connected to the
`product, a3-digit site value indicating a place ofmanufacture,
`
`processing unit 21 throughaserial port interface 46 that is and a 7-digit serialized numberthat is incremented with each
`coupled to the system bus, but may be connected by other
`product.
`interfaces, such as a gameport or a universal serial bus (USB).
`The software product 36 generates a hardware ID (H/W
`A monitor 47or other type of display device is also connected
`ID) that identifies a set ofhardware components that make up
`to the system bus 23 via an interface, such as a video adapter
`the customer’s computer 20 (step 152). The hardware ID may
`48. In addition to the monitor, personal computers typically
`be a multi-digit value having at least one digit representing
`include other peripheral output devices (not shown), such as
`each of the corresponding system components. As an
`speakers or printers.
`example, the software product generates a 5-digit hardware
`The personal computer 20 may operate in a networked
`ID that includes a single digit for each of five system compo-
`nents: BIOS 26, VBIOS 60, RAM 25, hard disk drive 27, and
`environmentusing logical connectionsto one or more remote
`computers, such as a remote computer 49. The remote com-
`floppy disk drive 28. A digit for a given system component
`puter 49 may bea server, a router, a peer device or other
`can be derivedin different ways, such as performing a modulo
`common network node, and typically includes manyorall of
`operation on a chunk of the BIOS, or on the hard disk drive’s
`the elements described relative to the personal computer 20,
`serial number. Table 1 shows an example construction of a
`although only a memory storage device 50 has been illus-
`5-digit hardware ID, and how the digits are derived from the
`trated in FIG. 1. The logical connections depicted in FIG. 1
`corresponding component.
`include a local area network (LAN) 51 and a widearea net-
`work (WAN) 52. Such networking environments are com-
`monplace in offices, enterprise-wide computer networks,
`Intranets and the Internet.
`When used in a LAN networking environment, the per-
`sonal computer 20 is connected to the LAN 51 through a
`network interface 53. When used in a WAN networking envi-
`ronment,
`the personal computer 20 typically includes a
`modem 54 or other means for establishing communications
`over the WAN 52, suchasthe Internet. The modem 54, which
`maybeinternal or external, is connected to the system bus 23
`via theserial port interface 46. In a networked environment,
`program modules depictedrelative to the personal computer
`20, or portions thereof, may be stored in the remote memory
`storage device. It will be appreciated that the network con-
`nections shown are exemplary and other meansofestablish-
`ing a communications link between the computers may be
`used.
`With reference again to FIG. 2, suppose a customer pur-
`chases a software product for running on the computer 20. In
`this illustration, the software product is in the form of a
`shrink-wrap product 222 having a software program stored on
`a transportable computer-readable medium, such as a CD-
`ROMorfloppy diskette. In other implementations, the soft-
`ware product maybe delivered electronically over a network.
`The customerloads the software product onto the computer
`20 as a program 36 stored in system memory 22.
`During installation, the customer is prompted to enter a
`portion ofthe productID ofthe software product. The product
`ID (PID)in this caseis partially derived from the CD key 224
`printed onthe label ofthe shrink-wrap package. The customer
`enters the CD key 224, whichis associated with the program
`36. Additionally, another portion ofthe product IDis already
`included in the software program 36 andthe software product
`combinesthe portion with the CD key into a product ID that
`is uniqueto the specific installation.
`Aspart of the installation process, the customerregisters
`the software product with the activation authority. This
`authority might be, for example, the product manufacturer or
`
`The software product in this example concatenates the
`15-digit product ID with the 5-digit hardware ID, and sends
`the 20-digit value over the network 336 to the activation
`server 334 (step 154 in FIG. 3). This phase is preferably
`automatedin thatthe software product automatically initiates
`connection with the activation server 334 to register itself
`with the activation authority.
`Alternatively, the software product supports an activation
`pilot with a graphical user interface (UI) dialog windowask-
`ing the customerto call a service representative at the activa-
`tion authority. The UI windowlists the product ID and the
`hardware ID, and includesan entry boxto enterthe license file
`given bythe service representative over the phone.
`The activation server 334 has an activation unit 110 to
`assign a licensefile to the software product on the customer’s
`computer. The activation unit 110 computes the licensefile
`from the product ID and the hardwareID (step 156 in FIG.3).
`In the illustrated implementation, the activation unit 110
`employs a hashing algorithm 112 to compute a hash value of
`
`TABLE 1
`
`Method
`Perform modulus 8 onfirst 2K
`chunk of BIOS.
`Perform modulus 8 on 64-bit
`HDDserial number.
`Perform modulus 9 of total
`bytes of RAM.
`Perform modulus 9 on FDD
`configuration return value.
`Perform modulus 9 on Video
`BIOS.
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`11
`
`Digit Place Hardware Component
`1
`BIOS
`
`2
`
`3
`
`4
`5
`
`Hard Disk Drive
`
`RAM
`
`Floppy disk drive
`Video Card
`
`It is noted that other hardware components may be used.
`For instance, many computers are equipped with a network
`card with a unique 48-bit address. A digit for the hardware ID
`can be derived from this global network card address. More-
`over, more than, or fewer than, five system components may
`be used to derive the hardware ID.
`
`11
`
`
`
`US 7,503,072 B2
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`7
`the concatenated product ID and hardwareID. Theactivation
`server 334 also maintains a database 114 to store the product
`ID, hardware ID, andlicensefile (step 158 in FIG. 3). Pref-
`erably, these IDsare correlated in a table or other data record
`116.
`The activation server 334 returns the license file over the
`network 336 to the customer computer 20 (step 160 in FIG.
`3). In the manual case, the service representative tells the
`customer the license file over the phone and the customer
`enters the license file via the UI window.Thelicensefile 118
`
`8
`different, the upgraded computer is more like the original
`computer and the software product is permitted to operate.
`Conversely, if many or all components are different, the
`“upgraded” computer more closely resembles a new com-
`puter and the software product is prevented from operating on
`this new computer.
`One way the software product makes this determination is
`by trying different permutations ofthe hardware ID, changing
`at least one digit pertry while leaving other digits unchanged.
`Each modified hardware ID is concatenated with the product
`ID, and then hashed to producethe test ID. If this trial-and-
`is stored locally in the system memory 22 of the customer
`error process yields a match between the test and original
`computer 20, where it is accessible by the software program
`licensefiles, the software product is assured that only one or
`36 (step 162 in FIG.3). The program 36 is also equipped with
`afew components have been altered, and the software product
`the same hashing algorithm 112 as found in the activation unit
`110 at the activation server 334.
`is permitted to run.
`FIG. 5 shows steps in a method for running the software
`FIG. 4 showssteps in a method for running the software
`product 36 on the computer 20 after upgrade. The methodis
`product 36 on the computer 20. The methodis described with
`described with continuing reference to FIG. 2. The steps are
`continuing reference to FIG. 2. The steps are performed by
`performed by software code within the software product on
`software code within the software product on the customer
`the customer computer. At step 190, the software product
`computer. At step 170, the software product is started. On
`changesat least one digit in the hardware ID, while leaving
`each launch after installation, the software product obtains
`the other digits unchanged, to produce a modified hardware
`the product ID 102 (step 172) and generates the hardware ID
`ID. For example, the software ID might toggle one digit in the
`from the set of hardware components within the computer
`5-digit hardware ID, while maintaining the other four digits
`(step 174).
`the same.
`At step 176, the software product 36 computes its own test
`The software product concatenates the product ID and
`ID from the product ID and hardware ID using the hashing
`modified hardware ID (step 192) and computes a new test ID
`algorithm 112. This is the same hashing algorithm as
`using the hashing algorithm 112 (step 194). At step 196, the
`employed by the activation unit 110 when computing the
`software productretrieves the license file 118 from memory
`originallicensefile 118. The software product36 retrieves the
`22 and comparesit to the te